| kelas internal KittenStoreImpl ( |
| jaringan val pribadi : Jaringan , |
| parser val pribadi : Parser |
| ) : KittenStore , DisposableScope oleh DisposableScope () { |
| |
| private val helper = StoreHelper(State(), ::handleIntent, ::reduce).scope() |
| |
| override fun onNext(value: Intent) { |
| helper.onIntent(value) |
| } |
| |
| override fun subscribe(observer: ObservableObserver<State>) { |
| helper.subscribe(observer) |
| } |
| |
| private fun handleIntent(state: State, intent: Intent): Observable<Effect> = |
| when (intent) { |
| is Intent.Reload -> reload(network, parser) |
| } |
| |
| private fun reload(network: Network, parser: Parser): Observable<Effect> = |
| // Omitted code |
| |
| private fun reduce(state: State, effect: Effect): State = |
| // Omitted code |
| |
| private sealed class Effect { |
| // Omitted code |
| } |
| |
| interface Network { |
| fun load () : Mungkin < String > |
| } |
| |
| Parser antarmuka { |
| fun parse ( json : String ) : Mungkin < List < String >> |
| } |
| } |