package Ġcom . tan asi . m ang aj ap . fragments . discover Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear Snap Helper Ċ import Ġcom . tan asi . json api . Json ApiResponse Ċ import Ġcom . tan asi . m ang aj ap . R Ċ import Ġcom . tan asi . m ang aj ap . adapters . M anga J ap Adapter Ċ import Ġcom . tan asi . m ang aj ap . databinding . Fragment Discover Binding Ċ import Ġcom . tan asi . m ang aj ap . models . Ad Ċ import Ġcom . tan asi . m ang aj ap . models . An ime Ċ import Ġcom . tan asi . m ang aj ap . models . M anga Ċ import Ġcom . tan asi . m ang aj ap . ui . Spacing Item Decoration Ċ import Ġcom . tan asi . m ang aj ap . utils . extensions . add Or Last Ċ Ċ class ĠDis cover Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Discover Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠFragment Discover Binding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġval ĠviewModel : ĠDis cover ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġval Ġpeople List : ĠMutable List < M anga J ap Adapter . Item > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġval Ġm anga Recent List : ĠMutable List < M anga > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġval Ġan ime Recent List : ĠMutable List < An ime > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġprivate Ġval Ġpeople Adapter : ĠM anga J ap Adapter Ġ= ĠM anga J ap Adapter ( people List ) ĊĠĠĠ Ġprivate Ġval Ġm anga Recent Adapter : ĠM anga J ap Adapter Ġ= ĠM anga J ap Adapter ( manga Recent List ) ĊĠĠĠ Ġprivate Ġval Ġan ime Recent Adapter : ĠM anga J ap Adapter Ġ= ĠM anga J ap Adapter ( anime Recent List ) ĊĊĠĠĠ Ġprivate Ġval Ġsnap Helper : ĠLinear Snap Helper Ġ= ĠLinear Snap Helper () ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Discover Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠviewModel . get Discover () ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding . ll Search . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDis cover Fragment Directions . action Discover To Search () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . state . observe ( view Lifecycle Owner ) Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDis cover ViewModel . State . Loading Ġ-> Ġbinding . isLoading . root . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDis cover ViewModel . State . Success Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpeople List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( state . people List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Or Last ( 1 , ĠAd (). also Ġ{ Ġit . type Layout Ġ= ĠM anga J ap Adapter . Type . AD _ DIS COVER Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm anga Recent List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( state . manga Recent List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Recent List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( state . anime Recent List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Discover () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isLoading . root . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDis cover ViewModel . State . Failed Loading Ġ-> Ġwhen Ġ( state . error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . ServerError Ġ-> Ġstate . error . body . errors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġit . title , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . Network Error Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . error . error . message Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . Unknown Error Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . error . error . message Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDis cover ViewModel . State . Updating Ġ-> Ġbinding . is Updating . root . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDis cover ViewModel . State . Success Updating Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm anga Recent Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Recent Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . is Updating . root . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDis cover ViewModel . State . Failed Updating Ġ-> Ġwhen Ġ( state . error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . ServerError Ġ-> Ġstate . error . body . errors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġit . title , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . Network Error Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . error . error . message Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . Unknown Error Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . error . error . message Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Discover () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv Discover People . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġpeople Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsnap Helper . attach To RecyclerView ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Spacing Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Ġ= Ġ( resources . get Dimension ( R . dim en . discover _ spacing ) Ġ* Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . rv Discover Recent M anga . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm anga Recent Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Spacing Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Ġ= Ġ( resources . get Dimension ( R . dim en . discover _ spacing ) Ġ* Ġ 0 . 4 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . rv Discover Recent An ime . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġan ime Recent Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Spacing Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspacing Ġ= Ġ( resources . get Dimension ( R . dim en . discover _ spacing ) Ġ* Ġ 0 . 4 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }