package Ġcom . t inas he . h ym nal . ui . collections . list Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . t inas he . h ym nal . data . model . H ym n Ċ import Ġcom . t inas he . h ym nal . data . model . collections . Collection H ym ns Ċ import Ġcom . t inas he . h ym nal . data . model . constants . Status Ċ import Ġcom . t inas he . h ym nal . data . repository . H ym nal Repository Ċ import Ġcom . t inas he . h ym nal . extensions . arch . Single Live Event Ċ import Ġcom . t inas he . h ym nal . extensions . arch . as LiveData Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠCollection H ym ns ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠH ym nal Repository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmutable ViewState Ġ= ĠSingle Live Event < Status >() ĊĠĠĠ Ġval Ġstatus LiveData : ĠLive Data < Status > Ġ= Ġmutable ViewState . as LiveData () ĊĊĠĠĠ Ġprivate Ġval Ġmutable Collection Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġcollection Title LiveData : ĠLive Data < String > Ġ= Ġmutable Collection . as LiveData () ĊĊĠĠĠ Ġprivate Ġval Ġmutable H ym ns List Ġ= ĠMutable LiveData < List < H ym n >>() ĊĠĠĠ Ġval Ġh ym n List LiveData : ĠLive Data < List < H ym n >> Ġget () Ġ= Ġmutable H ym ns List . as LiveData () ĊĊĠĠĠ Ġprivate Ġvar Ġcollection H ym ns : ĠCollection H ym ns ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġh ym n ToDelete : ĠPair < Int , ĠH ym n >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġload Data ( collection Id : ĠInt ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġrepository . get Collection ( collection Id ) ĊĠĠĠĠĠĠĠ Ġmutable ViewState . post Value ( resource . status ) ĊĠĠĠĠĠĠĠ Ġresource . data ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable H ym ns List . post Value ( it . h ym ns ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Collection . post Value ( it . collection . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection H ym ns Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Intent ToDelete H ym n ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmutable H ym ns List . value ?. to Mutable List () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġh ym n ToDelete Ġ= Ġposition Ġto Ġdata . remove At ( position ) ĊĠĠĠĠĠĠĠ Ġmutable H ym ns List . post Value ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġundo Delete H ym n () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmutable H ym ns List . value ?. to Mutable List () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġh ym n ToDelete Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġdata . add ( pair . first , Ġpair . second ) ĊĠĠĠĠĠĠĠ Ġmutable H ym ns List . post Value ( data ) ĊĠĠĠĠĠĠĠ Ġh ym n ToDelete Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Confirmed () Ġ{ ĊĠĠĠĠĠĠĠ Ġh ym n ToDelete ?. let Ġ{ Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= Ġcollection H ym ns Ġ?: Ġreturn @ let ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcollection . collection . collection Id ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . update H ym n Collections ( pair . second . h ym n Id , Ġid , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ym n ToDelete Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Collection Confirmed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= Ġcollection H ym ns Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . delete Collection ( collection ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ