package Ġcom . co pp el . alf ons os ote lo . co pp el mar vel . ui . splash Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . co pp el . alf ons os ote lo . co pp el mar vel . R Ċ import Ġcom . co pp el . alf ons os ote lo . co pp el mar vel . interfaces . Data Status Handler Ċ import Ġcom . co pp el . alf ons os ote lo . co pp el mar vel . ui . dashboard . Dashboard Activity Ċ import Ġcom . co pp el . alf ons os ote lo . co pp el mar vel . ui . login . Login Activity Ċ import Ġcom . co pp el . alf ons os ote lo . co pp el mar vel . utils .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ splash .* Ċ Ċ /** Ċ Ġ* ĠThe Ġinitial ĠActivity Ġin Ġthe Ġapp , Ġworks Ġas Ġa Ġloading Ġpage Ċ Ġ* ĠDownload Ġfirst Ġdata Ġhere Ċ Ġ*/ Ċ class ĠSpl ash Activity : ĠAppCompatActivity (), ĠData Status Handler Ġ{ ĊĊĠĠĠ Ġ// Splash ViewModel Ġloaded Ġl az ily ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ViewModel ({ Splash ViewModel ( application )}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve ( status , Ġ:: handle Data Status ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ splash ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġis ĠLog ged Ġin Ġif Ġis Ġnot Ġsends Ġto Ġlogin Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ(! viewModel . is LoggedIn ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Login () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġthe Ġdata Ġis Ġdownloaded ĊĠĠĠĠĠĠĠ Ġif Ġ(! viewModel . is Data Downloaded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsend To Dashboard Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Data Status ( data Status : ĠData Status ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( data Status ?. data State ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData State . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Status . message Ġ== ĠSpl ash ViewModel . SUCCESS _ DOWNLOAD ) Ġ{ Ġ// Ġif Ġfinish Ġto Ġdownload Ġthe Ġdata Ġsends Ġto ĠDashboard ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend To Dashboard Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData State . LOADING Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData State . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Status . message ?. let Ġ{ Ġ// Ġif Ġdownload Ġdata Ġfails Ġa Ġsn ackbar Ġappears Ġand Ġuser Ġcan Ġretry Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Container . set Snackbar ( it , ĠR . string . retry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . is Data Downloaded () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend To Login () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity < Login Activity >() ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend To Dashboard Activity () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity < Dashboard Activity >() ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ }