Skip to content

Instantly share code, notes, and snippets.

@dimsuz
dimsuz / SketchSystems.spec
Created December 29, 2018 22:47
TBI Auth Flow
TBI Auth Flow
Splash
timeout -> FirstScreen
back_pressed -> Exit
FirstScreen
is_first_launch -> Onboarding
is_logged_in -> PinCodeValidation
is_logged_out -> Authentication
@dimsuz
dimsuz / SketchSystems.spec
Created December 29, 2018 22:37
TBI Auth Flow
TBI Auth Flow
Splash screen
timeout -> Onboarding
Onboarding
@dimsuz
dimsuz / MyFragmentOrActivity.kt
Last active March 18, 2018 16:30
Example of generated dispatcher usage
class MyFragmentOrActivity : BaseActivityOrFragment, ViewStateRenderer {
private val renderDispatcher = ViewStateDiffDispatcher.Builder()
.target(this) // <-- a class wich implements ViewStateRenderer and will receive render calls
.build()
private var previousViewState: ViewState? = null
fun render(viewState: ViewState) {
renderDispatcher.dispatch(viewState, previousViewState)
@dimsuz
dimsuz / ViewStateDispatcher.kt
Last active March 18, 2018 16:30
Example of generated ViewStateDispatcher
class ViewStateRendererDispatcher(private val receiver: ViewStateRenderer) {
fun dispatch(viewState: ViewState, previousViewState: ViewState?) {
if (viewState.users != previousViewState?.users) {
receiver.renderUsers(viewState.users)
}
if (viewState.categories != previousViewState?.categories
|| viewState.users != previuosViewState?.users) {
receiver.renderCategories(viewState.categories, viewState.users)
}
if (viewState.showProgressBar != previousViewState?.showProgressBar
package com.dimsuz.diffdispatcher.sample;
import java.lang.Override;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public final class UserInfoViewStateDiffDispatcher_Generated implements UserInfoViewStateDiffDispatcher {
private final UserInfoRenderer receiver;
public UserInfoViewStateDiffDispatcher_Generated(UserInfoRenderer receiver) {
@dimsuz
dimsuz / test_layout.xml
Created February 9, 2018 14:18
ConstraintLayout-beta5 bug
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="#f2f2f2"
android:layout_height="wrap_content">
<!-- notice margin top + bottom here -->
<ImageView
@dimsuz
dimsuz / ObservableLceFilterDelay.kt
Last active November 6, 2019 18:08
RxJava2 operator which adjusts items of an LCE (loading-content-error) stream so that L (loading) and C/E (content/error) items are not emitted close to each other. This is a reactive state alternative to Android's ContentLoadingProgressBar: https://developer.android.com/reference/android/support/v4/widget/ContentLoadingProgressBar.html
package com.dimsuz.lcefilterdelay
import io.reactivex.Observable
import io.reactivex.ObservableSource
import io.reactivex.Observer
import io.reactivex.Scheduler
import io.reactivex.disposables.Disposable
import io.reactivex.exceptions.Exceptions
import io.reactivex.internal.disposables.DisposableHelper
import io.reactivex.internal.fuseable.SimpleQueue
@dimsuz
dimsuz / RenameIds.hs
Created January 10, 2018 22:14
Refactoring script to port to kotlin view extensions
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Turtle
import Prelude hiding (FilePath)
import qualified Data.Text as T
import qualified Control.Foldl as Fold
import Data.Maybe
import Control.Monad (filterM)
@dimsuz
dimsuz / image.svg
Created July 27, 2017 11:42
image.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@dimsuz
dimsuz / Optional.kt
Created May 15, 2017 10:04
Optional in Kotlin
sealed class Optional<out T> {
data class Just<out T>(val element: T): Optional<T>()
object None: Optional<Nothing>()
}