package Ġcom . tk sh . v airo ga Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Patterns Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġjava . lang . Exception Ċ Ċ class Ġlogin Page Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġval Ġfirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠ Ġval Ġdatabase Ġ= ĠFirebase Database . getInstance (). reference ĊĠĠĠ Ġvar Ġoption _ in : String ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login _ page ) ĊĠĠĠĠĠĠĠ Ġval Ġtv _ username Ġ= ĠfindViewById < EditText >( R . id . et _ login Email ) ĊĠĠĠĠĠĠĠ Ġval Ġtv _ password Ġ= ĠfindViewById < EditText >( R . id . et _ login Password ) ĊĠĠĠĠĠĠĠ Ġoption _ in Ġ= Ġintent . getString Extra ( Login Options . LOGIN _ KEY ) ĊĠĠĠĠĠĠĠ Ġval Ġregister Text Ġ= ĠfindViewById < TextView >( R . id . tv _ register ) ĊĠĠĠĠĠĠĠ Ġval Ġlogin Btn Ġ= ĠfindViewById < Button >( R . id . btn _ login ) ĊĠĠĠĠĠĠĠ Ġval Ġregister Btn Ġ= ĠfindViewById < TextView >( R . id . tv _ register ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( option _ in Ġ== Ġ" DO CTOR "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġregister Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , register Page :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogin Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tv _ username . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ username . error Ġ= Ġ" Please Ġenter Ġemail " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ username . request Focus () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Patterns . EMAIL _ ADDRESS . matcher ( tv _ username . text . toString ()). matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ username . error Ġ= Ġ" Please Ġenter Ġvalid Ġemail " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ username . request Focus () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tv _ password . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ password . error Ġ= Ġ" Please Ġenter Ġpassword " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ password . request Focus () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Auth . signIn With Email And Password ( tv _ username . text . toString (), Ġtv _ password . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" what "," this Ġworking ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfirebase Auth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( user , option _ in ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Cannot ĠLogin ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null , option _ in ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġupdate UI ( currentUser : ĠFirebase User ?, option : String ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( currentUser != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( currentUser . is Email Verified ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( option ==" DO CTOR ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent 1 Ġ= ĠIntent ( this , Ġdoctor Dashboard :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent 1 . putExtra ( Login Options . LOGIN _ KEY , option ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" w "," Working ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent 1 Ġ= ĠIntent ( this , Ġpatient Dashboard :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent 1 . putExtra ( Login Options . LOGIN _ KEY , option ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Context , Ġ" Please Ġverify Ġyour Ġemail Ġaddress ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelse { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Toast . makeText ( base Context , Ġ" Authentication Ġfailed .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġuser Ġis Ġsigned Ġin Ġ( non - null ) Ġand Ġupdate ĠUI Ġaccordingly . ĊĠĠĠĠĠĠĠ Ġval ĠcurrentUser Ġ= Ġfirebase Auth . currentUser ĊĠĠĠĠĠĠĠ Ġval Ġwhat Ġ= Ġintent . getString Extra ( Login Options . LOGIN _ KEY ) ĊĠĠĠĠĠĠĠ Ġif Ġ( currentUser != null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( currentUser , Ġwhat ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }