| فئة داخلية KittenStoreImpl ( |
| private val network: Network, |
| private val parser: Parser |
| ) : KittenStore, DisposableScope by DisposableScope() { |
| |
| override fun onNext(value: Intent) { |
| } |
| |
| override fun subscribe(observer: ObservableObserver<State>) { |
| } |
| |
| private fun reload(network: Network, parser: Parser): Observable<Effect> = |
| network |
| .load() |
| .flatMap(parser::parse) |
| .map(Effect::LoadingFinished) |
| .observeOn(mainScheduler) |
| .asObservable() |
| .defaultIfEmpty(Effect.LoadingFailed) |
| .startWithValue(Effect.LoadingStarted) |
| |
| private fun reduce(state: State, effect: Effect): State = |
| // Omitted code |
| |
| private sealed class Effect { |
| // Omitted code |
| } |
| |
| interface Network { |
| fun load(): Maybe<String> |
| } |
| |
| interface Parser { |
| fun parse(json: String): Maybe<List<String>> |
| } |
| } |