package Ġcom . co met chat . pro . u ikit . ui _ components . shared . co met chat Calls Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . co met chat . pro . constants . Come t Chat Constants Ċ import Ġcom . co met chat . pro . core . Call Ċ import Ġcom . co met chat . pro . core . Come t Chat Ċ import Ġcom . co met chat . pro . models . Base Message Ċ import Ġcom . co met chat . pro . models . Conversation Ċ import Ġcom . co met chat . pro . models . Group Ċ import Ġcom . co met chat . pro . models . User Ċ import Ġcom . co met chat . pro . u ikit . R Ċ import Ġcom . co met chat . pro . u ikit . databinding . Come t chat Call ListItem Binding Ċ import Ġcom . co met chat . pro . u ikit . ui _ resources . utils . Font Utils Ċ import Ġcom . co met chat . pro . u ikit . ui _ resources . utils . Utils Ċ import Ġcom . co met chat . pro . u ikit . ui _ settings . Feature Restriction Ċ import Ġcom . co met chat . pro . u ikit . ui _ settings . UIKit Settings Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠPurpose Ġ- ĠCall ListAdapter Ġis Ġa Ġsubclass Ġof ĠRecyclerView ĠAdapter Ġwhich Ġis Ġused Ġto Ġdisplay Ċ Ġ* Ġthe Ġlist Ġof Ġcalls . ĠIt Ġhelps Ġto Ġorgan ize Ġthe Ġlist Ġdata Ġin Ġre cyclerView . Ċ Ġ* Ċ Ġ* ĠCreated Ġon Ġ- Ġ 2 3 rd ĠMarch Ġ 2 0 2 0 Ċ Ġ* Ċ Ġ* ĠModified Ġon Ġ Ġ- Ġ 0 2 nd ĠApril Ġ 2 0 2 0 Ċ Ġ* Ċ Ġ*/ Ċ class ĠCome t Chat Calls Adapter ( context : ĠContext ) Ġ: ĠRecyclerView . Adapter < Come t Chat Calls Adapter . Call ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġprivate Ġval Ġcall List : ĠMutable List < Base Message >? Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġfont Utils : ĠFont Utils ĊĠĠĠ Ġprivate Ġval Ġlogged In User Ġ= ĠCome t Chat . get LoggedIn User (). uid ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIt Ġis Ġconstructor Ġwhich Ġtakes Ġcall List Ġas Ġparameter Ġand Ġbind Ġit Ġwith Ġcall List Ġin Ġadapter . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġis Ġa Ġobject Ġof ĠContext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcall List Ġis Ġlist Ġof Ġcalls Ġused Ġin Ġthis Ġadapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġfont Utils Ġ= ĠFont Utils . getInstance ( context ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠCall ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġcall List Row Binding : ĠCome t chat Call ListItem Binding Ġ= ĠData Binding Util . inflate ( layout Inflater , ĠR . layout . co met chat _ call _ list _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCall ViewHolder ( call List Row Binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġbind Ġthe ĠCon versation ViewHolder Ġcontents Ġwith Ġconversation Ġat Ġgiven ĊĠĠĠĠ Ġ* Ġposition . ĠIt Ġset Ġavatar , Ġname , Ġlast Message , Ġunread Message Count Ġand Ġmessage Time Ġof Ġconversation ĊĠĠĠĠ Ġ* Ġin Ġa Ġrespective ĠCon versation ViewHolder Ġcontent . ĠIt Ġchecks Ġwhether Ġconversation Ġtype Ġis Ġuser ĊĠĠĠĠ Ġ* Ġor Ġgroup Ġand Ġset Ġname Ġand Ġavatar Ġas Ġaccordingly . ĠIt Ġalso Ġchecks Ġwhether Ġlast Ġmessage Ġis Ġtext , Ġmedia ĊĠĠĠĠ Ġ* Ġor Ġfile Ġand Ġmodify Ġtxt User Message Ġview Ġaccordingly . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcall ViewHolder Ġis Ġa Ġobject Ġof ĠCon versation ViewHolder . ĊĠĠĠĠ Ġ* Ġ@ param Ġposition Ġis Ġa Ġposition Ġof Ġitem Ġin Ġre cyclerView . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠCon versation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( call ViewHolder : ĠCall ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Message Ġ= Ġcall List ! ![ position ] ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġbase Message Ġas ĠCall ĊĠĠĠĠĠĠĠ Ġvar Ġavatar : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġuid : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġtype : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġis Incoming : ĠBoolean ĊĠĠĠĠĠĠĠ Ġval Ġis Video : ĠBoolean ĊĠĠĠĠĠĠĠ Ġvar Ġis Mis sed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġcall Message Text : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġcall Type : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġcall Category : ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( call . receiver Type Ġ== ĠCome t Chat Constants . RECE IVER _ TYPE _ USER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( call . call Init iator Ġas ĠUser ). uid Ġ== Ġlogged In User ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Name Ġ= Ġ( call . call Receiver Ġas ĠUser ). name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Sender Name . text Ġ= Ġcall Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Sender Avatar . set Avatar (( call . call Receiver Ġas ĠUser ). avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ UN AN SW ER ED Ġ|| Ġcall . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ CANCEL LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . missed _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Mis sed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ RE JECT ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . rejected _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . outgoing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuid Ġ= Ġ( call . call Receiver Ġas ĠUser ). uid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Incoming Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Name Ġ= Ġ( call . call Init iator Ġas ĠUser ). name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Sender Name . text Ġ= Ġcall Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Sender Avatar . set Avatar (( call . call Init iator Ġas ĠUser )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ UN AN SW ER ED Ġ|| Ġcall . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ CANCEL LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . missed _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Mis sed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ RE JECT ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . rejected _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . incoming ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuid Ġ= Ġcall . sender . uid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Incoming Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠCome t Chat Constants . RECE IVER _ TYPE _ USER ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Sender Name . text Ġ= Ġ( call . call Receiver Ġas ĠGroup ). name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Sender Avatar . set Avatar (( call . call Receiver Ġas ĠGroup )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( call . call Init iator Ġas ĠUser ). uid Ġ== Ġlogged In User ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ UN AN SW ER ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . missed _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Mis sed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ RE JECT ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . rejected _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . incoming ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Incoming Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ UN AN SW ER ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . missed _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Mis sed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( call . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ RE JECT ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . rejected _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġcall Message Text Ġ= Ġcontext . resources . getString ( R . string . incoming ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Incoming Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuid Ġ= Ġ( call . call Receiver Ġas ĠGroup ). guid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠCome t Chat Constants . RECE IVER _ TYPE _ GROUP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( call . type Ġ== ĠCome t Chat Constants . CALL _ TYPE _ VIDEO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcall Message Text Ġ+ Ġ" Ġ" Ġ+ Ġcontext . resources . getString ( R . string . video _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ incoming _ video _ call , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Video Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Message Text Ġ= Ġcall Message Text Ġ+ Ġ" Ġ" Ġ+ Ġcontext . resources . getString ( R . string . audio _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ incoming _ call , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Video Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( is Video ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ video _ call , Ġ 0 , Ġ 0 , Ġ 0 ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Incoming Ġ&& Ġis Mis sed ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ call _ missed _ incoming _ 2 4 dp , Ġ 0 , Ġ 0 , Ġ 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Incoming Ġ&& Ġ! is Mis sed ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ call _ incoming _ 2 4 dp , Ġ 0 , Ġ 0 , Ġ 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! is Incoming Ġ&& Ġis Mis sed ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ call _ missed _ outgoing _ 2 4 dp , Ġ 0 , Ġ 0 , Ġ 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ call _ outgoing _ 2 4 dp , Ġ 0 , Ġ 0 , Ġ 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call time Tv . text Ġ= ĠUtils . getLast Message Date ( call . initi ated At ) ĊĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Message . text Ġ= Ġcall Message Text ĊĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . root . setTag ( R . string . call , Ġcall ) ĊĊĠĠĠĠĠĠĠ ĠFeature Restriction . is One On One Audio Call Enabled ( object Ġ: ĠFeature Restriction . On Success Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( p 0 : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p 0 ) Ġcall ViewHolder . call List Row Binding . call Iv . visibility Ġ= ĠView . VISIBLE Ġelse Ġcall ViewHolder . call List Row Binding . call Iv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠFeature Restriction . is One On One Video Call Enabled ( object Ġ: ĠFeature Restriction . On Success Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( p 0 : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p 0 ) Ġcall ViewHolder . call List Row Binding . call Iv . visibility Ġ= ĠView . VISIBLE Ġelse Ġcall ViewHolder . call List Row Binding . call Iv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcall ViewHolder . call List Row Binding . call Iv . image Tint List Ġ= ĠColor State List . valueOf ( Color . parse Color ( UIKit Settings . color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcall List !!. size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġupdate Ġthe Ġcall List Ġwith Ġnew Ġcalls Ġand Ġavoid ĊĠĠĠĠ Ġ* Ġduplicates Ġcall Ġentries . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcalls Ġis Ġa Ġlist Ġof Ġcalls Ġwhich Ġwill Ġbe Ġupdated Ġin Ġadapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate List ( calls : ĠList < Base Message ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcall List !!. addAll ( filter List ( calls )) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter List ( message List : ĠList < Base Message ?> ): ĠList < Base Message > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter edList Ġ= ĠArrayList < Base Message >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( base Message Ġin Ġmessage List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( base Message Ġas ĠCall ). call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ UN AN SW ER ED Ġ|| Ġbase Message . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ ENDED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġbase Message . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ RE JECT ED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġbase Message . call Status Ġ== ĠCome t Chat Constants . CALL _ STATUS _ CANCEL LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter edList . add ( base Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfilter edList ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġremove Ġthe Ġcall Ġfrom Ġcall List ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcall Ġis Ġa Ġobject Ġof ĠCall . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠCall ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove ( call : ĠCall ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġcall List !!. indexOf ( call !! ) ĊĠĠĠĠĠĠĠ Ġcall List . remove ( call ) ĊĠĠĠĠĠĠĠ Ġnotify Item Removed ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġupdate Ġcall Ġin Ġcall List . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcall Ġis Ġan Ġobject Ġof ĠCall . ĠIt Ġis Ġused Ġto Ġupdate Ġthe Ġprevious Ġcall ĊĠĠĠĠ Ġ* Ġin Ġlist ĊĠĠĠĠ Ġ* Ġ@ see ĠCall ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate ( call : ĠCall ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( call List !!. contains ( call )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Call Ġ= Ġcall List [ call List . indexOf ( call )] Ġas ĠCall ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall List . remove ( old Call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall List . add ( 0 , Ġcall ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall List . add ( 0 , Ġcall ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġadd Ġcall Ġin Ġlist . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcall Ġis Ġan Ġobject Ġof ĠCall . ĠIt Ġwill Ġbe Ġadded Ġto Ġcall List . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠCall ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( call : ĠCall ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( call List Ġ!= Ġnull ) Ġcall List . add ( call ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġreset Ġthe Ġadapter Ġby Ġclearing Ġfilter Conversation List . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset Adapter List () Ġ{ ĊĠĠĠĠĠĠĠ Ġcall List !!. clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠCall ViewHolder ( var Ġcall List Row Binding : ĠCome t chat Call ListItem Binding ) Ġ: ĠRecyclerView . ViewHolder ( call List Row Binding . root ) Ċ }