package Ġorg . opp ia . android . app . splash Ċ Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġorg . opp ia . android . R Ċ import Ġorg . opp ia . android . app . activity . Activity Scope Ċ import Ġorg . opp ia . android . app . deprecation . Automatic App De precation Notice Dialog Fragment Ċ import Ġorg . opp ia . android . app . model . App Startup State Ċ import Ġorg . opp ia . android . app . model . App Startup State . Startup Mode Ċ import Ġorg . opp ia . android . app . on boarding . On boarding Activity Ċ import Ġorg . opp ia . android . app . profile . Profile Chooser Activity Ċ import Ġorg . opp ia . android . domain . on boarding . App Startup State Controller Ċ import Ġorg . opp ia . android . domain . opp ialog ger . Opp ia Logger Ċ import Ġorg . opp ia . android . domain . topic . Prime Topic Assets Controller Ċ import Ġorg . opp ia . android . util . data . AsyncResult Ċ import Ġorg . opp ia . android . util . data . Data Providers . Companion . to LiveData Ċ import Ġjavax . inject . Inject Ċ Ċ private Ġconst Ġval ĠAUTO _ DE PREC ATION _ NOTICE _ DIALOG _ FRAGMENT _ TAG Ġ= Ġ" auto _ deprecation _ notice _ dialog " Ċ Ċ /** ĠThe Ġpresenter Ġfor Ġ[ Splash Activity ]. Ġ*/ Ċ @ Activity Scope Ċ class ĠSpl ash Activity Presenter Ġ@ Inject Ġconstructor ( ĊĠ Ġprivate Ġval Ġactivity : ĠAppCompatActivity , ĊĠ Ġprivate Ġval Ġopp ia Logger : ĠO pp ia Logger , ĊĠ Ġprivate Ġval Ġapp Startup State Controller : ĠApp Startup State Controller , ĊĠ Ġprivate Ġval Ġprime Topic Assets Controller : ĠPrime Topic Assets Controller Ċ ) Ġ{ ĊĊĠ Ġfun Ġhandle On Create () Ġ{ ĊĠĠĠ Ġactivity . set ContentView ( R . layout . splash _ activity ) ĊĠĠĠ Ġactivity . window . set Flags ( ĊĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN , ĊĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN ĊĠĠĠ Ġ) ĊĠĠĠ Ġ// ĠInit iate Ġdownload Ġsupport Ġbefore Ġany Ġadditional Ġprocessing Ġbegins . ĊĠĠĠ Ġprime Topic Assets Controller . download Assets ( R . style . AlertDialog Theme ) ĊĠĠĠ Ġsubscribe To On boarding Flow () ĊĠ Ġ} ĊĊĠ Ġfun Ġhandle On Close App Button Clicked () Ġ{ ĊĠĠĠ Ġ// ĠIf Ġthe Ġapp Ġclose Ġbutton Ġis Ġclicked Ġfor Ġthe Ġdeprecation Ġnotice , Ġfinish Ġthe Ġactivity Ġto Ġclose ĊĠĠĠ Ġ// Ġthe Ġapp . ĊĠĠĠ Ġactivity . finish () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsubscribe To On boarding Flow () Ġ{ ĊĠĠĠ Ġget On boarding Flow (). observe ( ĊĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠ ĠObserver Ġ{ Ġstartup Mode Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( startup Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠStartup Mode . USER _ IS _ ON BO AR DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity ( Profile Chooser Activity . create Profile Chooser Activity ( activity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠStartup Mode . APP _ IS _ DEPRECATED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get De precation Notice Dialog Fragment () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . support FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAutomatic App De precation Notice Dialog Fragment . newInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAUTO _ DE PREC ATION _ NOTICE _ DIALOG _ FRAGMENT _ TAG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). commit Now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIn Ġall Ġother Ġcases Ġ( including Ġerrors Ġwhen Ġthe Ġstartup Ġstate Ġfails Ġto Ġload Ġor Ġis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdefault ed ), Ġassume Ġthe Ġuser Ġneeds Ġto Ġbe Ġon bo arded . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity ( On boarding Activity . create On boarding Activity ( activity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget On boarding Flow (): ĠLive Data < Startup Mode > Ġ{ ĊĠĠĠ Ġreturn ĠTransform ations . map ( ĊĠĠĠĠĠ Ġapp Startup State Controller . getApp Startup State (). to LiveData (), ĊĠĠĠĠĠ Ġ:: process Startup State ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġprocess Startup State ( ĊĠĠĠ Ġstartup State Result : ĠAsync Result < App Startup State > ĊĠ Ġ): ĠStartup Mode Ġ{ ĊĠĠĠ Ġif Ġ( startup State Result . is Failure ()) Ġ{ ĊĠĠĠĠĠ Ġopp ia Logger . e ( ĊĠĠĠĠĠĠĠ Ġ" Splash Activity ", ĊĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġretrieve Ġstartup Ġstate ", ĊĠĠĠĠĠĠĠ Ġstartup State Result . getError OrNull () ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠIf Ġthere 's Ġan Ġerror Ġloading Ġthe Ġdata , Ġassume Ġthe Ġdefault . ĊĠĠĠ Ġreturn Ġstartup State Result . get OrDefault ( App Startup State . getDefaultInstance ()). startup Mode ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget De precation Notice Dialog Fragment (): ĠAutomatic App De precation Notice Dialog Fragment ? Ġ{ ĊĠĠĠ Ġreturn Ġactivity . support FragmentManager . find Fragment By Tag ( ĊĠĠĠĠĠ ĠAUTO _ DE PREC ATION _ NOTICE _ DIALOG _ FRAGMENT _ TAG ĊĠĠĠ Ġ) Ġas ? ĠAutomatic App De precation Notice Dialog Fragment ĊĠ Ġ} Ċ } Ċ