package Ġcom . example . quick match . content . inv itation čĊč Ċ import Ġandroidx . lifecycle . LiveData č Ċ import Ġandroidx . lifecycle . Mutable LiveData č Ċ import Ġandroidx . lifecycle . ViewModel č Ċ import Ġcom . example . quick match . content . club . Request Status č Ċ import Ġcom . example . quick match . content . player č Ċ import Ġcom . example . quick match . network . Database Api č Ċ import Ġcom . example . quick match . network . Invitation Status Object č Ċ import Ġcom . example . quick match . network . Player Me et Object č Ċ import Ġkotlinx . coroutines . Coroutine Scope č Ċ import Ġkotlinx . coroutines . Dispatch ers č Ċ import Ġkotlinx . coroutines . Job č Ċ import Ġkotlinx . coroutines . launch č Ċ import Ġtim ber . log . Tim ber čĊč Ċ class ĠInv itation Fragment ViewModel Ġ: ĠViewModel () Ġ{ čĊčĊĠĠĠ Ġ/* Ġstatuses Ġfor Ġrequests Ġ*/ čĊčĊĠĠĠ Ġprivate Ġval Ġ_ getNew Inv itations Status Ġ= ĠMutable LiveData < Request Status >() čĊĠĠĠ Ġval Ġget New Inv itations Status Ġ: ĠLive Data < Request Status > čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ getNew Inv itations Status čĊčĊĠĠĠ Ġprivate Ġval Ġ_ get Tre ated Inv itations Status Ġ= ĠMutable LiveData < Request Status >() čĊĠĠĠ Ġval Ġget Tre ated Inv itations Status Ġ: ĠLive Data < Request Status > čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ get Tre ated Inv itations Status čĊčĊĠĠĠ Ġprivate Ġval Ġ_ accept Invitation Status Ġ= ĠMutable LiveData < Request Status >() čĊĠĠĠ Ġval Ġaccept Invitation Status Ġ: ĠLive Data < Request Status > čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ accept Invitation Status čĊčĊĠĠĠ Ġprivate Ġval Ġ_ decl ine Invitation Status Ġ= ĠMutable LiveData < Request Status >() čĊĠĠĠ Ġval Ġdecl ine Invitation Status Ġ: ĠLive Data < Request Status > čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ decl ine Invitation Status čĊčĊĠĠĠ Ġ/* Ġresults Ġ*/ čĊčĊĠĠĠ Ġprivate Ġval Ġ_ tre ated Inv itations Ġ= ĠMutable LiveData < List < Player Me et Object >>() čĊĠĠĠ Ġval Ġtreated Inv itations Ġ: ĠLive Data < List < Player Me et Object >> čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ tre ated Inv itations čĊčĊĠĠĠ Ġprivate Ġval Ġ_ new Inv itations Ġ= ĠMutable LiveData < List < Player Me et Object >>() čĊĠĠĠ Ġval Ġnew Inv itations Ġ: ĠLive Data < List < Player Me et Object >> čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ new Inv itations čĊčĊĠĠĠ Ġ// Ġ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 ) čĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ Ġget New Inv itations () čĊĠĠĠĠĠĠĠ Ġget Tre ated Inv itations () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget New Inv itations () Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ_ getNew Inv itations Status . value Ġ= ĠRequest Status . LOADING čĊčĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ new Inv itations . value Ġ= ĠDatabase Api . ret rofit Service . getPlayer Inv itations ( player . id !! ). filter Ġ{ Ġinv itation Ġ-> Ġinv itation . status Ġ== Ġnull Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ getNew Inv itations Status . value Ġ= ĠRequest Status . DONE čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ("% s Ġ/ Ġget New Inv itations ()", Ġt . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ getNew Inv itations Status . value Ġ= ĠRequest Status . ERROR čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Tre ated Inv itations () Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ_ get Tre ated Inv itations Status . value Ġ= ĠRequest Status . LOADING čĊčĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ tre ated Inv itations . value Ġ= ĠDatabase Api . ret rofit Service . getPlayer Inv itations ( player . id !! ). filter Ġ{ Ġinv itation Ġ-> Ġinv itation . status Ġ!= Ġnull Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ get Tre ated Inv itations Status . value Ġ= ĠRequest Status . DONE čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ("% s Ġ/ Ġget Tre ated Inv itations ()", Ġt . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ get Tre ated Inv itations Status . value Ġ= ĠRequest Status . ERROR čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġaccept Invitation ( inv itation Id : ĠInt ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ_ accept Invitation Status . value Ġ= ĠRequest Status . LOADING čĊčĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= ĠInv itation Status Object ( true ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Api . ret rofit Service . update Invitation ( inv itation Id , Ġstatus ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Tre ated Inv itations () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget New Inv itations () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ accept Invitation Status . value Ġ= ĠRequest Status . DONE čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ accept Invitation Status . value Ġ= ĠRequest Status . ERROR čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ("% s Ġ/ Ġaccept Invitation ()", Ġt . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġdecl ine Invitation ( inv itation Id : ĠInt ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ_ decl ine Invitation Status . value Ġ= ĠRequest Status . LOADING čĊčĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= ĠInv itation Status Object ( false ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Api . ret rofit Service . update Invitation ( inv itation Id , Ġstatus ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Tre ated Inv itations () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget New Inv itations () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ decl ine Invitation Status . value Ġ= ĠRequest Status . DONE čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ decl ine Invitation Status . value Ġ= ĠRequest Status . ERROR čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ("% s Ġ/ Ġdecl ine Invitation ()", Ġt . message ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊč Ċ } čĊ