package Ġcom . jes us l cor om inas . my books . ui . detail Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . jes us l cor om inas . my books . domain . Book Ċ import Ġcom . jes us l cor om inas . my books . ui . common . Scoped ViewModel Ċ import Ġcom . jes us l cor om inas . my books . use cases . Get Book Detail Ċ import Ġcom . jes us l cor om inas . my books . use cases . Toggle Collected Book Ċ import Ġcom . jes us l cor om inas . my books . use cases . Toggle F avour ite Book Ċ import Ġcom . jes us l cor om inas . my books . use cases . Toggle Read Book Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . launch ĊĊ Ċ class ĠDetail ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġgoogle Id : ĠString , ĊĠĠĠ Ġprivate Ġval Ġtoggle Collected Book : ĠToggle Collected Book , ĊĠĠĠ Ġprivate Ġval Ġtoggle F avour ite Book : ĠToggle F avour ite Book , ĊĠĠĠ Ġprivate Ġval Ġtoggle Read Book : ĠToggle Read Book , ĊĠĠĠ Ġprivate Ġval Ġget Book Detail : ĠGet Book Detail , ĊĠĠĠ Ġoverride Ġval Ġui Dispatcher : ĠCor outine Dispatcher Ċ ) Ġ: ĠScoped ViewModel ( ui Dispatcher ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ loading Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġloading : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ loading ĊĊĠĠĠ Ġprivate Ġval Ġ_ book Ġ= ĠMutable LiveData < Book >() ĊĠĠĠ Ġval Ġbook : ĠLive Data < Book > Ġget () Ġ= Ġ_ book ĊĊĠĠĠ Ġprivate Ġval Ġ_ title Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġtitle : ĠLive Data < String > Ġget () Ġ= Ġ_ title ĊĊĠĠĠ Ġprivate Ġval Ġ_ thumbnail Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġthumbnail : ĠLive Data < String > Ġget () Ġ= Ġ_ thumbnail ĊĊĠĠĠ Ġprivate Ġval Ġ_ description Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġdescription : ĠLive Data < String > Ġget () Ġ= Ġ_ description ĊĊĠĠĠ Ġprivate Ġval Ġ_ fav our ite Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġfavour ite : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ fav our ite ĊĊĠĠĠ Ġprivate Ġval Ġ_ collected Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġcollected : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ collected ĊĊĠĠĠ Ġprivate Ġval Ġ_ read Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġread : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ read ĊĊĠĠĠ Ġprivate Ġval Ġ_ info Link Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġinfo Link : ĠLive Data < String > Ġget () Ġ= Ġ_ info Link ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Scope () ĊĊĠĠĠĠĠĠĠ Ġget Detail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Detail () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ loading . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ book . value Ġ= Ġget Book Detail . invoke ( google Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ loading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ book . value ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ title . value Ġ= Ġthis . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ description . value Ġ= Ġthis . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ info Link . value Ġ= Ġthis . info Link ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ thumbnail . value Ġ= Ġthis . thumbnail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ fav our ite . value Ġ= Ġthis . fav our ite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ collected . value Ġ= Ġthis . collected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ read . value Ġ= Ġthis . read ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon F avour ite Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ book . value Ġ= Ġtoggle F avour ite Book . invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Collected Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ book . value Ġ= Ġtoggle Collected Book . invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Read Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ book . value Ġ= Ġtoggle Read Book . invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġdestroy Scope () ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ }