package Ġcom . db zf an 2 0 0 gmail . firebase messenger Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġregister _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Button () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ ĠtextView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Intent () ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd _ image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Photo () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Button () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġemail . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġname . text . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( email . isEmpty () Ġ|| Ġpassword . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Please ĠEnter ĠEmail Ġand ĠPassword ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Create User ( email , Ġpassword ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogin Intent (){ ĊĊĠĠĠĠĠĠĠ Ġval Ġlogin Intent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( login Intent ) ĊĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfirebase Create User ( email : ĠString , Ġpassword : ĠString ){ ĊĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). createUser With Email And Password ( email , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . is Successful ) Ġ Ġreturn @ add On Complete Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" User Ġwas Ġcreated ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Image To Fire Base () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ. add On Failure Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" User Ġwas Ġnot Ġable Ġto Ġbe Ġcreated ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġselected Photo Uri : ĠUri ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġupload Image To Fire Base (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Photo Uri Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠFirebase Storage . getInstance (). getReference ("/ images /$ filename ") ĊĊĠĠĠĠĠĠĠ Ġref . put File ( selected Photo Uri !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref . download Url . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave User To Database ( it . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave User To Database ( profile ImageUrl : ĠString ) Ġ{ ĊĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠFirebase Auth . getInstance (). uid Ġ?: Ġ"" ĊĊĠĠĠĠĠĠ Ġval Ġref Ġ= ĠFirebase Database . getInstance (). getReference ("/ users /$ uid ") ĊĊĠĠĠĠĠĠ Ġvar Ġuser Ġ= ĠUser Model ( uid , Ġpassword . text . toString (), Ġemail . text . toString (), Ġname . text . toString (), Ġprofile ImageUrl ) ĊĊĠĠĠĠĠĠ Ġref . setValue ( user ) ĊĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLatest est Messages :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= Ġ( Intent . FLAG _ ACTIVITY _ CLEAR _ TASK ). or ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif ( request Code Ġ== Ġ 0 Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK Ġ&& Ġdata Ġ!= Ġnull ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Photo Uri Ġ= Ġdata . data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠMedia Store . Images . Media . get Bitmap ( content Resolver , Ġselected Photo Uri ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto _ image . setImage Bitmap ( bitmap ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ image . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Photo (){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " ĊĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 0 ) ĊĊĊĠĠĠ Ġ} Ċ Ċ } Ċ