package Ġcom . tern ary op . photos he lf . home . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . tern ary op . photos he lf . fragment . Abs Photo She lf Fragment Ċ import Ġcom . tern ary op . photos he lf . home . R Ċ import Ġcom . tern ary op . photos he lf . home . prefs . last Stats Refresh Ċ import Ġcom . tern ary op . photos he lf . home . prefs . load Stats Ċ import Ġcom . tern ary op . photos he lf . home . prefs . save Stats Ċ import Ġcom . tern ary op . photos he lf . lifecycle . Event Observer Ċ import Ġcom . tern ary op . photos he lf . lifecycle . Status Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġjava . text . Decimal Format Ċ Ċ @ Android EntryPoint Ċ class ĠHome Fragment Ġ: ĠAbs Photo She lf Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠHome ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ= Ġinflater . inflate ( R . layout . fragment _ home , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . result . observe ( view Lifecycle Owner , ĠEvent Observer Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHome Model Result . Stats Ġ-> Ġon Stats ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrefresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfill Stats UI ( stats Map : ĠMap < String , ĠLong >) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠDecimal Format (" ### , ### ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer View Ġ= Ġit . findViewById < View >( R . id . home _ container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġview Id Column Map . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġit . findViewById < TextView >( view Id Column Map . key At ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġstats Map [ view Id Column Map . value At ( i )] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġformat . format ( count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . start Animation ( Animation Utils . load Animation ( activity , ĠR . anim . fade )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Blog Ġ= Ġblog Name Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( require Context ()) ĊĠĠĠĠĠĠĠ Ġval Ġlast Refresh Ġ= Ġpreferences . last Stats Refresh ĊĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġlast Refresh Ġ< ĠSTAT S _ REFRESH _ RATE _ M ILL IS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Stats UI ( preferences . load Stats ( view Id Column Map )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . load Stats ( current Blog ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Stats ( result : ĠHome Model Result . Stats ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result . command . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . command . data ?. stats ?. also Ġ{ Ġstats Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Stats ( stats Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last Stats Refresh ( System . currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Stats UI ( stats Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . PROGRESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPOST _ COUNT _ COLUMN Ġ= Ġ" post Count " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUNIQUE _ TAGS _ COUNT _ COLUMN Ġ= Ġ" unique Tags Count " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUNIQUE _ FIRST _ TAG _ COUNT _ COLUMN Ġ= Ġ" unique First Tag Count " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIS SING _ B IR TH DAYS _ COUNT _ COLUMN Ġ= Ġ" missing Birth days Count " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠB IR TH DAYS _ COUNT _ COLUMN Ġ= Ġ" birth days Count " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREC ORD _ COUNT _ COLUMN Ġ= Ġ" record Count " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġview Id Column Map Ġ= ĠSparse Array < String >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( R . id . total _ records , ĠREC ORD _ COUNT _ COLUMN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( R . id . total _ posts , ĠPOST _ COUNT _ COLUMN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( R . id . total _ unique _ tags , ĠUNIQUE _ TAGS _ COUNT _ COLUMN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( R . id . total _ unique _ first _ tags , ĠUNIQUE _ FIRST _ TAG _ COUNT _ COLUMN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( R . id . birth days _ count , ĠB IR TH DAYS _ COUNT _ COLUMN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( R . id . missing _ birth days _ count , ĠMIS SING _ B IR TH DAYS _ COUNT _ COLUMN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTAT S _ REFRESH _ RATE _ M ILL IS Ġ= Ġ 6 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 ĊĠĠĠ Ġ} Ċ } Ċ