package Ġpl . k amil sz ust ak . read . ui . main . collection . log Ċ Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . mike pen z . fast adapter . Fast Adapter Ċ import Ġcom . mike pen z . fast adapter . adapters . Model Adapter Ċ import Ġpl . k amil sz ust ak . model . common . id . LogEntry Id Ċ import Ġpl . k amil sz ust ak . read . model . domain . LogEntry Ċ import Ġpl . k amil sz ust ak . read . ui . base . binding . view Binding Ċ import Ġpl . k amil sz ust ak . read . ui . base . util . navigate Ċ import Ġpl . k amil sz ust ak . read . ui . base . util . update Models Ċ import Ġpl . k amil sz ust ak . read . ui . base . util . view Models Ċ import Ġpl . k amil sz ust ak . read . ui . base . view . fragment . Base Fragment Ċ import Ġpl . k amil sz ust ak . read . ui . main . R Ċ import Ġpl . k amil sz ust ak . read . ui . main . databinding . Fragment Reading Log Binding Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠReading Log Fragment Ġ@ Inject Ġconstructor ( ĊĠĠĠ ĠviewModel Factory : ĠViewModel Provider . Factory , Ċ ) Ġ: ĠBase Fragment < Fragment Reading Log Binding , ĠReading Log ViewModel >( R . layout . fragment _ reading _ log ) Ġ{ ĊĊĠĠĠ Ġoverride Ġval ĠviewModel : ĠReading Log ViewModel Ġby Ġview Models ( viewModel Factory ) ĊĠĠĠ Ġoverride Ġval Ġbinding : ĠFragment Reading Log Binding Ġby Ġview Binding ( Fragment Reading Log Binding :: bind ) ĊĠĠĠ Ġprivate Ġval Ġnavigator : ĠNavigator Ġ= ĠNavigator () ĊĠĠĠ Ġprivate Ġval Ġmodel Adapter : ĠModel Adapter < LogEntry , ĠLog Entry Item > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠModel Adapter Ġ{ ĠLog Entry Item ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinitialize RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfast Adapter Ġ= ĠFast Adapter . with ( model Adapter ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener Ġ= Ġ{ Ġview , Ġadapter , Ġitem , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠReading Log Event . On LogEntry Clicked ( item . model . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . dispatch ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . reading Log RecyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġfast Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . action . observe ( view Lifecycle Owner ) Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠReading Log Action . Navigate To LogEntry Details Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . navigate To LogEntry Details Dialog Fragment ( action . log Entry Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . reading Log . observe ( view Lifecycle Owner ) Ġ{ Ġentries Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . reading Log RecyclerView . isVisible Ġ= Ġentries . isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty Reading Log Layout . root . isVisible Ġ= Ġentries . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Adapter . update Models ( entries ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠNavigator Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnavigate To LogEntry Details Dialog Fragment ( log Entry Id : ĠLog Entry Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĠReading Log Fragment Directions . action Reading Log Fragment To LogEntry Details Fragment ( log Entry Id . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate ( direction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }