package Ġcom . le unes media . artist h unt . posts ĊĊ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġcom . le unes media . artist h unt . MainActivity Ċ import Ġcom . le unes media . artist h unt . R Ċ import Ġcom . le unes media . artist h unt . domain . view model . Post ViewModel Ċ import Ġcom . le unes media . artist h unt . domain . view model . User ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ posts .* Ċ Ċ /** Ċ Ġ* ĠFragment Ġthat Ġcontains Ġlogic Ġto Ġdisplay Ġall ĠPosts Ċ Ġ*/ Ċ class ĠPosts Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser ViewModel : ĠUser ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpost ViewModel : ĠPost ViewModel ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġview Ġand Ġinitial ises Ġrequired Ġview models ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġuser ViewModel Ġ= Ġactivity ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this ). get ( User ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠException (" Invalid Ġactivity ") ĊĠĠĠĠĠĠĠ Ġpost ViewModel Ġ= Ġactivity ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this ). get ( Post ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠException (" Invalid Ġactivity ") ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ posts , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa ĠLinearLayoutManager Ġto Ġrv _ posts Ġand Ġapplies Ġan Ġadapter ĊĠĠĠĠ Ġ* ĠOb serves Ġui Message Ġfrom Ġpost ViewModel Ġand Ġupdates ĠUI Ġaccordingly ĊĠĠĠĠ Ġ* ĠOb serves Ġall Posts Ġfrom Ġthe ĠRepository Ġand Ġcalls Ġthe Ġpost ViewModel Ġto Ġretrieve Ġit Ġfrom ĠServer Ġif ĠEmpty ĊĠĠĠĠ Ġ* ĠCreates ĠRefresh Listener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġpost ViewModel . post Repo . all Posts . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNull OrEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ViewModel . retrieve All Posts () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpost ViewModel . ui Message . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it !!. data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" retrieve All Posts Suc ces " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" retrieve All Posts Error " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . data Ġ= Ġ" Loading ĠError . ĠCheck ĠInternet ĠConnection " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity Ġas ĠMainActivity , Ġit . data , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġview Manager Ġ= ĠLinearLayoutManager (( activity Ġas ĠMainActivity )) ĊĠĠĠĠĠĠĠ Ġval Ġview Adapter Ġ= ĠPost Adapter ( this , Ġpost ViewModel , Ġuser ViewModel ) ĊĠĠĠĠĠĠĠ Ġrv _ posts . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġview Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġview Adapter Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( RV _ Post Decorator ( 5 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpost Refresh er . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ViewModel . retrieve All Posts () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Refresh er . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ