package Ġid . can war . ys ala . fragments Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġid . can war . ys ala . R Ċ import Ġid . can war . ys ala . activities . SignIn Activity Ċ import Ġid . can war . ys ala . helpers . FIRE BASE _ USERS Ċ import Ġid . can war . ys ala . models . User Ċ import Ġkotlinx . android . synt hetic . main . fragment _ profile . view .* Ċ Ċ class ĠProfile Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview : ĠViewGroup ĊĠĠĠ Ġprivate Ġval Ġfirebase Database Ġ= ĠFirebase Database . getInstance () ĊĠĠĠ Ġprivate Ġval Ġfirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠ Ġprivate Ġvar Ġuser : ĠUser ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġview Ġ= Ġ( in flater . inflate ( R . layout . fragment _ profile , Ġcontainer , Ġfalse ) Ġas ĠViewGroup ). apply Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġload Profile Data ( view ) ĊĠĠĠĠĠĠĠ Ġ// Default ĠState : ĊĠĠĠĠĠĠĠ Ġview . edit _ name . visibility = View . GONE ĊĠĠĠĠĠĠĠ Ġview . edit _ email . visibility = View . GONE ĊĠĠĠĠĠĠĠ Ġview . edit _ phone . visibility = View . GONE ĊĠĠĠĠĠĠĠ Ġview . confirm _ info _ edit . visibility = View . GONE ĊĠĠĠĠĠĠĠ Ġview . cancel _ edit . visibility = View . GONE ĊĊĠĠĠĠĠĠĠ Ġ// To Ġchange Ġprofile ĠPic ĊĠĠĠĠĠĠĠ Ġview . profile _ profile pic . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// choose Ġpicture ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Send Ġto ĠStorage ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// To Ġchange Ġuser Ġinfo ( enable Ġedit Ġtext ) ĊĠĠĠĠĠĠĠ Ġview . profile _ change _ info . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Disable ĠIcon : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ email . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ profile . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ phone . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ logout . visibility = View . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ change _ info . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ change _ text . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Disable ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ fullname . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ email address . visibility = View . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ phon enumber . visibility = View . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ name . hint Ġ= Ġuser ?. fullName . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ email . hint Ġ= Ġuser ?. email . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ phone . hint Ġ= Ġuser ?. phone . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Enable ĠEdit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ name . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ email . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ phone . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . confirm _ info _ edit . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . cancel _ edit . visibility = View . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Todo : Ġcancel Ġedit ĊĠĠĠĠĠĠĠ Ġview . cancel _ edit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Remove Ġedit Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ name . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ email . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ phone . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . confirm _ info _ edit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . cancel _ edit . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Default ĠState : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ change _ info . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ change _ text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ fullname . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ email address . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ phon enumber . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Enable ĠIcon : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ email . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ profile . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ phone . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ logout . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Edit ĠC anceled ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Todo : Ġto Ġconfirm Ġuser Ġinfo Ġchange ĊĠĠĠĠĠĠĠ Ġview . confirm _ info _ edit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// send Ġto ĠDB Ġand Ġupdate Ġprofile ĠUI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew name Ġ= Ġview . edit _ name . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew email = view . edit _ email . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew phone = view . edit _ phone . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Filled = false ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new name . isBlank () || new email . isBlank () || new phone . isBlank ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" You Ġare Ġrequired Ġto Ġfilling Ġeach Ġof Ġthe Ġtext box !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// update Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuid Ġ= Ġ Ġfirebase Auth . currentUser !!. uid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdatabase Reference Ġ= Ġfirebase Database . reference // getReference ("$ FIRE BASE _ USERS /$ uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Reference . child (" users "). child ( uid ). child (" fullName "). setValue ( new name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Reference . child (" users "). child ( uid ). child (" email "). setValue ( new email ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Reference . child (" users "). child ( uid ). child (" phone "). setValue ( new phone ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Filled = true ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Filled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Remove Ġedit Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ name . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ email . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . edit _ phone . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . confirm _ info _ edit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . cancel _ edit . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Default ĠState : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ change _ info . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ change _ text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ fullname . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ email address . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ phon enumber . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Enable ĠIcon : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ email . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ profile . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . icon _ phone . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ logout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// To Ġsign Ġout ĊĠĠĠĠĠĠĠ Ġview . profile _ logout . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Out () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Addition : ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Image Option Dialog ue (){ ĊĠĠĠĠĠĠĠ Ġ// TODO : ĠNot Ġyet ĠImplemented ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsign Out (){ ĊĠĠĠĠĠĠĠ Ġfirebase Auth . sign Out () ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠSign In Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠĠĠĠĠ Ġactivity ?. startActivity ( intent ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Profile Data ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuid Ġ= Ġ Ġfirebase Auth . currentUser !!. uid ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Reference Ġ= Ġfirebase Database . getReference ("$ FIRE BASE _ USERS /$ uid ") ĊĠĠĠĠĠĠĠ Ġdatabase Reference . add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= Ġsnapshot . getValue ( User :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ fullname . text Ġ= Ġ"${ user !!. fullName }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ email address . text Ġ= Ġ"${ user !!. email }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ phon enumber . text Ġ= Ġ"${ user !!. phone }" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( error : ĠDatabase Error ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠ Ġ/* ĊĠĠĠĠĠĠ Ġval Ġuser = Firebase . auth . currentUser ĊĊĠĠĠĠĠĠĠ Ġuser ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ fullname . text Ġ= Ġuser . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ email address . text = user . email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . profile _ phon enumber . text = user . phoneNumber ĊĊĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : Not ĠImplemented ĠY et ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user . image Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( user . image ). into ( view . profile _ profile pic ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} Ċ */ ĊĠĠĠ Ġ} Ċ }