package Ġcom . an sh ul . active ch ats . active chat Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . an sh ul . repository . Message Repository Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* Ġ@ author Ġan sh ul go el Ċ Ġ* Ġat Ġ 0 6 / 0 9 / 2 0 , Ġ 1 : 2 1 ĠAM Ċ Ġ* Ġfor ĠChat Book Ċ Ġ*/ Ċ Ċ class ĠActive Chat Fragment ViewModel ( application : ĠApplication , Ġprivate Ġval Ġthread ID : ĠInt ) Ġ: ĊĠĠĠ ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġ// ĠCreate Ġa ĠCor outine Ġscope Ġusing Ġa Ġjob Ġto Ġbe Ġable Ġto Ġcancel Ġwhen Ġneeded ĊĠĠĠ Ġprivate Ġvar ĠviewModel Job Ġ= ĠJob () ĊĊĠĠĠ Ġ// Ġthe ĠCor outine Ġruns Ġusing Ġthe ĠMain Ġ( UI ) Ġdispatcher ĊĠĠĠ Ġprivate Ġval Ġcoroutine Scope Ġ= ĠCor outine Scope ( viewModel Job Ġ+ ĠDispatch ers . Main ) ĊĊĠĠĠ Ġvar Ġmessage : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġmessage Repository Ġ= ĠMessage Repository ( application . application Context , Ġthread ID ) ĊĠĠĠ Ġval Ġmessages Ġ= Ġmessage Repository . messages ĊĊĠĠĠ Ġprivate Ġval Ġ_ button Clicked Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġbutton Clicked : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ button Clicked ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ button Clicked . value Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsendMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Repository . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ button Clicked . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbutton Click Done () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ button Clicked . value Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ ĠviewModel Job . cancel () ĊĠĠĠ Ġ} Ċ Ċ }