package Ġcom . github . ll max im ll . m yst ory is my world . presentation . notifications . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . github . ll max im ll . m yst ory is my world . databinding . Fragment Notifications Binding Ċ import Ġcom . github . ll max im ll . m yst ory is my world . domain . models . notification . Notification Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . main . view model . Shared ViewModel Impl Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . notifications . view model . Notifications ViewModel Impl Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . states . Fetch State Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġtim ber . log . Tim ber Ċ Ċ @ Android EntryPoint Ċ class ĠNotifications Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Notifications Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠNotifications ViewModel Impl Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġshared ViewModel Impl : ĠShared ViewModel Impl Ġby Ġactivity ViewModels () ĊĠĠĠ Ġprivate Ġval Ġadapter Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNotifications Adapter () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġtimer : ĠCount Down Timer ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Notifications Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup Listeners () ĊĠĠĠĠĠĠĠ Ġsetup List () ĊĠĠĠĠĠĠĠ Ġsetup Observer s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup List () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Observer s () Ġ{ ĊĠĠĠĠĠĠĠ Ġshared ViewModel Impl . get Notifications State . observe ( view Lifecycle Owner , Ġ:: handle Get Notifications ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Get Notifications ( state : ĠFetch State < List < Notification >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFetch State . Initial Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFetch State . Loading Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch State . Error Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFetch State . NotFound Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch State . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" :: handle Get Notifications Ġdata :${ state . data }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Notifications List After Time ( state . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( state . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Notifications List After Time ( notifications List : ĠList < Notification >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer Ġ= Ġobject Ġ: ĠCount Down Timer ( 5 0 0 0 , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ Ġ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĠviewModel . update Notifications List ( notifications List ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtimer !!. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( timer Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer !!. cancel () ĊĠĠĠ Ġ} Ċ } Ċ