package Ġcom . simple k jl . t dd kt . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . simple k jl . t dd kt . R Ċ import Ġcom . simple k jl . t dd kt . adapters . Comment Adapter Ċ import Ġcom . simple k jl . t dd kt . data . models . Comment Ċ import Ġcom . simple k jl . t dd kt . ui .* Ċ import Ġcom . simple k jl . t dd kt . view Models . Main ViewModel Ċ import Ġkotlinx . android . synt hetic . main . generic _ fragment .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠComments Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġpost Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġis Two Panel Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMain ViewModel Ġby ĠviewModel () ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= Ġ" Comments " ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Id Ġ= Ġit . getInt (" post Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Two Panel Ġ= Ġit . getBoolean (" is Two Panel ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . generic _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġshow Loader () Ċ // ĠĠĠĠĠĠĠ ĠviewModel . init () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Two Panel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender ( Two Panel View ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View With New Id ( post Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate View With New Id ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . get Comments By Post Id ( id ). observe ( view Lifecycle Owner , ĠObserver < Ui State > Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender ( state ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( state : ĠUi State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTwo Panel View Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage (" Click Ġany Ġpost Ġto Ġsee Ġmore Ġresults ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Id Observer . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View With New Id ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loader () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Items () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġstate . data Ġas ĠList < Comment > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Adapter ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Message Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage ( state . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Adapter ( comments : ĠList < Comment >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgrid LayoutManager Ġ= ĠGrid LayoutManager ( activity , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġrv _ generic . layout Manager Ġ= Ġgrid LayoutManager ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠComment Adapter ( comments ) ĊĠĠĠĠĠĠĠ Ġrv _ generic . adapter Ġ= Ġadapter ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ViewState Restore d ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on ViewState Restore d ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsuper . update Activity Title ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost Id Observer : ĠMutable LiveData < Int > Ġ= ĠMutable LiveData () ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( two Panel : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComments Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . put Boolean (" is Two Panel ", Ġtwo Panel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ ĠviewModel . clear () ĊĠĠĠ Ġ} Ċ } Ċ