package Ġcom . code chef . ff ds Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context Wrapper Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Image Decoder Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . code chef . ff ds . databinding . Update Profile Activity Binding Ċ import Ġcom . c un or az . tag view . Tag Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . RequestBody Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Response Ċ import Ġjava . io .* Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList ĊĊ Ċ class ĠUpdate Profile Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠUpdate Profile Activity Binding ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠUser ViewModel ĊĠĠĠ Ġvar Ġuser Ġ= ĠProfile () ĊĠĠĠ Ġprivate Ġval Ġtags Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġimage Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġimage Array Ġ= Ġbyte ArrayOf () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠUpdate Profile Activity Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ViewModel Factory ( application ) ĊĠĠĠĠĠĠĠ Ġ). get ( User ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠsetDefault Data () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Launcher Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister For Activity Result ( Activity Result Contracts . Start Activity For Result ()) Ġ{ Ġresult Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresult . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage URI : ĠUri Ġ= Ġdata ?. data !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġ 2 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Decoder . decode Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Decoder . create Source ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage URI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . get Bitmap ( content Resolver , Ġimage URI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . dp . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , Ġstream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Array Ġ= Ġstream . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// image Ġ= ĠBase 6 4 . encode ToString ( stream . toByteArray (), ĠBase 6 4 . DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Launcher 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister For Activity Result ( Activity Result Contracts . Start Activity For Result ()) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresult . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġdata ?. get Bundle Extra (" bundle ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . copy ( slot Ġ= Ġargs ?. get Serializable (" table Map ") Ġas Ġjava . util . ArrayList < java . util . ArrayList < HashMap < String , ĠAny >> >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Dp . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgallery Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgallery . type Ġ= Ġ" image /* " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgallery . action Ġ= ĠIntent . ACTION _ GET _ CONTENT ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Launcher . launch ( Intent . create Chooser ( gallery , Ġ" Select Ġprofile Ġphoto ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Tags ( tags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag View 2 . setOn Tag Delete Listener Ġ{ Ġ_, Ġtag , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags . remove ( tag . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag View 2 . remove ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Time Table . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Update Profile Activity , ĠTime Table :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Launcher 2 . launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Array Ġ= Ġbyte ArrayOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . profile _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdp . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Profile . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbio Ġ= Ġbio . text . toString (). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġyour Name . text . toString (). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone Ġ= Ġphone No Edit . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpectations Ġ= Ġtags , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Image Ġ= Ġimage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Array Ġ= Ġimage Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate User ( user : ĠProfile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDialog ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġlayout Inflater . inflate ( R . layout . loading _ dialog , Ġnull ) ĊĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . text ). text Ġ= Ġ" Saving ..." ĊĠĠĠĠĠĠĠ Ġdialog . set ContentView ( view ) ĊĠĠĠĠĠĠĠ Ġdialog . window ?. setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġval Ġom Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġom . writeValue AsString ( user ) ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠRequest Body . create (" application / json ; Ġcharset = utf - 8 ". to MediaType OrNull (), Ġfields ) ĊĠĠĠĠĠĠĠ ĠApi . ret rofit Service . update ( user . token , Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . enqueue ( object Ġ: Ġretrofit 2 . Callback < ResponseBody ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < ResponseBody ? >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġt . message , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < ResponseBody ? >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < ResponseBody ?> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . message () Ġ== Ġ" OK ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update User ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( base Context , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġresponse . message (), ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetDefault Data () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= Ġget SharedPreferences (" MY ĠP REF S ", ĠMODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getUser Data ( prefs . getString (" id ", Ġ"") !! ). observe ( this @ Update Profile Activity ) Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Update Profile Activity . user Ġ= Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tag Ġin Ġuser . expect ations ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags . add ( tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbio . setText ( user . bio ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyour Name . setText ( user . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone No Edit . text Ġ= Ġuser . phone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag View 2 . setTag Margin ( 1 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag View 2 . setText Padding Top ( 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag View 2 . set text Padding Bottom ( 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tag Ġin Ġtags ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag View 2 . add Tag ( getNew Tag ( tag )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġif ( user . user Array . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode ByteArray ( user . user Array , Ġ 0 , Ġuser . user Array . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . profile _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdp . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Tags ( tags : ĠArrayList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġadd Tags . text . toString (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tag . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! tags . contains ( tag )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag View 2 . add Tag ( getNew Tag ( tag )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags . add ( tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Update Profile Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tag Ġalready Ġpresent ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Tags . text Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave To Internal Storage ( bitmap Image : ĠBitmap ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcw Ġ= ĠContext Wrapper ( application Context ) ĊĠĠĠĠĠĠĠ Ġval Ġdirectory : ĠFile Ġ= Ġcw . get Dir (" FF DS ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġmy Path Ġ= ĠFile ( directory , Ġ" profile Image . jpg ") ĊĠĠĠĠĠĠĠ Ġvar Ġf os : ĠFileOutputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf os Ġ= ĠFileOutputStream ( my Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Image . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , Ġf os ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdirectory . absolute Path ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget New Tag ( text : ĠString ): ĠTag Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= ĠTag ( text ) ĊĠĠĠĠĠĠĠ Ġtag . is De letable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtag . layout Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( this , ĠR . color . color Primary ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtag ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( FileNotFoundException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġload Image From Storage ( path : ĠString ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠFile ( path , Ġ" profile Image . jpg ") ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap Factory . decode Stream ( FileInputStream ( f )) ĊĠĠĠ Ġ} Ċ } Ċ