package Ġcom . ro que bu ar que . smart stocks . stocks . presentation . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . ro que bu ar que . smart stocks . stocks . R Ċ import Ġcom . ro que bu ar que . smart stocks . stocks . databinding . Activity Stock List Binding Ċ import Ġcom . ro que bu ar que . smart stocks . stocks . presentation . Stock List Event Ċ import Ġcom . ro que bu ar que . smart stocks . stocks . presentation . Stock List State Ċ import Ġcom . ro que bu ar que . smart stocks . stocks . presentation . Stock List ViewModel Ċ import Ġcom . ro que bu ar que . smart stocks . views . view Binding Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ Ċ @ Android EntryPoint Ċ class ĠStock List Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠStock List ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdis posable : ĠDis posable ĊĊĠĠĠ Ġprivate Ġval Ġview Binding Ġby Ġview Binding Ġ{ ĠActivity Stock List Binding . inflate ( it ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġadapter Ġby Ġlazy Ġ{ ĠStock ListAdapter () Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ stock _ list ) ĊĠĠĠĠĠĠĠ Ġbind Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Sto cks . item Animator Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Sto cks . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġc tn Message . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . dispatch ( Stock List Event . Fetch ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. state ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġrender State ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender State ( state : ĠStock List State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view Binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state . sync State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStock List State . Sync State . Content Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Flip per . display ed Child Ġ= ĠCONTENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( state . stocks ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStock List State . Sync State . Empty Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Flip per . display ed Child Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Message . text Ġ= ĠgetString ( R . string . empty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . setImage Resource ( R . drawable . ic _ empty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStock List State . Sync State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Flip per . display ed Child Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Message . text Ġ= ĠgetString ( R . string . try _ gain , Ġstate . sync State . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . setImage Resource ( R . drawable . ic _ server _ down ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStock List State . Sync State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Flip per . display ed Child Ġ= ĠLO ADING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCONTENT Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMESSAGE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLO ADING Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠStock List Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }