package Ġcom . mark nk am au . just java Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . google . android . libraries . places . api . Places Ċ import Ġcom . mark nj unge . core . data . local . Preferences Repository Ċ import Ġcom . mark nj unge . core . data . model . Resource Ċ import Ġcom . mark nj unge . core . data . repository . Auth Repository Ċ import Ġcom . mark nj unge . core . data . repository . Users Repository Ċ import Ġcom . mark nk am au . just java . utils . Release Tree Ċ import Ġcom . mark nk am au . just java . utils . toast Ċ import Ġdagger . h ilt . android . H ilt Android App Ċ import Ġio . sentry . android . core . S entry Android Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ @ Suppress (" unused ") Ċ @ H ilt Android App Ċ open Ġclass ĠJust Java App Ġ: ĠApplication () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpreferences Repository : ĠPreferences Repository ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġusers Repository : ĠUsers Repository ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġauth Repository : ĠAuth Repository ĊĊĠĠĠ Ġprivate Ġval Ġcoroutine Scope Ġ= ĠCor outine Scope ( Dispatch ers . Main ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . plant ( object Ġ: ĠTim ber . Debug Tree () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Stack Element Tag ( element : ĠStack Trace Element ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Tim ber Ġ${ element . methodName } Ġ(${ element . fileName }:${ element . line Number })" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . plant ( Release Tree ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS entry Android . init ( this ) Ġ{ Ġoptions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . dsn Ġ= ĠBuild Config . sentry D sn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠPl aces . initialize ( this , ĠgetString ( R . string . google _ api _ key )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( preferences Repository . is Signed In ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresource Ġ= Ġusers Repository . update F cm Token ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġusers Repository . getCurrent User (). collect Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resource . response . message Ġ== Ġ" Invalid Ġsession - id ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Signed Ġout ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Repository . sign Out Loc ally () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( resource . response . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ