package Ġcom . ct ech . eat y . ui . not i . view ĊĊ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . ct ech . eat y . R Ċ import Ġcom . ct ech . eat y . base . Base Redux Fragment Ċ import Ġcom . ct ech . eat y . base . redux . Store Ċ import Ġcom . ct ech . eat y . di . Injectable Ċ import Ġcom . ct ech . eat y . entity . Notification Ċ import Ġcom . ct ech . eat y . tracking . Firebase Track Manager Ċ import Ġcom . ct ech . eat y . ui . not i . action . Notification Action Ċ import Ġcom . ct ech . eat y . ui . not i . state . Notification State Ċ import Ġcom . ct ech . eat y . ui . not i . view model . Notification ViewModel Ċ import Ġcom . ct ech . eat y . util . glide . G lide Image Loader Ċ import Ġkotlinx . android . synt hetic . main . fragment _ notifications .* Ċ import Ġvn . t iki . no adapter 2 . Diff Callback Ċ import Ġvn . t iki . no adapter 2 . Only Adapter Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠNotification Fragment Ġ: ĠBase Redux Fragment < Notification State >(), ĠInjectable Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFragment Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠNotification Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġstore : ĠStore < Notification State > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠNotification ViewModel ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġimage Loader : ĠG lide Image Loader ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġtrack Manager : ĠFirebase Track Manager ĊĊĠĠĠ Ġprivate Ġval Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Callback Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠAny , Ġnew Item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Item Ġis ĠNotification Ġ&& Ġnew Item Ġis ĠNotification ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠAny , Ġnew Item : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġadapter : ĠOnly Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠOnly Adapter . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. diff Callback ( diff Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. view Holder Factory Ġ{ Ġview Group , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification ViewHolder . create ( view Group , Ġimage Loader , Ġtrack Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstore (): ĠStore < Notification State > Ġ= Ġstore ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ notifications , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġsetup ViewModel () ĊĠĠĠĠĠĠĠ Ġsetup Error View () ĊĠĠĠĠĠĠĠ Ġstore . dispatch ( Notification Action . LOAD ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Error View () Ġ{ ĊĠĠĠĠĠĠĠ Ġv Error . setOn Retry Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore . dispatch ( Notification Action . LOAD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Content ( list : ĠList < Notification >) Ġ{ ĊĠĠĠĠĠĠĠ Ġv Error . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġv Empty . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġadapter . set Items ( list ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġrender Load Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġv Error . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġv Empty . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġv Error . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġv Empty . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġv Error . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġv Empty . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . loading (). subscribe Ġ{ Ġrender Loading () Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . load Error (). subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Load Error () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . empty (). subscribe Ġ{ Ġrender Empty () Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . content (). subscribe Ġ{ Ġrender Content ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġrv Notifications . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġrv Notifications . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġrv Notifications . addItem Decoration ( Divider Item Decoration ( context , ĠLinearLayoutManager . VERTICAL )) ĊĠĠĠ Ġ} Ċ Ċ }