package Ġad am . ra o . ag ro app . utils Ċ Ċ import Ġad am . ra o . ag ro app .* Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . firebase . auth . Email Auth Provider Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ Ċ fun Ġcheck Email And Password NotEmpty ( context : ĠContext , Ġemail : ĠString , Ġpassword : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġif ( email . isNotEmpty () Ġ&& Ġpassword . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getString ( R . string . empty _ email _ and _ pass _ fields ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġcheck Password And Confirm Password Match ( context : ĠContext , Ġpassword : ĠString , Ġconfirm Password : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġif ( password . isNotEmpty () Ġ&& Ġconfirm Password . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( password Ġ== Ġconfirm Password ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getString ( R . string . password _ confirm _ password _ not _ match ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getString ( R . string . empty _ email _ and _ pass _ fields ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ Ċ fun Ġattach Firebase Auth State Listener ( arg : ĠFirebase Auth . Auth State Listener ) Ġ{ ĊĠĠĠ ĠFirebase Auth . getInstance (). add Auth State Listener ( arg ) Ċ } Ċ Ċ fun Ġde tt ach Firebase Auth State Listener ( arg : ĠFirebase Auth . Auth State Listener ) Ġ{ ĊĠĠĠ ĠFirebase Auth . getInstance (). remove Auth State Listener ( arg ) Ċ } Ċ Ċ fun Ġuser Has No Account ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠSign Up Activity :: class . java ) ĊĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠ Ġcontext . startActivity ( intent ) Ċ } Ċ Ċ fun Ġuser Has Account But Email Not Verified ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠSign In Activity :: class . java ) ĊĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠ Ġcontext . startActivity ( intent ) Ċ } Ċ Ċ fun Ġreset Password ( email : ĠString , Ġcontext : ĠActivity ) Ġ{ ĊĠĠĠ Ġval Ġview Dialog = View Dialog ( context ) ĊĠĠĠ Ġview Dialog . show Dialog () ĊĠĠĠ ĠFirebase Auth . getInstance (). send Password Reset Email ( email ). add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġif ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Password ĠReset ĠLink Ġsent Ġto ĠEmail ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Dialog . hide Dialog () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġreset EmailAddress ( email : ĠString , Ġpassword : ĠString , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġcredentials Ġ= ĠEmail Auth Provider . getC redential ( Firebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġ. currentUser !!. email Ġas ĠString , Ġpassword ) ĊĠĠĠ ĠFirebase Auth . getInstance (). currentUser !!. re authenticate ( credentials ). add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġif ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). fetch SignIn Methods For Email ( email ). add On Complete Listener Ġ{ Ġtask 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( task 1 . result !!. signIn Methods !!. size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Email ĠAlready ĠEx ists , Ġchoose Ġanother ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). currentUser !!. update Email ( email ). add On Complete Listener Ġ{ Ġtask 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( task 2 . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Email ĠReset ĠSuccessful , Ġverification Ġemail Ġsent ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). currentUser !!. send Email Verification () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. add On Failure Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Failed Ġto ĠRe - authenticate ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġe . message ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsign In User ( email : ĠString , Ġpassword : ĠString , Ġcontext : ĠActivity ) Ġ{ ĊĠĠĠ Ġval Ġview Dialog = View Dialog ( context ) ĊĠĠĠ Ġview Dialog . show Dialog () ĊĠĠĠ ĠFirebase Auth . getInstance (). signIn With Email And Password ( email , Ġpassword ). add On Complete Listener Ġ{ task Ġ-> ĊĠĠĠĠĠĠĠ Ġif ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Firebase User Ġ= ĠFirebase Auth . getInstance (). currentUser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Dialog . hide Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! m Firebase User !!. is Email Verified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Please Ġverify Ġyour Ġemail ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠBase Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Dialog . hide Dialog () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Sign ĠIn ĠFailed . ĠDo Ġyou Ġhave Ġan Ġaccount ?", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsign Up User ( email : ĠString , Ġpassword : ĠString , Ġcontext : ĠActivity ) Ġ{ ĊĠĠĠ Ġval Ġview Dialog = View Dialog ( context ) ĊĠĠĠ Ġview Dialog . show Dialog () ĊĠĠĠ ĠFirebase Auth . getInstance (). createUser With Email And Password ( email , Ġpassword ). add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġif ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Dialog . hide Dialog () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" SignUp Ġsuccessful ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Registration ĠSuccessful , Ġcheck Ġemail Ġfor Ġverification Ġlink ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Verification Email () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠSign In Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Out () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Dialog . hide Dialog () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" SignUp Ġun successful ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Registration ĠFailed ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsend Verification Email () Ġ{ ĊĠĠĠ Ġval Ġm Firebase User Ġ= ĠFirebase Auth . getInstance (). currentUser ĊĠĠĠ Ġif ( m Firebase User Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! m Firebase User . is Email Verified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Firebase User . send Email Verification () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ fun Ġget Auth Instance (): ĠFirebase User Ġ{ ĊĠĠĠ Ġreturn ĠFirebase Auth . getInstance (). currentUser !! Ċ } Ċ fun Ġcheck User Signed In ( context : ĠContext ): ĠFirebase Auth . Auth State Listener Ġ{ ĊĠĠĠ Ġreturn ĠFirebase Auth . Auth State Listener Ġ{ Ġauth Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Please Ġcreate Ġan Ġaccount ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Has No Account ( context ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! user . is Email Verified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Please Ġverify Ġyour Ġemail Ġaddress ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Has Account But Email Not Verified ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsign Out () Ġ{ ĊĠĠĠ ĠFirebase Auth . getInstance (). sign Out () Ċ }