package Ġio . po ot is . android lab ts u . ui Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . po ot is . android lab ts u . R Ċ import Ġio . po ot is . android lab ts u . d agger . My Application Ċ import Ġio . po ot is . android lab ts u . data . Game ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ sign _ up .* Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġapp Time Preferences Ġ= Ġ" time " ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpref : ĠSharedPreferences ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġeditor : ĠSharedPreferences . Editor ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . toolbar )) ĊĊĠĠĠĠĠĠĠ Ġpref Ġ= Ġget SharedPreferences ( app Time Preferences , ĠMODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġeditor Ġ= Ġpref . edit () ĊĠĠĠĠĠĠĠ Ġeditor . put Long (" curr Time ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġeditor . apply () ĊĊĠĠĠĠĠĠĠ Ġ( application Ġas ĠMy Application ). app Component . inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= ĠfindViewById < RecyclerView >( R . id . recyclerview ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠGame ListAdapter ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgame ViewModel Ġ= ĠViewModel Provider ( this , viewModel Factory ). get ( Game ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġgame ViewModel . fetch Game () ĊĠĠĠĠĠĠĠ Ġgame ViewModel . games . observe ( this , ĠObserver Ġ{ Ġgames Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgames ?. let Ġ{ Ġadapter . set Games ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġeditor Ġ= Ġpref . edit () ĊĠĠĠĠĠĠĠ Ġeditor . put Long (" curr Time ", ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġval Ġpref Time Ġ: ĠLong Ġ= Ġpref . getLong (" curr Time ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġpref Time Ġ> Ġ 5 * 6 0 * 1 0 0 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Time Ġ!= Ġ 0 L Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= Ġwhen Ġ( item . itemId ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠR . id . refresh Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// game ViewModel . fetch Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ