Skip to content

Instantly share code, notes, and snippets.

View elsennov's full-sized avatar

Elsen Novraditya elsennov

  • Jakarta, Indonesia
View GitHub Profile
@elsennov
elsennov / coroutine_example
Created July 25, 2017 02:50
Coroutine async UI
private fun applyHashtagSpanForResiNumber(fullText: String,
messageEditorSpannable: Spannable) {
launch(UI) {
var indexAsync = async(CommonPool, CoroutineStart.LAZY) {
fullText.indexOf(RESI_NUMBER, 0)
}
while (indexAsync.await() != -1) {
val hashtagSpanAsync = async(CommonPool, CoroutineStart.LAZY) {
CharacterStyle.wrap(hashtagForegroundColorSpan)
}
@elsennov
elsennov / hotline_init
Created July 22, 2017 04:19
Hotline Initialization
fun initHotline(applicationContext: Context) {
initHotlineBaseConfig(applicationContext)
initHotlineNotification(applicationContext)
initHotlineUser(applicationContext)
}
private fun initHotlineBaseConfig(applicationContext: Context) {
val hotlineConfig = HotlineConfig(BuildConfig.HOTLINE_APP_ID, BuildConfig.HOTLINE_APP_KEY)
Hotline.getInstance(applicationContext).init(hotlineConfig)
}
package io.prismapp.mobile.chat.base.dbflow.typeconverter
import com.raizlabs.android.dbflow.converter.TypeConverter
import io.prismapp.mobile.base.PrismApplication
import io.prismapp.mobile.chat.base.model.BrokerMetadata
/**
* Created by elsennovraditya on 8/24/16.
*/
class BrokerMetadataConverter : TypeConverter<String, BrokerMetadata>() {
package io.prismapp.mobile.chat.base.dbflow.typeconverter
import com.raizlabs.android.dbflow.converter.TypeConverter
import io.prismapp.mobile.base.PrismApplication
import io.prismapp.mobile.chat.base.model.BrokerMetadata
/**
* Created by elsennovraditya on 8/24/16.
*/
class BrokerMetadataConverter : TypeConverter<String, BrokerMetadata>() {
@elsennov
elsennov / Logout.java
Last active December 9, 2016 07:40
Stream concept using RxNavi and RxJava
private void initLogout() {
RxNavi.observe(naviComponent, Event.VIEW_CREATED)
.filter(viewCreated -> accountPresenter.isLoggedIn(getContext()))
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(viewCreated -> viewCreated.view()
.findViewById(R.id.account_divider_logout).setVisibility(View.VISIBLE))
.map(viewCreated -> {
View logoutButton = viewCreated.view().findViewById(R.id.account_logout);
logoutButton.setVisibility(View.VISIBLE);
return logoutButton;
package com.novraditya.elsen.espressotestrecorder;
import android.support.test.espresso.ViewInteraction;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.LargeTest;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
package com.novraditya.elsen.tablayoutexample;
import android.content.Context;
import android.graphics.Point;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
/**
* Created by elsennovraditya on 3/20/16.
package com.novraditya.elsen.tablayoutexample;
import android.content.Context;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;
import java.lang.reflect.Field;
/**
* Created by elsennovraditya on 3/20/16.
@Override
public void onBackPressed() {
if (isTaskRoot()) {
startHomeActivity();
} else {
super.onBackPressed();
}
}
private void startHomeActivity() {
<activity
android:name=".ProductDetailActivity"
android:label="Product Detail"
android:screenOrientation="portrait"
android:theme="@style/ProductDetailTheme">
<intent-filter>
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />