package Ġcom . example . quick match . access . title čĊčĊč Ċ import Ġandroidx . lifecycle . LiveData č Ċ import Ġandroidx . lifecycle . Mutable LiveData č Ċ import Ġandroidx . lifecycle . ViewModel č Ċ import Ġcom . example . quick match . network . Database Api č Ċ import Ġcom . example . quick match . network . Player Object č Ċ import Ġkotlinx . coroutines .* č Ċ import Ġtim ber . log . Tim ber čĊč Ċ enum Ġclass ĠConnection Status Ġ{ ĠDONE , ĠERROR , ĠLO ADING , ĠRESET Ġ} čĊč Ċ class ĠTitle Fragment ViewModel Ġ: ĠViewModel () Ġ{ čĊčĊĠĠĠ Ġ// ĠCreate Ġcoroutine Ġjob Ġand Ġscope čĊĠĠĠ Ġprivate Ġvar ĠviewModel Job Ġ= ĠJob () čĊčĊĠĠĠ Ġ// ĠUses Ġmain Ġthread Ġco z Ġretrofit Ġworks Ġitself Ġon Ġbackground Ġthreads čĊĠĠĠ Ġprivate Ġval Ġcoroutine Scope Ġ= ĠCor outine Scope ( viewModel Job Ġ+ ĠDispatch ers . Main ) čĊčĊĠĠĠ Ġ// ĠConnection Ġstatus Ġproperty Ġ( private Ġmutable Ġand Ġpublic ) čĊĠĠĠ Ġprivate Ġval Ġ_ status Ġ= ĠMutable LiveData < Connection Status >() čĊĠĠĠ Ġval Ġstatus Ġ: ĠLive Data < Connection Status > čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ status čĊčĊĠĠĠ Ġprivate Ġval Ġ_ list Players Ġ= ĠMutable LiveData < List < Player Object >>() čĊĠĠĠ Ġval Ġlist Players Ġ: ĠLive Data < List < Player Object >> čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ list Players čĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ Ġtry To Connect () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġtry To Connect () Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ status . value Ġ= ĠConnection Status . LOADING čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠDatabase Api . ret rofit Service . test Connection () Ġ// Ġwork Ġon Ġa Ġbackground Ġthread čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ status . value Ġ= ĠConnection Status . DONE čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ( t . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ status . value Ġ= ĠConnection Status . ERROR čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (_ status . value . toString ()) čĊčĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () čĊĠĠĠĠĠĠĠ ĠviewModel Job . cancel () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġreset Connection Status () Ġ{ čĊĠĠĠĠĠĠĠ Ġ_ status . value Ġ= ĠConnection Status . RESET čĊĠĠĠ Ġ} č Ċ } čĊ