package Ġapp . splash Ċ Ċ import Ġdomain . logged in check . LoggedIn User Check UseCase Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . ob servers . Disposable Single Observer Ċ import Ġreporter . Crash Reporter Ċ Ċ internal Ġclass ĠLog ged In Check Coordinator ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġasync Execution Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpost Execution Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġresult Callback : ĠResult Callback , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcrash Reporter : ĠCrash Reporter ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġuse Case : ĠLog ged In User Check UseCase ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġaction Run () Ġ{ ĊĠĠĠĠĠĠĠ Ġuse Case Ġ= ĠLog ged In User Check UseCase ( async Execution Scheduler , Ġpost Execution Scheduler ) ĊĠĠĠĠĠĠĠ Ġuse Case ?. execute ( object Ġ: ĠDis posable Single Observer < Boolean >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( found A User : ĠBoolean ) Ġ= Ġwhen Ġ( found A User ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġresult Callback . on LoggedIn User Found () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġresult Callback . on LoggedIn User NotFound () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrash Reporter . report ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Callback . on LoggedIn User NotFound () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaction Cancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġuse Case ?. dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠResult Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon LoggedIn User Found () ĊĊĠĠĠĠĠĠĠ Ġfun Ġon LoggedIn User NotFound () ĊĠĠĠ Ġ} Ċ } Ċ