package Ġcom . trainer app . ui ĊĊ Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . Window Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Client Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . trainer app . R Ċ import Ġcom . trainer app . base . Base Activity Ċ import Ġcom . trainer app . di . component . Activity Component Ċ import Ġcom . trainer app . ui . fragments . Login Fragment Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠA Ġlogin Ġscreen Ġthat Ġoffers Ġlogin Ġvia Ġemail / password . Ċ Ġ*/ Ċ class ĠLogin Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġaction Bar : ĠAction Bar ? Ġ= Ġnull ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġgoogle SignIn Client : ĠGoogle SignIn Client ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġwindow . request Feature ( Window . FEATURE _ ACTION _ BAR ) ĊĠĠĠĠĠĠĠ Ġaction Bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġaction Bar !!. setTitle ( R . string . app _ name ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġchannel Ġto Ġshow Ġnotifications . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= ĠgetString ( R . string . default _ notification _ channel _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Name Ġ= ĠgetString ( R . string . default _ notification _ channel _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġget System Service ( Notification Manager :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager !!. create Notification Channel ( Notification Channel ( channelId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Name , ĠNotification Manager . IMPORT ANCE _ LOW )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlogin Fragment Ġ= ĠLogin Fragment () ĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġ// ĠBegin Ġthe Ġtransaction ĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . fragment _ frame , Ġlogin Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ// ĠReplace Ġthe Ġcontents Ġof Ġthe Ġcontainer Ġwith Ġthe Ġnew Ġfragment ĊĠĠĠĠĠĠĠ Ġ// ft . replace ( R . id . fragment _ frame , Ġnew ĠLogin Fragment ()); ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Inject ( activity Component : ĠActivity Component ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠGo To Navigation Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Intent Ġ= ĠIntent ( this @ Login Activity , ĠNavigation Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( my Intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). sign Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle SignIn Client . sign Out (). add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) Ċ // ĠĠĠĠĠĠĠ Ġvar Ġfr ags Ġ= Ġget Support FragmentManager (). get Fragments (); Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fr ags Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġfr ags ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f Ġ!= Ġnull ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f Ġis ĠLogin Fragment ) Ġ{ Ġ// Ġcustom Ġinterface Ġwith Ġno Ġsign it ures Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . on Activity Result ( request Code , ĠresultCode , Ġdata ); Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ } ĊĊ