package Ġcom . example . android . track mys leep quality Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mediator LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . example . android . track mys leep quality . database . TestData Ċ import Ġcom . example . android . track mys leep quality . database . Test Database Dao Ċ import Ġkotlinx . coroutines .* Ċ Ċ class ĠContact Detail ViewModel ( private Ġval Ġid : Long = 0 L , dataSource : Test Database Dao ) Ġ: ĠViewModel () Ġ{ ĊĊĊĊĠĠĠ Ġval Ġdatabase = dataSource ĊĊĊĠĠĠ Ġval ĠviewModel Job = ĠJob () ĊĠĠĠ Ġval Ġui Scope = ĠCor outine Scope ( Dispatch ers . Main + viewModel Job ) ĊĠĠĠ Ġprivate Ġvar Ġ_ delete = Mutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġdelete : LiveData < Boolean > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ delete ĊĊĊĠĠĠ Ġprivate Ġval Ġcontact Ġ= ĠMed iator LiveData < TestData >() ĊĠĠĠ Ġfun Ġfetch Contact () Ġ= Ġcontact ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcontact . add Source ( database . get Contact ( id ), contact :: setValue ) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġdelete Clicked (){ ĊĠĠĠĠĠĠĠ Ġ_ delete . value = false ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete (){ ĊĠĠĠĠĠĠĠ Ġui Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ delete . value = true ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete From db ( id ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġdelete From db ( contact Id : Long ){ ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . delete ( contact Id ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ ĠviewModel Job . cancel () ĊĠĠĠ Ġ} Ċ } Ċ