package Ġcom . tel ny x . meet . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . tel ny x . meet . R Ċ import Ġcom . tel ny x . meet . ui . adapters . Participants Adapter Ċ import Ġkotlinx . android . synt hetic . main . participants _ fragment .* Ċ Ċ class ĠPart icipants Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġval Ġrooms ViewModel : ĠRoom s ViewModel Ġby Ġactivity ViewModels () ĊĊĠĠĠ Ġprivate Ġvar Ġparticipants Adapter Ġ= ĠPart icipants Adapter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?, ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . participants _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Observer s () Ġ{ ĊĠĠĠĠĠĠĠ Ġrooms ViewModel . get Participants (). observe ( view Lifecycle Owner ) Ġ{ Ġparticipants Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipants . let Ġ{ Ġparticipant List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipants Adapter . setData ( participant List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrooms ViewModel . get Joined Participant (). observe ( view Lifecycle Owner ) Ġ{ Ġparticipant Joined Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Joined ?. let Ġ{ Ġjoined Participant Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoined Participant Event . getContent IfNot Handled ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipants Adapter . add Participant ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrooms ViewModel . get Le aving Participant Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġparticipant Le aving Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Le aving Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipants Adapter . remove Participant ( it . first ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrooms ViewModel . getS pe aking Participant (). observe ( view Lifecycle Owner ) Ġ{ Ġspeaking Participant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeaking Participant ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipants Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrooms ViewModel . get Participant Stream Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġparticipant Changed Streams Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Changed Streams Event . getContent IfNot Handled ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipants Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġset Observer s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġparticipant Recycler . adapter Ġ= Ġparticipants Adapter ĊĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġparticipant Recycler . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠ Ġ} Ċ } Ċ