package Ġcom . w aj ah at kar im 3 . chat y Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . am uly ak h are . text drawable . Text Drawable Ċ import Ġcom . am uly ak h are . text drawable . util . Color Generator Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . target . Simple Target Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . bump tech . glide . request . transition . Transition Ċ import Ġcom . co met chat . pro . core . Come t Chat Ċ import Ġcom . co met chat . pro . core . Users Request Ċ import Ġcom . co met chat . pro . exceptions . Come t Chat Exception Ċ import Ġcom . co met chat . pro . models . User Ċ import Ġcom . google . android . material . card . Material Card View Ċ Ċ class ĠContact s Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġre cycler Contacts : ĠRecyclerView ĊĠĠĠ Ġlateinit Ġvar Ġprogress Loading : ĠProgress Bar ĊĠĠĠ Ġlateinit Ġvar Ġlayout Manager : ĠLinearLayoutManager ĊĠĠĠ Ġlateinit Ġvar Ġre cycler Adapter : ĠContact s Recycler Adapter ĊĠĠĠ Ġvar Ġcontacts List Ġ= Ġarray ListOf < User Model >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ contacts ) ĊĊĠĠĠĠĠĠĠ Ġsetup Views () ĊĠĠĠĠĠĠĠ Ġload All Users () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġfor Ġ( user Ġin Ġcontacts List ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCome t Chat . remove User Listener ( get Unique Listener Id ( user . uid )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Views () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġprogress Ġbar ĊĠĠĠĠĠĠĠ Ġprogress Loading Ġ= ĠfindViewById ( R . id . progress Loading ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġre cycler Contacts Ġ= ĠfindViewById ( R . id . recycler Contacts ) ĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( this , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġre cycler Contacts . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġre cycler Adapter Ġ= ĠContact s Recycler Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġre cycler Contacts . adapter Ġ= Ġre cycler Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ contacts , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item ?. itemId ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu Profile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġintent Ġ= ĠIntent ( this , ĠProfile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload All Users () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠShow ĠProgress ĠBar ĊĠĠĠĠĠĠĠ Ġprogress Loading . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġre cycler Contacts . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġ// ĠLoad ĠAll ĠUsers Ġfrom ĠCome t ĠChat ĊĠĠĠĠĠĠĠ Ġvar Ġusers Request Ġ= ĠUsers Request . Users RequestBuilder (). set Limit ( 1 0 ). build () ĊĠĠĠĠĠĠĠ Ġusers Request . fetch Next ( object Ġ: ĠCome t Chat . Callback Listener < List < User >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( users List : ĠList < User > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( users List Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlogged In User Ġ= ĠCome t Chat . get LoggedIn User () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( user Ġin Ġusers List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġadd Ġyourself Ġ( logged Ġin Ġuser ) Ġin Ġthe Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( logged In User . uid Ġ!= Ġuser . uid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontacts List . add ( user . convertTo User Model ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd ĠOnline / Offline ĠListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCome t Chat . add User Listener ( get Unique Listener Id ( user . uid ), Ġobject Ġ: ĠCome t Chat . User Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon User Offline ( offline User : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on User Offline ( offline User ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch User With Id ( contacts List , Ġit . uid )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontacts List [ it ]. status Ġ= Ġ" offline " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler Adapter ?. notify Item Changed ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon User Online ( user : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on User Online ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch User With Id ( contacts List , Ġit . uid )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontacts List [ it ]. status Ġ= Ġ" online " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler Adapter ?. notify Item Changed ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe ĠRe cycler ĠAdapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Contacts Activity , Ġ" Couldn 't Ġload Ġthe Ġusers !", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHide ĠProgress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Loading . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler Contacts . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( exception : ĠCome t Chat Exception ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHide ĠProgress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Loading . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler Contacts . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Contacts Activity , Ġexception ?. localized Message Ġ?: Ġ" Unknown Ġerror Ġoccurred !", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Dummy Data () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( User Model (" John ĠDoe ", Ġ" Online ", Ġ" https :// cdn . pix ab ay . com / photo / 2 0 1 3 / 0 7 / 1 3 / 1 0 / 0 7 / man - 1 5 6 5 8 4 _ 9 6 0 _ 7 2 0 . png ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( User Model (" Alex a ĠJohn son ", Ġ" Offline ", Ġ" https :// pre views . 1 2 3 rf . com / images / jul ias art / jul ias art 1 7 0 4 / jul ias art 1 7 0 4 0 0 0 2 2 / 7 5 4 0 6 2 7 0 - vector - g irl - icon - w oman - avatar - face - icon - car to on - style -. jpg ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( User Model (" Rob ert ĠSmith ", Ġ" Online ", Ġ" https :// i . pin img . com / original s / a 7 / 0 e / 1 6 / a 7 0 e 1 6 7 5 c 7 bc 0 0 1 f 1 5 7 8 aa 7 6 bb 0 a 7 8 1 9 . png ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( User Model (" Ste ve ĠBo am ", Ġ" Online ", Ġ" https :// cdn 1 . icon finder . com / data / icons / people - faces - 2 / 5 1 2 / 1 1 - 5 1 2 . png ")) ĊĠĠĠĠĠĠĠ Ġre cycler Adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠContact s Recycler Adapter ( val Ġcontext : ĠContext ) Ġ: ĠRecyclerView . Adapter < Contacts Recycler Adapter . Contact ViewHolder >() ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠContact ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠContact ViewHolder ( LayoutInflater . from ( this @ Contacts Activity ). inflate ( R . layout . contact _ item _ layout , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġcontacts List . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠContact ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser Ġ= Ġcontacts List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind Item ( user ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġintent Ġ= ĠIntent ( context , ĠChat Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" uid ", Ġuser . uid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" name ", Ġuser . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" status ", Ġuser . status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" photo ", Ġuser . photoUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠContact ViewHolder Ġ: ĠRecyclerView . ViewHolder ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtxt Username : ĠAppCompat TextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtxt Status : ĠAppCompat TextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimg Contact Photo : ĠAppCompat ImageView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser Item Click Callback : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor ( item View : ĠView ) Ġ: Ġsuper ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Username Ġ= ĠitemView . findViewById ( R . id . txt Username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Status Ġ= ĠitemView . findViewById ( R . id . txt Status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Contact Photo Ġ= ĠitemView . findViewById ( R . id . img Contact Photo ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcard Root Layout Ġ= ĠitemView . findViewById < Constraint Layout >( R . id . card Root Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Root Layout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Item Click Callback ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbind Item ( user Model : ĠUser Model , Ġcallback : Ġ() Ġ-> ĠUnit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Item Click Callback Ġ= Ġcallback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Username . text Ġ= Ġuser Model . name ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Model . photoUrl Ġ!= Ġnull Ġ&& Ġ! user Model . photoUrl . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLoad ĠAvatar ĠImage Ġif Ġany ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( user Model . photoUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( img Contact Photo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGenerate ĠLetter ĠAvatar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Avatar Image ( user Model . name [ 0 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Status . text Ġ= Ġuser Model . status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Model . status . equals (" online ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Status . setTextColor ( context . resources . getColor ( R . color . color Online )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Status . setTextColor ( context . resources . getColor ( R . color . color Offline )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġset Avatar Image ( letter : ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgenerator Ġ= ĠColor Generator . MAT ERIAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= Ġgenerator . random Color ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdrawable Ġ= ĠText Drawable . builder (). build Rect ( letter , Ġcolor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Contact Photo . setImage Drawable ( drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ