Skip to content

Instantly share code, notes, and snippets.

View gtomek's full-sized avatar

Tomek Giszczak gtomek

  • Zurich, CH
View GitHub Profile
inline fun <reified T: Any> Fragment.extra(key: String, default: T? = null) = lazy {
val value = arguments?.get(key)
if (value is T) value else default
}
inline fun <reified T: Any> Fragment.extraNotNull(key: String, default: T? = null) = lazy {
val value = arguments?.get(key)
requireNotNull(if (value is T) value else default) { key }
}
inline fun <reified T: Any> Activity.extra(key: String, default: T? = null) = lazy {
val value = intent?.extras?.get(key)
if (value is T) value else default
}
inline fun <reified T: Any> Activity.extraNotNull(key: String, default: T? = null) = lazy {
val value = intent?.extras?.get(key)
requireNotNull(if (value is T) value else default) { key }
}
@gtomek
gtomek / Interceptor.java
Created November 27, 2018 16:18 — forked from alex-shpak/Interceptor.java
Refreshing OAuth token with okhttp interceptors. All requests will wait until token refresh finished, and then will continue with the new token.
private class HttpInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
//Build new request
Request.Builder builder = request.newBuilder();
builder.header("Accept", "application/json"); //if necessary, say to consume JSON
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class JavaMD5 {
public static void main(String[] args) {
String passwordToHash = "MyPassword123";
String generatedPassword = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
@Test
public void switchMap() throws Exception {
final List<String> items = Lists.newArrayList("a", "b", "c", "d", "e", "f");
final TestScheduler scheduler = new TestScheduler();
Observable.from(items)
.concatMap( s -> {
final int delay = new Random().nextInt(10);
return Observable.just(s + "x")
@Test
public void switchMap() throws Exception {
final List<String> items = Lists.newArrayList("a", "b", "c", "d", "e", "f");
final TestScheduler scheduler = new TestScheduler();
Observable.from(items)
.switchMap( s -> {
final int delay = new Random().nextInt(10);
return Observable.just(s + "x")
@gtomek
gtomek / logging.kt
Created January 2, 2018 10:52 — forked from tomaszpolanski/logging.kt
RxLogging
@file:Suppress("NOTHING_TO_INLINE")
import android.util.Log
import io.reactivex.*
inline fun <reified T> printEvent(tag: String, success: T?, error: Throwable?) =
when {
success == null && error == null -> Log.d(tag, "Complete") /* Only with Maybe */
success != null -> Log.d(tag, "Success $success")
error != null -> Log.d(tag, "Error $error")
@gtomek
gtomek / CrashReportingTree.java
Last active February 4, 2020 14:26
Timber.Tree implementation for Crashlytics
/**
* Timber log tree for production.
*/
public class CrashReportingTree extends Timber.Tree{
@Override protected void log(int priority, String tag, String message, Throwable throwable) {
switch (priority) {
case Log.VERBOSE:
case Log.DEBUG:
case Log.INFO:
@gtomek
gtomek / StringSharedPreference.java
Created March 28, 2017 14:31
String shared preference for android
import android.content.SharedPreferences;
/**
* Stores {@link String} value in {@link SharedPreferences}.
*/
public class StringPreference {
private final SharedPreferences mPreferences;
private final String mKey;
private final String mDefaultValue;