Skip to content

Instantly share code, notes, and snippets.

fun app(){
createScreen { component, navigator->
val presenter = component.loginPresenter()
loginScreen(presenter.viewState,
presenter.onSubmit,
presenter.onForgotPassword())
}
}
@DefineComponent(parent = ApplicationComponent::class)
internal interface UserComponent
@DefineComponent.Builder
internal interface UserComponentBuilder {
fun withUserId(@BindsInstance userId: Int): UserComponentBuilder
fun build(): UserComponent
}
@DefineComponent(parent = UserComponent::class)
MyMvrxViewModel<State, Rendering>(services:Services, userId:String, loadingVM: LoadingViewModel, dataVM:DataViewModel){
sealed class State{
object Loading():State
data class Data(value:String)
}
override fun render(context:RenderScope, state:State):{
interface Foo{
fun doStuff()
companion object
}
fun Foo.Companion.CreateFoo():Foo = RealFoo()
private class RealFoo : Foo{
interface Foo{
fun doStuff()
companion object
}
fun Foo.Companion.CreateFoo():Foo = RealFoo()
private class RealFoo : Foo{
Store<Article, Integer> store = StoreBuilder.<Integer, BufferedSource, Article>parsedWithKey()
.fetcher(articleId -> api.getArticles(articleId))
.persister(FileSystemPersister.create(FileSystemFactory.create(context.getFilesDir()), pathResolver))
.parser(GsonParserFactory.createSourceParser(gson, String.class))
.open();
class State{
}
val networkTrigger = Channel<Unit>(capacity = Channel.RENDEZVOUS)
val diskCommands = Channel<DiskCommand>(capacity = Channel.RENDEZVOUS)
launch {
// trigger first load
diskCommands.send(DiskCommand.ReadFirst)
}
val networkFlow = networkTrigger
.consumeAsFlow()
class Mario(pipes:List<Pipeline>){
}
interface Api {
@GET("r/{subredditName}/new/.json")
@RefershOnStale
@Persister
fun subRedditStore(@Path("subredditName") subredditName: String): RetroStore<RedditData>
}
fun getData() {