package Ġcom . covid . covid 1 9 . auth Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġcom . covid . covid 1 9 . R Ċ import Ġcom . covid . covid 1 9 . common . Base Activity Ċ import Ġcom . covid . covid 1 9 . common . Utils Ċ import Ġcom . covid . covid 1 9 . home . presentation . ui . activity . Home Activity Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Account Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Client Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Options Ċ import Ġcom . google . android . gms . common . api . ApiException Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . auth . Google Auth Provider Ċ import Ġcom . google . gson . Gson Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ sign _ up .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ sign _ up . splash _ image ĊĊ Ċ class ĠSign Up Activity Ġ: ĠBase Activity () Ġ Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgoogle SignIn Client : ĠGoogle SignIn Client ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ sign _ up ) Ċ /* ĠĠĠĠĠĠĠ Ġval Ġanimation Ġ= ĠAnimation Utils . load Animation ( this , ĠR . anim . bounce ) ĊĠĠĠĠĠĠĠ Ġsplash _ image . start Animation ( animation ) */ ĊĠĠĠĠĠĠĠ ĠUtils (). transparent Status And Navigation ( window ) ĊĠĠĠĠĠĠĠ Ġset ProgressBar ( R . id . progress Bar ) ĊĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , Home Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ}, Ġ 4 0 0 0 ) ĊĊĠĠĠĠ Ġ/* ĠĠ Ġval Ġg so Ġ= ĠGoogle SignIn Options . Builder ( Google SignIn Options . DEFAULT _ SIGN _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. requestId Token ( getString ( R . string . default _ web _ client _ id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Email () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġgoogle SignIn Client Ġ= ĠGoogle SignIn . getClient ( this , Ġg so ) ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĊĠĠĠĠĠĠĠ Ġsign In Button . setOnClickListener ( this ) */ ĊĠĠĠ Ġ} ĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠ Ġ/* Ġ Ġval ĠcurrentUser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġupdate UI ( currentUser ) */ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* public Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠRC _ SIGN _ IN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠGoogle SignIn . get Signed In Account From Intent ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġtask . getResult ( ApiException :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Auth With Google ( account !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Google Ġsign Ġin Ġfailed ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfirebase Auth With Google ( acct : ĠGoogle SignIn Account ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" firebase Auth With Google :" Ġ+ Ġac ct . id !! ) ĊĠĠĠĠĠĠĠ Ġshow ProgressBar () ĊĠĠĠĠĠĠĠ Ġval Ġcredential Ġ= ĠGoogle Auth Provider . getC redential ( acct . id Token , Ġnull ) ĊĠĠĠĠĠĠĠ Ġauth . signIn With Credential ( credential ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġin Ġsuccess , Ġupdate ĠUI Ġwith Ġthe Ġsigned - in Ġuser 's Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" signIn With Credential : success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , Home Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" signIn With Credential : failure ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( main _ layout , Ġ" Authentication ĠFailed .", ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign In () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= Ġgoogle SignIn Client . signIn Intent ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( signIn Intent , ĠRC _ SIGN _ IN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI ( user : ĠFirebase User ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide ProgressBar () ĊĠĠĠĠĠĠĠ Ġval Ġeditor : ĠSharedPreferences . Editor ? Ġ= Ġ Ġshared Preferences ?. edit () ĊĠĠĠĠĠĠĠ Ġeditor ?. putString ( EMAIL , Ġuser ?. email ) ĊĠĠĠĠĠĠĠ Ġeditor ?. putString ( UID , user ?. uid ) ĊĠĠĠĠĠĠĠ Ġeditor ?. putString ( DISPLAY _ NAME , user ?. displayName ) ĊĠĠĠĠĠĠĠ Ġeditor ?. putString ( PH OTO _ URL , user ?. photoUrl . toString ()) ĊĠĠĠĠĠĠĠ Ġeditor ?. put Boolean ( SIGN _ IN , true ) ĊĠĠĠĠĠĠĠ Ġeditor ?. apply () ĊĠĠĠĠĠĠĠ Ġeditor ?. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . signIn Button Ġ-> Ġsign In () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġauth . sign Out () ĊĠĠĠĠĠĠĠ Ġgoogle SignIn Client . sign Out (). add On Complete Listener ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġre voke Access () Ġ{ ĊĠĠĠĠĠĠĠ Ġauth . sign Out () ĊĠĠĠĠĠĠĠ Ġgoogle SignIn Client . revoke Access (). add On Complete Listener ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Google Activity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRC _ SIGN _ IN Ġ= Ġ 9 0 0 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠE MAIL Ġ= Ġ" email " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUID Ġ= Ġ" uid " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDISPLAY _ NAME Ġ= Ġ" displayName " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPH OTO _ URL Ġ= Ġ" photoUrl " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSIGN _ IN Ġ= Ġ" sign _ in " ĊĠĠĠ Ġ}*/ Ċ Ċ } Ċ