package Ġcom . an sh deep . kotlin messenger . ui . register Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġcom . an sh deep . kotlin messenger . Fragment . MainActivity Ċ import Ġcom . an sh deep . kotlin messenger . R Ċ import Ġcom . an sh deep . kotlin messenger . messages . Latest Messages Activity Ċ import Ġcom . an sh deep . kotlin messenger . models . User Ċ import Ġcom . an sh deep . kotlin messenger . ui . login . Login Activity Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġkotlinx . android . synt hetic . main . activity _ register .* Ċ import Ġjava . util .* Ċ Ċ class ĠRegister Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġselected Photo Uri : ĠUri ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠRegister Activity :: class . java . simple Name !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ register ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. display Options Ġ= ĠAction Bar . DISPLAY _ SHOW _ CUSTOM ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Custom View ( R . layout . abs _ layout ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. elevation Ġ= Ġ 0 . 0 f ĊĊĠĠĠĠĠĠĠ Ġregister _ button _ register . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Registration () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalready _ have _ account _ text _ view . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . enter , ĠR . anim . exit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġselect photo _ button _ register . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Imagen Ġseleccion ada ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġand Ġresize Ġprofile Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Column Ġ= ĠarrayOf ( Media Store . Images . Media . DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver . query ( selected Photo Uri !! , ĠfilePath Column , Ġnull , Ġnull , Ġnull )?. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . moveTo First () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcolumnIndex Ġ= Ġit . getColumnIndex ( filePath Column [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpicture Path Ġ= Ġit . getString ( column Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġpicture Ġchosen Ġfrom Ġcamera Ġrotate Ġby Ġ 2 7 0 Ġdegrees Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( picture Path . contains (" DC IM ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( selected Photo Uri ). rotate ( 2 7 0 f ). into ( select photo _ image view _ register ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( selected Photo Uri ). rotate ( 1 8 0 f ). into ( select photo _ image view _ register ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( selected Photo Uri ). rotate ( 9 0 f ). into ( select photo _ image view _ register ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( selected Photo Uri ). into ( select photo _ image view _ register ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect photo _ button _ register . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġperform Registration () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġemail _ edit text _ register . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword _ edit text _ register . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġname _ edit text _ register . text . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( email . isEmpty () Ġ|| Ġpassword . isEmpty () Ġ|| Ġname . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Por Ġfavor Ġl lene Ġtodos Ġlos Ġcampos ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selected Photo Uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Por Ġfavor Ġse lecc ine Ġuna Ġfoto ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalready _ have _ account _ text _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġloading _ view . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirebase ĠAuthentication Ġto Ġcreate Ġa Ġuser Ġwith Ġemail Ġand Ġpassword ĊĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). createUser With Email And Password ( email , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Successful ) Ġreturn @ add On Complete Listener ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġelse Ġif Ġsuccessful ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Usuario Ġc read o : Ġ${ it . result !!. user ?. uid }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Image To Firebase Storage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( ĠIntent ( this , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" F alla , Ġusuario Ġno Ġc read o : Ġ${ it . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready _ have _ account _ text _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ"${ it . message }", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload Image To Firebase Storage () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Photo Uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsave Ġuser Ġwithout Ġphoto ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave User To Firebase Database ( null ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠFirebase Storage . getInstance (). getReference ("/ images /$ filename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref . put File ( selected Photo Uri !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Imagen Ġc arg ada Ġcon Ġexit o : Ġ${ it . metadata ?. path }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Nested Lambda Shadow ed Implicit Parameter ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref . download Url . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" File ĠLocation : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave User To Firebase Database ( it . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Error Ġal Ġc argar Ġimagen : Ġ${ it . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready _ have _ account _ text _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave User To Firebase Database ( profile ImageUrl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠFirebase Auth . getInstance (). uid Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠFirebase Database . getInstance (). getReference ("/ users /$ uid ") ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġif Ġ( profile ImageUrl Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ( uid , Ġname _ edit text _ register . text . toString (), Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ( uid , Ġname _ edit text _ register . text . toString (), Ġprofile ImageUrl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġref . setValue ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Final mente Ġguard ado Ġen Ġbase Ġde Ġdatos ĠFirebase ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( MainActivity @ this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK . or ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . enter , ĠR . anim . exit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Error Ġal Ġestable cer Ġvalor : Ġ${ it . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready _ have _ account _ text _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ