package Ġcom . sa arth ak . pro teams Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . google . firebase . Timestamp Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġcom . sa arth ak . pro teams . constants . Constants Ċ import Ġcom . sa arth ak . pro teams . constants . Constants . Image Ċ import Ġcom . sa arth ak . pro teams . constants . Constants . Mobile Ċ import Ġcom . sa arth ak . pro teams . constants . Constants . Name Ċ import Ġcom . sa arth ak . pro teams . model . User Ċ import Ġcom . sa arth ak . pro teams . util . Base Activity Ċ import Ġcom . sa arth ak . pro teams . util . Fire Store Class Ċ import Ġkotlinx . android . synt hetic . main . activity _ edit _ profile .* Ċ Ċ class ĠEdit Profile Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġimg Uri : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdown Img Uri : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Details : ĠUser ĊĊĠĠĠ Ġprivate Ġval Ġstorage Reference Ġ= ĠFirebase Storage . getInstance () ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp ActionBar (){ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( ep _ toolbar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġact Bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġif ( act Bar Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġact Bar . set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġact Bar . set Home As Up Indicator ( R . drawable . ic _ back ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġep _ toolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Data ( cur User : ĠUser ){ ĊĠĠĠĠĠĠĠ Ġuser Details Ġ= Ġcur User ĊĊĠĠĠĠĠĠĠ Ġep _ name _ et . setText ( cur User . name ) ĊĠĠĠĠĠĠĠ Ġep _ email _ et . setText ( cur User . email ) ĊĠĠĠĠĠĠĠ Ġif ( cur User . mobile Ġ!= Ġ- 1 L ) Ġep _ mob _ et . setText ( cur User . mobile . toString ()) ĊĊĠĠĠĠĠĠĠ ĠG lide ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( cur User . img ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ edit _ img ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( edit _ iv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload Img (){ ĊĠĠĠĠĠĠĠ Ġshow Prog Dialog () ĊĊĠĠĠĠĠĠĠ Ġif ( img Uri Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Ġ= Ġstorage Reference . reference . child (" User Img _${ Timestamp . now (). seconds }. jpeg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref . put File ( img Uri !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Prog Dialog () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" img Ġurl ", Ġ" upload Img : Ġ" Ġ+ Ġit . metadata !!. reference !!. download Url . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . metadata !!. reference !!. download Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdown Img Uri Ġ= Ġit . toString () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" img Ġuri ", Ġ" upload Img : Ġ$ it ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo : Ġupdate Ġuser Ġprofile ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Profile () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Prog Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Sn ackBar ("${ it . message }, ĠPlease Ġtry Ġagain Ġlater Ġ! ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Profile (){ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠHashMap < String , ĠAny >() ĊĊĠĠĠĠĠĠĠ Ġif ( down Img Uri . isNotEmpty () Ġ&& Ġ! TextUtils . equals ( user Details . img , Ġdown Img Uri )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser [ Image ] Ġ= Ġdown Img Uri ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif (! Ġep _ name _ et . text . toString (). equals ( user Details . name )) Ġuser [ Name ] Ġ= Ġep _ name _ et . text . toString () ĊĠĠĠĠĠĠĠ Ġif (! Ġep _ mob _ et . text . toString (). equals ( user Details . mobile . toString ())) Ġuser [ Mobile ] Ġ= Ġep _ mob _ et . text . toString (). to Long () ĊĊĠĠĠĠĠĠĠ ĠFire Store Class (). update UserData ( this , Ġuser ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprofile Update Success (){ ĊĠĠĠĠĠĠĠ Ġhide Prog Dialog () ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ edit _ profile ) ĊĊĠĠĠĠĠĠĠ ĠsetUp ActionBar () ĊĊĠĠĠĠĠĠĠ ĠFire Store Class (). signIn User ( this ) ĊĊĠĠĠĠĠĠĠ Ġedit _ iv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Context Compat . check Self Permission ( this , ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo Ġ: Ġget Ġimage Ġfrom Ġstorage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetImage ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . READ _ EXTERNAL _ STORAGE ), ĠConstants . READ _ STORAGE _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġep _ update B . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( img Uri Ġ!= Ġnull ) Ġupload Img () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Prog Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Profile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĊĠĠĠĠĠĠĠ Ġif ( request Code Ġ== ĠConstants . READ _ STORAGE _ CODE Ġ&& Ġgrant Results . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( grant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo Ġ: Ġget Ġimage Ġfrom Ġstorage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetImage ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error Sn ackBar (" Permission ĠDen ied Ġ! ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif ( result Code Ġ== ĠRESULT _ OK Ġ&& Ġrequest Code Ġ== ĠConstants . IMAGE _ REQ _ CODE ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( data !!. data Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Uri Ġ= Ġdata . data !! ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ iv . setImage URI ( img Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }