package Ġcom . j erry . ch itch at čĊč Ċ import Ġandroid . app . Activity č Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . graphics . drawable . Bitmap Drawable č Ċ import Ġandroid . net . Uri č Ċ import Ġandroidx . appcompat . app . AppCompatActivity č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . os . Parcelable č Ċ import Ġandroid . provider . Media Store č Ċ import Ġandroid . util . Log č Ċ 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 . parcel . Parcel ize č Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* č Ċ import Ġjava . util .* čĊč Ċ class ĠRegister Activity Ġ: ĠAppCompatActivity () Ġ{ čĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) čĊčĊĠĠĠĠĠĠĠ Ġregister but t ton . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform register () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġalready account . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġregister _ btn . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " čĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 0 ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġvar ĠSelected Photo Uri : ĠUri ? Ġ= Ġnull čĊĠĠĠ Ġ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 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile _ image . setImage Bitmap ( bitmap ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister _ btn . alpha Ġ= Ġ 0 f čĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġval Ġbit Map Drawable Ġ= ĠBitmap Drawable ( bitmap ) čĊĠĠĠĠĠĠĠĠĠĠ Ġ// Ġregister _ btn . setBackground Drawable ( bit Map Drawable ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġupload Image To Firebase Storage () Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( Selected Photo Uri Ġ== Ġnull ) Ġreturn čĊĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= ĠUUID . randomUUID (). toString () čĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠFirebase Storage . getInstance (). getReference ("/ image /$ filename ") čĊĠĠĠĠĠĠĠ Ġref . put File ( Selected Photo Uri !! ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref . download Url . add On Success Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave User To Firebase Database ( it . toString ()) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġperform register () Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġemail . text . toString () čĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword . text . toString () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( email . isEmpty () Ġ|| Ġpassword . isEmpty ()) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" please Ġenter Ġemail Ġor Ġpassword ", ĠToast . LENGTH _ SHORT ). show () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) čĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊčĊĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). createUser With Email And Password ( email , Ġpassword ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Successful ) Ġreturn @ add On Complete Listener čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Image To Firebase Storage () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" failure Ġloading Ġthe Ġperson Ġ${ it . message }", ĠToast . LENGTH _ SHORT ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsave User To Firebase Database ( profile ImageUrl : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠFirebase Auth . getInstance (). uid Ġ?: Ġ"" čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠFirebase Database . getInstance (). getReference ("/ users /$ uid ") čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser ( uid , Ġusername . text . toString (), Ġprofile ImageUrl ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġref . setValue ( user ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Register Activity ", Ġ" uploaded Ġto ĠFirebase Ġdatabase ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMessage Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Register Activity ", Ġ" Failed Ġto Ġupload Ġto ĠFirebase Ġdatabase ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Parcel ize čĊĠĠĠ Ġclass ĠUser ( val Ġuid : ĠString , Ġval Ġusername : ĠString , Ġval Ġprofile ImageUrl : ĠString ): Parcelable Ġ{ čĊĠĠĠĠĠĠĠ Ġconstructor () Ġ: Ġthis ("", Ġ"", Ġ"") čĊĠĠĠ Ġ} čĊčĊ čĊčĊčĊ