| рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЧ KittenStoreImpl ( |
| рдирд┐рдЬреА рд╡реИрд▓ рдиреЗрдЯрд╡рд░реНрдХ : рдиреЗрдЯрд╡рд░реНрдХ , |
| рдирд┐рдЬреА рд╡рд╛рд▓ рдкрд╛рд░реНрд╕рд░ : рдкрд╛рд░реНрд╕рд░ |
| ) : рдмрд┐рд▓реНрд▓реА рдХрд╛ рдмрдЪреНрдЪрд╛ , рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓рд╕реНрдХреЛрдк рджреНрд╡рд╛рд░рд╛ рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓рд╕реНрдХреЛрдк () { |
| |
| 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 { |
| рдордЬрд╝рд╛ рд▓реЛрдб () : рд╣реЛ рд╕рдХрддрд╛ рд╣реИ < рд╕реНрдЯреНрд░рд┐рдВрдЧ > |
| } |
| |
| рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд╛рд░реНрд╕рд░ { |
| рдлрди рдкрд╛рд░реНрд╕ ( json : рд╕реНрдЯреНрд░рд┐рдВрдЧ ) : рд╣реЛ рд╕рдХрддрд╛ рд╣реИ < рд╕реВрдЪреА < рд╕реНрдЯреНрд░рд┐рдВрдЧ >> |
| } |
| } |