package Ġcom . mark nk am au . just java . ui Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . mark nj unge . core . auth . Auth Service Ċ import Ġcom . mark nk am au . just java . R Ċ import Ġcom . mark nk am au . just java . data . local . Preferences Repository Ċ import Ġcom . mark nk am au . just java . ui . about . About Activity Ċ import Ġcom . mark nk am au . just java . ui . cart . Cart Activity Ċ import Ġcom . mark nk am au . just java . ui . login . Log In Activity Ċ import Ġcom . mark nk am au . just java . ui . profile . Profile Activity Ċ import Ġorg . k oin . android . ext . android . inject Ċ Ċ abstract Ġclass ĠBase Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġauth Service : ĠAuth Service Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġpreferences Repository : ĠPreferences Repository Ġby Ġinject () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . overflow _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Prepare Options Menu ( menu ) ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠCart Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu ?. find Item ( R . id . menu _ cart )?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠProfile Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu ?. find Item ( R . id . menu _ profile )?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmenu ?. find Item ( R . id . menu _ logout )?. isVisible Ġ= Ġauth Service . is Signed In () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ cart Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠCart Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ profile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auth Service . is Signed In ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠProfile Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠLog In Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ logout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences Repository . clear UserDetails () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Service . log Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthis Ġis ĠProfile Activity , Ġleave Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġas ? ĠProfile Activity )?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Logged Ġout ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Logged Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ about Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠAbout Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Logged Out (){} Ċ Ċ } Ċ