package Ġcom . example . dog ger Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġcom . google . firebase . firestore . Firebase Fire store ĊĊĊ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtxt User : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtxt Password : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠprogressBar : ĠProgress Bar ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĊĠĠĠĠĠĠĠ Ġtxt User Ġ= ĠfindViewById ( R . id . txt User ) ĊĠĠĠĠĠĠĠ Ġtxt Password Ġ= ĠfindViewById ( R . id . txt Password ) ĊĠĠĠĠĠĠĠ ĠprogressBar Ġ= ĠfindViewById ( R . id . progress Bar ) ĊĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĊĠĠĠĠĠĠĠ Ġ/** sn ip Ġ**/ ĊĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠIntent Filter () ĊĠĠĠĠĠĠĠ Ġintent Filter . addAction (" com . package . ACTION _ LOG OUT ") ĊĠĠĠĠĠĠĠ Ġregister Receiver ( object Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" on Receive ", Ġ" Logout Ġin Ġprogress ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// At Ġthis Ġpoint Ġyou Ġshould Ġstart Ġthe Ġlogin Ġactivity Ġand Ġfinish Ġthis Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġintent Filter ) ĊĠĠĠĠĠĠĠ Ġ// ** Ġsn ip Ġ** // ĊĊĠĠĠĠĠĠĠ Ġ// initial Data () Ġ// Solo Ġcor rer Ġs ino Ġse Ġt ien en Ġdatos Ġen ĠFire store . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġforgot Password ( view : View ){ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠF orgot Pass Activity :: class . java )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġregister ( view : View ){ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠRegister Activity :: class . java )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġlogin ( view : View ){ ĊĠĠĠĠĠĠĠ Ġlogin User () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogin User (){ ĊĠĠĠĠĠĠĠ Ġval Ġuser : String Ġ= Ġtxt User . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpassword : String Ġ= Ġtxt Password . text . toString () Ċ // ĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġ" al var o . ar ando @ gmail . com " Ċ // ĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġ" 1 2 3 4 5 6 " ĊĊĠĠĠĠĠĠĠ Ġif (! TextUtils . isEmpty ( user ) Ġ&& Ġ! TextUtils . isEmpty ( password )){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth . signIn With Email And Password ( user , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Error Ġen Ġla ĠAut entic aciÃ³n ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaction (){ ĊĠĠĠĠĠĠĠ Ġval Ġuser : ĠFirebase User ?= auth . currentUser ĊĠĠĠĠĠĠĠ Ġval Ġuser Key Ġ= Ġuser ?. uid ĊĊĠĠĠĠĠĠĠ Ġvar Ġm Database Ġ= ĠFirebase Database . getInstance () ĊĠĠĠĠĠĠĠ Ġvar Ġm Db Ġ= Ġm Database . getReference () ĊĊĊĠĠĠĠĠĠĠ Ġm Db . child (" User "). child ( user Key !! ). add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser type Ġ= Ġdata Snapshot . child (" user Type "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid P ase ador Ġ= Ġdata Snapshot . child (" id _ p ase ador "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Activity ( user type , Ġuser Key , Ġid P ase ador ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Activity ( user type : ĠString ?, Ġuser Key : ĠString ?, Ġid P ase ador : ĠString ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( user type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Due Ã± io " Ġ-> Ġis First Session ( user Key , Ġid P ase ador ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" P ase ador " Ġ-> ĠstartActivity ( Intent ( this , P ase ador Inicio Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ// ĠNote Ġthe Ġblock ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Error :" Ġ+ Ġuser type , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis First Session ( user Key : ĠString ?, Ġid P ase ador : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( id P ase ador )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠDu en io Inicio Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSe leccion ar P ase ador Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitial Data (){ ĊĊĠĠĠĠĠĠĠ Ġval Ġmas cot as Ġ= Ġarray ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" P uch i ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 4 . 9 2 0 3 4 5 , ĉ - 5 7 . 9 6 9 5 5 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bill ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 5 7 2 Ġ 4 6 2 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" F ir ula is ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 2 . 9 5 0 0 0 1 , ĉ - 6 0 . 6 6 6 6 6 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" E inst ein ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mon cho ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 1 . 4 1 6 6 6 8 , ĉ - 6 4 . 1 8 3 3 3 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Mark ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" An ga ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 2 . 8 8 8 3 5 5 , ĉ - 6 8 . 8 3 8 8 4 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Car l ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can uto ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 2 4 . 1 8 4 3 4 0 , ĉ - 6 5 . 3 0 2 1 7 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" R ene ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bob y ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 7 . 3 2 0 4 8 0 , ĉ - 5 9 . 1 3 2 9 0 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Fac undo ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Trap o ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 5 . 1 0 1 9 3 3 , ĉ - 6 0 . 4 3 8 5 3 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ste ve ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" M ug ro so ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 4 1 . 1 3 4 2 5 8 , ĉ - 7 1 . 3 0 8 5 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" T ony ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Pul g oso ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 2 6 . 8 0 8 2 8 5 , ĉ - 6 5 . 2 1 7 5 9 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ste phen ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMas co ta ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Man aos ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . dog 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 3 4 . 7 9 6 5 8 1 , ĉ - 5 8 . 2 7 6 0 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" El on ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . owner 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"+ 5 4 9 Ġ 1 1 Ġ 6 1 0 0 9 0 1 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmas cot as . forEach Ġ{ Ġmas co ta Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . collection (" mas cot as ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( mas co ta ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġdocument Reference Ġ-> ĠLog . d ("[ NEW DOCUMENT ]", Ġ" Document Snapshot Ġadded Ġwith ĠID : Ġ${ document Reference . id }") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe Ġ-> ĠLog . w ("[ NEW DOCUMENT - ERROR ]", Ġ" Error Ġadding Ġdocument ", Ġe ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ