package Ġcom . dou glas . github auth . module . core Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Provider Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġcom . dou glas . github auth . Application Ċ import Ġcom . dou glas . github auth . R Ċ import Ġcom . dou glas . github auth . module . login . Login Fragment Ċ import Ġcom . dou glas . github auth . module . repository List . Repository List Fragment Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠCore Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠCore ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ core ) ĊĊĠĠĠĠĠĠĠ Ġinit Depend ence () ĊĠĠĠĠĠĠĠ Ġsubscribe View States () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Depend ence () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠApplication . component . inject ( this ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġget ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget ViewModel () Ġ: ĠCore ViewModel Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewModel Providers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. of ( this , ĠviewModel Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Core ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe View States () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠviewModel . view State . observe ( this , ĠObserver Ġ{ Ġview State Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View ( view State ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ ĠviewModel . check If Has User LoggedIn () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate View ( view State : ĠCore ViewModel . ViewState ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen ( view State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCore ViewModel . ViewState . Show Login Screen Ġ-> Ġshow Login Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCore ViewModel . ViewState . Show Profile Screen Ġ-> Ġshow Profile Sc ree () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Login Screen () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlogin Fragment Ġ= ĠLogin Fragment () ĊĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content , Ġlogin Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Profile Sc ree () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprofile Fragment Ġ= ĠRepository List Fragment () ĊĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content , Ġprofile Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} Ċ Ċ } Ċ