package Ġcore Ċ Ċ import Ġapi . Dispatcher Ċ import Ġapi . IR ed ucer Ċ import Ġapi . IS tore Ċ import Ġapi . IS tore Enh ancer Ċ import Ġrx . Emitter Ċ import Ġrx . Observable Ċ import Ġrx . functions . Func 1 Ċ Ċ class ĠStore < S , ĠA > Ġprivate Ġconstructor ( override Ġvar Ġstate : ĠS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġreducer : ĠI Reducer < S , ĠA >) Ġ: ĠI Store < S , ĠA > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġemitter : ĠFunc 1 < S , ĠVoid >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġdispatch : ĠDispatcher < A > Ġ= Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġreducer ( state , Ġaction ) ĊĠĠĠĠĠĠĠ Ġemitter ?. call ( state ) ĊĠĠĠĠĠĠĠ Ġaction ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġobservable : ĠObservable < S > Ġ= ĠObservable . create < S >({ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠ Ġthis . emitter Ġ= ĠFunc 1 Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext ( state ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĠEmit ter . Back pressure Mode . BUFFER ). share () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< S , ĠA > Ġcreate ( reducer : ĠI Reducer < S , ĠA >, ĠinitialState : ĠS , Ġvar arg Ġen h ancer : ĠI Store Enh ancer < S , ĠA >): ĠI Store < S , ĠA > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Store : ĠI Store < S , ĠA > Ġ= ĠStore ( initialState , Ġreducer ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! enh ancer . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġen h ancer . fold ( base Store ) Ġ{ Ġenhanced , Ġen h ancer Ġ-> Ġen h ancer ( en hanced ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbase Store ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }