package Ġcom . ms a . on ew ay . sample . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . ms a . on ew ay . core .* Ċ import Ġcom . ms a . on ew ay . providers . Repository Provider Ċ import Ġcom . ms a . on ew ay . sample . domain . Home Store Ċ import Ġcom . ms a . on ew ay . sample . domain . side effects . Get Todo List Coroutine Side Effect Ċ import Ġcom . ms a . on ew ay . sample . domain . side effects . Get Todo List Rx Side Effect Ċ import Ġcom . ms a . on ew ay . sample . entities . Home Screen State Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAb hi ĠM uk the es war ar Ġon Ġ 2 0 - Aug ust - 2 0 2 0 Ċ Ġ*/ Ċ Ċ class ĠHome ViewModel ( ĊĠĠĠ Ġstore : ĠHome Store , ĊĠĠĠ Ġmain Thread : ĠThread Executor , ĊĠĠĠ Ġcoroutine Context : ĠCor outine Context , ĊĠĠĠ Ġcomposite Disposable : ĠComposite Disposable Ċ ) Ġ: ĠBase One Way ViewModel < Home Screen State >( store , Ġmain Thread , Ġcoroutine Context , Ġcomposite Disposable ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Home ViewModel ( context : ĠContext ): ĠHome ViewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtodo Repository Ġ= ĠRepository Provider . todo Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Repository Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository Provider . getResource Repository ( context . application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstore Ġ= ĠHome Store () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthread ExecutorService Ġ= ĠSide Effect Thread Service () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Thread Ġ= ĠMain Thread ( Weak Reference ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoroutine Context Ġ= ĠCor outine Scope Provider . getOne Way ViewModel Coroutine Context () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoroutine Dispatcher Provider Ġ= ĠCor outine Dispatcher Provider ( coroutine Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscheduler Provider Ġ= ĠScheduler Provider ( Schedulers . from ( Executor Services . side Effect )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Todo List Rx Side Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtodo Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread ExecutorService , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Todo List Coroutine Side Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtodo Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread ExecutorService , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Dispatcher Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHome ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Thread , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Dispatcher Provider . coroutine Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }