package Ġcom . b unk alog ic . b unk alist . Activities . Settings Activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . b unk alog ic . b unk alist . Activities . Base Activity Ċ import Ġcom . b unk alog ic . b unk alist . R Ċ import Ġcom . b unk alog ic . b unk alist . SharedPreferences . preferences Ċ import Ġcom . google . android . gms . ads . Ad Request Ċ import Ġcom . google . android . gms . ads . Ad View Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . auth . UserProfile Change Request Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġcom . google . firebase . storage . Storage Reference Ċ import Ġcom . kar umi . dex ter . Dex ter Ċ import Ġcom . kar umi . dex ter . Permission Token Ċ import Ġcom . kar umi . dex ter . listener . Permission Denied Response Ċ import Ġcom . kar umi . dex ter . listener . Permission Granted Response Ċ import Ġcom . kar umi . dex ter . listener . Permission Request Ċ import Ġcom . kar umi . dex ter . listener . single . Permission Listener Ċ import Ġkotlinx . android . synt hetic . main . activity _ edit _ profile .* Ċ import Ġorg . jetbrains . ank o .* Ċ import Ġjava . util .* Ċ Ċ class ĠEdit Profile Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoolbar : Ġandroidx . appcompat . widget . Toolbar ĊĠĠĠ Ġlateinit Ġvar Ġm Ad View Ġ: ĠAd View ĊĊĠĠĠ Ġprivate Ġval Ġm Auth : ĠFirebase Auth Ġby Ġlazy Ġ{ ĠFirebase Auth . getInstance () Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠcurrentUser : ĠFirebase User ĊĊĠĠĠ Ġprivate Ġval Ġstorage : ĠFirebase Storage Ġby Ġlazy Ġ{ ĠFirebase Storage . getInstance () Ġ} ĊĠĠĠ Ġprivate Ġval Ġstorage Ref : ĠStorage Reference Ġ= Ġstorage . reference ĊĊĊĠĠĠ Ġprivate Ġvar Ġselected Photo Uri : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġrequest Image Profile Ġ= Ġ 1 0 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ edit _ profile ) ĊĠĠĠĠĠĠĠ Ġtoolbar Ġ= ĠfindViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) ĊĊĊĊĠĠĠĠĠĠĠ Ġadd Banner Ads () ĊĠĠĠĠĠĠĠ ĠsetUp CurrentUser () ĊĠĠĠĠĠĠĠ Ġclicks Listeners () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// initial izing Ġthe Ġbanner Ġin Ġthis Ġactivity ĊĠĠĠ Ġprivate Ġfun Ġadd Banner Ads (){ ĊĠĠĠĠĠĠĠ Ġm Ad View Ġ= ĠfindViewById ( R . id . ad View Banner Activity Edit Profile ) ĊĠĠĠĠĠĠĠ Ġ// ĠAd Ġrequest Ġto Ġshow Ġon Ġthe Ġbanner ĊĠĠĠĠĠĠĠ Ġval Ġad Request Ġ= ĠAd Request . Builder (). build () ĊĠĠĠĠĠĠĠ Ġ// ĠAssoci ate Ġthe Ġrequest Ġto Ġthe Ġbanner ĊĠĠĠĠĠĠĠ Ġm Ad View . load Ad ( ad Request ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠInitial izing Ġthe ĠcurrentUser ĊĠĠĠ Ġprivate Ġfun ĠsetUp CurrentUser (){ ĊĠĠĠĠĠĠĠ ĠcurrentUser Ġ= Ġm Auth . currentUser !! ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprivate Ġfun Ġclicks Listeners (){ ĊĊĠĠĠĠĠĠĠ ĠimageView Profile . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Permission Storage Local () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Apply Changes . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuploaded Image In Storage () ĊĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Profile Name And Image Profile ( userName : ĠString , Ġimage : ĠUri ){ ĊĠĠĠĠĠĠĠ Ġval Ġuser Profile Ġ= ĠUser Profile Change Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DisplayName ( userName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Photo Uri ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠcurrentUser . update Profile ( user Profile ). add On Complete Listener ( this ){ task Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . add _ correct _ username _ and _ image _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . login _ error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCollect Ġthe Ġselected Ġimage Ġand Ġupload Ġit Ġto ĠFirebase ĠStorage Ġand ĠSave Ġthe Ġimage Ġin ĠcurrentUser . photoUrl ĊĠĠĠ Ġprivate Ġfun Ġuploaded Image In Storage (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Photo Uri Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġfb Storage Ref Ġ= Ġstorage Ref . child (" I MAGES /$ filename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfb Storage Ref . put File ( selected Photo Uri !! ). add On Success Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView Profile . setImage Bitmap ( Bitmap Factory . decode Resource ( application Context . resources , ĠR . drawable . ic _ person _ black _ 2 4 dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfb Storage Ref . download Url . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġedit _ Text _ Username . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . userName Ġ= Ġusername ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView Profile . setImage URI ( selected Photo Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . image Profile Path Ġ= Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Edit Profile Activity ", Ġ" Progress : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Profile Name And Image Profile ( username , Ġit ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Failure ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Progress Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ 1 0 0 . 0 Ġ* Ġit . bytes Transfer red Ġ/ Ġit . total Byte Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Edit Profile Activity ", Ġ" Progress : Ġ$ progress ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠTry Ġthe Ġdefault ĠApp Ġof Ġthe Ġgallery ĊĠĠĠ Ġprivate Ġfun Ġget Gallery (){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠIntent . ACTION _ P ICK ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġrequest Image Profile ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġasking Ġfor Ġpermissions ĊĠĠĠ Ġprivate Ġfun Ġcheck Permission Storage Local () Ġ{ ĊĠĠĠĠĠĠĠ ĠDex ter . with Activity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Permission ( Manifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Listener ( object : ĠPermission Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Permission Granted ( response : ĠPermission Granted Response ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Gallery () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Permission R ationale ShouldBe Shown ( permission : ĠPermission Request ?, Ġtoken : ĠPermission Token ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken ?. continue Permission Request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Permission Denied ( response : ĠPermission Denied Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Per manently Denied ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Toast ( R . string . error _ new _ user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . accept _ the _ permissions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). check () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġpicking Ġup Ġthe Ġextra Ġget Gallery ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Image Profile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Photo Uri Ġ= Ġdata !!. data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( selected Photo Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( RequestOptions . circle Crop Transform (). override ( 2 9 0 , Ġ 2 9 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( this . imageView Profile ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ