package Ġcom . ir fan ir aw ans uk ir man . movie . presentation . movies favorite Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . ir fan ir aw ans uk ir man . core . databinding . Toolbar Default Binding Ċ import Ġcom . ir fan ir aw ans uk ir man . core . ui . UIState Ċ import Ġcom . ir fan ir aw ans uk ir man . core . ui . UIState .* Ċ import Ġcom . ir fan ir aw ans uk ir man . core . util . extension . generate Vertical Adapter Ċ import Ġcom . ir fan ir aw ans uk ir man . core . util . extension . hide Progress Ċ import Ġcom . ir fan ir aw ans uk ir man . core . util . extension . show Progress Ċ import Ġcom . ir fan ir aw ans uk ir man . core . util . extension . subscribe Ċ import Ġcom . ir fan ir aw ans uk ir man . core . util . view model . ViewModel Factory Ċ import Ġcom . ir fan ir aw ans uk ir man . movie . data . mapper . Movies UI Ċ import Ġcom . ir fan ir aw ans uk ir man . movie . databinding . Movies Favorite Activity Binding Ċ import Ġcom . ir fan ir aw ans uk ir man . movie . databinding . Movies Item Binding Ċ import Ġcom . ir fan ir aw ans uk ir man . movie . di . Movie Component Provider Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġjavax . inject . Inject Ċ Ċ @ Experimental Cor outines Api Ċ class ĠMov ies Favorite Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Factory ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Movies Favorite VM > Ġ{ ĠviewModel Factory Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmovies Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġview Binding ?. rv Movies ?. generate Vertical Adapter < ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMov ies UI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMov ies Favorite Item Holder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMov ies Item Binding ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ>( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder Ġ= Ġ:: Movies Favorite Item Holder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Inflater Ġ= ĠMov ies Item Binding :: inflate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Fixed Size Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreverse Layout Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinder Ġ= Ġ{ Ġitem , Ġholder , Ġ_, Ġ_ Ġ-> Ġholder . bind Item ( item ) Ġ{} Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġview Binding : ĠMov ies Favorite Activity Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Injector () ĊĠĠĠĠĠĠĠ Ġinit View Binding () ĊĠĠĠĠĠĠĠ ĠsetContentView ( view Binding ?. root ) ĊĠĠĠĠĠĠĠ Ġinit Toolbar () ĊĠĠĠĠĠĠĠ Ġload VM () ĊĊĠĠĠĠĠĠĠ ĠgetAll Movies Favorite () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġview Binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ= Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Injector () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( application Ġas ĠMovie Component Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Movie Component () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Binding Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding Ġ= ĠMov ies Favorite Activity Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( get Toolbar View Binding ()?. toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Toolbar View Binding () Ġ= Ġview Binding ?. root ?. let Ġ{ ĠToolbar Default Binding . bind ( it ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload VM () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . movies . subscribe ( this , Ġ:: show Movies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetAll Movies Favorite () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . getAll Movies Favorite () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Movies ( state : ĠUI State < List < Movies UI >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoading Ġ-> Ġif Ġ( state . isLoading ) Ġshow Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Adapter ?. submit List ( state . output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġwith Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }