package Ġcom . deep finity . m vi . view model Ċ Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . deep finity . m vi . base .* Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . orbit m vi . orbit . syntax . simple . intent Ċ import Ġorg . orbit m vi . orbit . syntax . simple . post Side Effect Ċ import Ġorg . orbit m vi . orbit . syntax . simple . reduce Ċ Ċ abstract Ġclass ĠDeep Stream ViewModel < STATE Ġ: ĠState , ĠINTENT Ġ: ĠIntent , ĠE FF ECT Ġ: ĠEffect , ĠS IDE _ EFFECT Ġ: ĠSide Effect >( ĊĠĠĠ Ġreducer : ĠRed ucer < STATE , ĠE FF ECT , ĠS IDE _ EFFECT >, ĊĠĠĠ Ġdispatcher : ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO Ċ ) Ġ: ĠBase ViewModel < STATE , ĠE FF ECT , ĠS IDE _ EFFECT >( reducer , Ġdispatcher ) Ġ{ ĊĊĠĠĠ Ġprotected Ġfun Ġinitial Intent (): ĠINTENT ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġabstract Ġsuspend Ġfun Ġhandle Intent ( intent : ĠINTENT ): ĠFlow < EFFECT > ĊĊĠĠĠ Ġfun Ġdispatch Initial Intent () Ġ= Ġinitial Intent ()?. also Ġ{ Ġdispatch ( it ) Ġ} ĊĊĠĠĠ Ġfun Ġdispatch ( ĊĠĠĠĠĠĠĠ Ġintent : ĠINTENT ĊĠĠĠ Ġ) Ġ= Ġintent Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Intent ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġeffect Ġ-> Ġreducer . reduce ( this @ Deep Stream ViewModel . state , Ġeffect ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flow On ( dispatcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch Ġ{ Ġerr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporter ( err ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . side Effect Ġ!= Ġnull ) Ġthis @ intent . post Side Effect ( result . side Effect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . state ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( err : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporter ( err ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }