package Ġcn . mi jack . image drive . ui Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . support . design . widget . Coordinator Layout Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . design . widget . TextInput Layout Ċ import Ġandroid . support . v 4 . view . View Compat Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġcn . mi jack . image drive . R Ċ import Ġcn . mi jack . image drive . base . Base Activity Ċ import Ġcn . mi jack . image drive . util . Text Helper Ċ import Ġcn . mi jack . image drive . util . Utils Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . UserProfile Change Request Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġde . hd od enh of . circle image view . Circle ImageView Ċ Ċ class ĠProfile Activity Ġ: ĠBase Activity (), ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġfirebase Auth : ĠFirebase Auth ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġtoolbar : ĠToolbar ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtitle Info : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcircle ImageView : ĠCircle ImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġselect Avatar : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġedit Nick Name : ĠText Input Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġedit Email : ĠText Input Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcoord inator Layout : ĠCoord inator Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdialog : ĠMaterial Dialog ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ profile ) ĊĠĠĠĠĠĠĠ Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġtitle Info Ġ= ĠfindViewById < TextView >( R . id . title Info ) ĊĠĠĠĠĠĠĠ Ġcoord inator Layout Ġ= ĠfindViewById < Coordinator Layout >( R . id . coordinator Layout ) ĊĠĠĠĠĠĠĠ Ġcircle ImageView Ġ= ĠfindViewById < Circle ImageView >( R . id . circle ImageView ) ĊĠĠĠĠĠĠĠ Ġselect Avatar Ġ= ĠfindViewById < Button >( R . id . select Avatar ) ĊĠĠĠĠĠĠĠ Ġedit Nick Name Ġ= ĠfindViewById < TextInput Layout >( R . id . edit Nick Name ) ĊĠĠĠĠĠĠĠ Ġedit Email Ġ= ĠfindViewById < TextInput Layout >( R . id . edit Email ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ ĠView Compat . set Transition Name ( circle ImageView , Ġ" profile ") ĊĠĠĠĠĠĠĠ Ġfirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfirebase Auth !!. currentUser ĊĠĠĠĠĠĠĠ Ġedit Nick Name !!. edit Text !!. setText ( user !!. displayName ) ĊĠĠĠĠĠĠĠ Ġedit Email !!. edit Text !!. setText ( user . email ) ĊĠĠĠĠĠĠĠ Ġprintln (" photo Ġuri :" Ġ+ Ġuser . photoUrl !! ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! Utils . isEmpty ( user . photoUrl !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( user . photoUrl ). into ( circle ImageView !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle ImageView !!. setImage Resource ( R . drawable . ic _ empty _ profile ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġselect Avatar !!. setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcircle ImageView !!. setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ profile , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action Save Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Nick Name !!. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠUser Profile Change Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DisplayName ( Text Helper . getText ( edit Nick Name !! )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Auth !!. currentUser !!. update Profile ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener ( this ) Ġ{ Ġresult Ġ-> ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . settings _ failure , ĠSn ackbar . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener ( this ) Ġ{ Ġresult Ġ-> ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . settings _ success , ĠSn ackbar . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ Ġresult Ġ-> Ġedit Nick Name !!. isEnabled Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( v . id Ġ== ĠR . id . select Avatar Ġ|| Ġv . id Ġ== ĠR . id . circle ImageView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoto Pick Image () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ P ICK _ IMAGE Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// todo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Uri Ġ= Ġdata . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= ĠMaterial Dialog . Builder ( this ). title ( R . string . setting _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. progress ( true , Ġ 1 0 0 ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfirebase Auth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuid Ġ= Ġuser !!. uid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirebase Storage Ġ= ĠFirebase Storage . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreference Ġ= Ġfirebase Storage . reference . child (" avatars "). child ( uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreference . put File ( image Uri ). add On Success Listener Ġ{ Ġtask Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownload Url Ġ= Ġtask Snapshot . download Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirebase Auth 1 Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠUser Profile Change Request . Builder (). set Photo Uri ( download Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Auth 1 . currentUser !!. update Profile ( request ). add On Success Listener Ġ{ Ġa Void Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . setting _ avatar _ success , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirebase User Ġ= ĠFirebase Auth . getInstance (). currentUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this @ Profile Activity ). load ( firebase User !!. photoUrl ). into ( circle ImageView !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ Ġe Ġ-> ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . setting _ avatar _ failure , ĠToast . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ Ġe Ġ-> ĠSn ackbar . make ( coordinator Layout !! , ĠR . string . upload _ avatar _ failure , ĠToast . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgoto Pick Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK , ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ P ICK _ IMAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Profile Activity " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠREQUEST _ P ICK _ IMAGE Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ } Ċ