package Ġcom . ang git 9 7 . hack er news . ui . top stories list Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . ang git 9 7 . hack er news . R Ċ import Ġcom . ang git 9 7 . hack er news . base . Base Activity Ċ import Ġcom . ang git 9 7 . hack er news . data . Top Story Detail Ċ import Ġcom . ang git 9 7 . hack er news . ui . top story detail . Top Story Detail Activity Ċ import Ġcom . ang git 9 7 . hack er news . utils . ext . set G one Ċ import Ġcom . ang git 9 7 . hack er news . utils . ext . setVisible Ċ import Ġcom . ang git 9 7 . hack er news . utils . state . Loader State Ċ import Ġkotlinx . android . synt hetic . main . activity _ top _ stories _ list .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠTop St ories List Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠTop St ories List ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠTop St ories ListAdapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ top _ stories _ list ) ĊĠĠĠĠĠĠĠ Ġinit ViewModel () ĊĠĠĠĠĠĠĠ Ġinit RecyclerView () ĊĠĠĠĠĠĠĠ Ġobserve ViewModel () ĊĠĠĠĠĠĠĠ Ġfetch Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠTop St ories ListAdapter () ĊĠĠĠĠĠĠĠ Ġadapter . set Activity ( this ) ĊĠĠĠĠĠĠĠ Ġrv Top St ories . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġrv Top St ories . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . get Top St ories () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . ids . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Ids Response ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . state . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Loading State ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . items . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Story Detail Response ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Story Detail Response ( data : ĠTop Story Detail ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . addItem ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Loading State ( loading : ĠLoader State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( loading Ġis ĠLoader State . Show Loading ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar Top . setVisible () ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar Top . set G one () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Ids Response ( data : ĠList < Int >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtop 2 0 Story Ġ= Ġdata . take ( 5 0 ) ĊĊĠĠĠĠĠĠĠ Ġtop 2 0 Story . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get Top Story Detail ( it . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠTop Story Detail Activity . REQUEST _ CODE ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata ?. getString Extra ( Top Story Detail Activity . RESULT _ DATA _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ?. let Ġ{ Ġtitle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv F avour ite Story Title . setVisible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv F avour ite Story Title . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġprivate Ġfun Ġinit ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory )[ Top St ories List ViewModel :: class . java ] ĊĠĠĠ Ġ} Ċ } Ċ