package Ġcom . ab oolean . movies . ui . popular Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . ab oolean . movies . R Ċ import Ġcom . ab oolean . movies . base . Base Fragment Ċ import Ġcom . ab oolean . movies . ui . model . Favorite Movies ViewState Ċ import Ġcom . ab oolean . movies . ui . model . Pop ular Movies ViewState Ċ import Ġcom . ab oolean . movies . utils . extensions . g one Ċ import Ġcom . ab oolean . movies . utils . extensions . sn ack Ċ import Ġcom . ab oolean . movies . utils . extensions . visible Ċ import Ġcom . ab oolean . movies . utils . recyclerview . Infinite Scroll Provider Ċ import Ġcom . ab oolean . movies . utils . recyclerview . Spaces Item Decoration Ċ import Ġkotlinx . android . synt hetic . main . fragment _ home _ movies .* Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ class ĠPop ular Movies Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠPop ular Movies ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout View (): ĠInt Ġ= ĠR . layout . fragment _ home _ movies ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Adapter Manager () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġattach Observer s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĠĠĠĠĠĠĠ Ġval Ġis Land scape Ġ= Ġnew Config . orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ĊĠĠĠĠĠĠĠ Ġrv Pop ular Movies ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies LayoutManager . span Count Ġ= Ġget Columns By Orientation ( is Land scape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Pop ular Movies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopular Movies . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Adapter . add New Movies ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopular ViewState . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Pop ular ViewState ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Movies ViewState . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Favorite ViewState ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Favorite ViewState ( view State : ĠF avorite Movies ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF avorite Movies ViewState . On Success Add Favorite Ġ-> Ġsn ack ( R . string . message _ success _ add _ favorites ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsn ack ( R . string . message _ success _ remove _ favorites ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Pop ular ViewState ( view State : ĠPop ular Movies ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPop ular Movies ViewState . On Success Fetch Ġ-> Ġloading Animation . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPop ular Movies ViewState . On Loading Ġ-> Ġloading Animation . visible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPop ular Movies ViewState . On Max Pages Reached Ġ-> Ġsn ack ( R . string . message _ max _ pages _ re ached ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPop ular Movies ViewState . OnError Ġ-> Ġsn ack ( R . string . message _ error _ fetch ing ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Adapter Manager () Ġ{ ĊĠĠĠĠĠĠĠ Ġrv Pop ular Movies ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġmovies LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Spaces Item Decoration ( SPACE _ ITEM _ DE COR ATION )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġmovies Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Scroll Listener () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle ItemClickListener () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle ItemClickListener () Ġ{ ĊĠĠĠĠĠĠĠ Ġmovies Adapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ItemClickListener Ġ{ Ġmovie Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġ! is Favorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Favorite Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Favorite ( id , ĠnewValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠ ĠIn finite Scroll Provider (). attach ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Pop ular Movies , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠIn finite Scroll Provider . OnLoad More Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . fetch Pop ular Movies () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }