package Ġcom . XD . fit gain . views . fragments Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . navigation . find Nav Controller Ċ Ċ import Ġcom . XD . fit gain . R Ċ import Ġcom . XD . fit gain . databinding . Fragment Log In Binding Ċ import Ġcom . XD . fit gain . databinding . Fragment Profile Binding Ċ import Ġcom . XD . fit gain . domain . data . network . Repo Ċ import Ġcom . XD . fit gain . model . Bus ines Ċ import Ġcom . XD . fit gain . views . Navigation Container Home Ċ import Ġcom . XD . fit gain . views . Splash Screen Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . firestore . auth . User Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġcom . tap ad oo . aler ter . A ler ter Ċ import Ġd max . dialog . Sp ots Dialog Ċ import Ġkotlinx . android . synt hetic . main . category _ recycler _ style . view .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ profile .* Ċ import Ġjava . util .* Ċ Ċ class ĠProfile Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġauth : ĠFirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠ Ġprivate Ġval Ġfirebase Fire store : ĠFirebase Fire store Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Profile Binding ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠcurrentUser : Ġcom . XD . fit gain . model . User ĊĠĠĠ Ġlateinit Ġvar Ġalert Dialog : ĠAlertDialog ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Profile Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠSp ots Dialog . Builder (). set Context ( activity ). build () ĊĠĠĠĠĠĠĠ Ġget UserData () ĊĊĊĠĠĠĠĠĠĠ Ġbinding . btn C err ar S es ion . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth . sign Out () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( activity , ĠSpl ash Screen :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . circle ImageView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Save Change User Account . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . nombre Ġ= Ġbinding . et Nombre Usuario . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . weight Ġ= Ġbinding . et Pes o . text . toString (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . height Ġ= Ġbinding . et Alt ura . text . toString (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . ed ad Ġ= Ġbinding . et Ed ad . text . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . goal Step Ġ= Ġbinding . et Met apas os . text . toString (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Image To Firebase Storage () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// pro ced Ġto Ġshow Ġpreview Ġphoto Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Photo Uri Ġ= Ġdata . data ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( require Activity ()). load ( selected Photo Uri ). into ( binding . circle ImageView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload Image To Firebase Storage () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Photo Uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave User () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Dialog . show () ĊĊĠĠĠĠĠĠĠ Ġ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 (" PROFILE _ DEBUG ", Ġ" Suc ces fully Ġupload Ġimage : Ġ${ it . metadata ?. path }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref . download Url . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" REGISTER _ DEBUG ", Ġ" File Ġlocation : Ġ${ it }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . photoUrl Ġ= Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave User () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Photo Uri Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ler ter . create ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText (" Algo Ġs ali Ã³ Ġmal Ġ: (" ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set BackgroundColor Res ( R . color . alert _ default _ error _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave User () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirebase Fire store . collection (" Usuarios "). document ( currentUser . uid ). set ( currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ler ter . create ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText (" Â ¡ Datos Ġactual izados Ġcorrect amente !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set BackgroundColor Res ( R . color . aler ter _ default _ success _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ler ter . create ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText (" Ha Ġo cur rid o Ġun Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set BackgroundColor Res ( R . color . alert _ default _ error _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset ViewData () Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( currentUser . photoUrl ). into ( binding . circle ImageView ) ĊĠĠĠĠĠĠĠ Ġbinding . et Alt ura . setText ("${ currentUser . height }") ĊĠĠĠĠĠĠĠ Ġbinding . et Correo . setText ( currentUser . email ) ĊĠĠĠĠĠĠĠ Ġbinding . et Ed ad . setText ("${ currentUser . ed ad }") ĊĠĠĠĠĠĠĠ Ġbinding . et Nombre Usuario . setText ( currentUser . nombre ) ĊĠĠĠĠĠĠĠ Ġbinding . et Pes o . setText ("${ currentUser . weight }") ĊĠĠĠĠĠĠĠ Ġbinding . et Met apas os . setText ( currentUser . goal Step . toString ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget UserData () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirebase Fire store ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" Usuarios ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( auth . currentUser !!. uid . trim ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Snapshot Listener Ġ{ Ġdocument Snapshot , Ġfirebase Fire store Exception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( firebase Fire store Exception Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" GET _ USER _ DATA ", Ġ" Listen Ġfailed .", Ġfirebase Fire store Exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ add Snapshot Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( document Snapshot Ġ!= Ġnull Ġ&& Ġdocument Snapshot . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser Ġ= Ġdocument Snapshot . toObject ( com . XD . fit gain . model . User :: class . java ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ViewData () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" GET _ USER _ DATA ", Ġ" Current Ġdata : Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ