/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠV ital iy ĠZ ar ub in Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . key gen qt . my library . ui . books Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . live Data Ċ import Ġandroidx . lifecycle . switch Map Ċ import Ġcom . key gen qt . my library . base . Base ExceptionHandler Ċ import Ġcom . key gen qt . my library . base . LiveData Event Ċ import Ġcom . key gen qt . my library . data . models . Model Book Ċ import Ġcom . key gen qt . my library . data . relations . Relation Book Ċ import Ġcom . key gen qt . my library . data . services . Service Books Ċ import Ġcom . key gen qt . my library . hal . API _ KEY _ SELF Ċ import Ġcom . key gen qt . my library . hal . Link Ċ import Ġcom . key gen qt . my library . hal . Response Successful Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠView Book ( private Ġval Ġservice : ĠService Books ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġrelation : ĠRelation Book ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġself Link : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġloading : ĠMutable LiveData < LiveData Event < Boolean >> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġerror : ĠMutable LiveData < LiveData Event < Throwable >> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġdelete : ĠMutable LiveData < LiveData Event < Response Successful >> Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġfun ĠgetModel ( link : ĠLink ): ĠRelation Book ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġservice . layer . find Book By Link ( link ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Link View Book ( id : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġservice . layer . get Link View Book ( id ). value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġchange Link Ġ= Ġself Link . switch Map Ġ{ Ġlink Ġ-> ĊĠĠĠĠĠĠĠ Ġlive Data ( Base ExceptionHandler . get ExceptionHandler ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Link ( link )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdata Ġ= Ġself Link . switch Map Ġ{ Ġlink Ġ-> ĊĠĠĠĠĠĠĠ Ġlive Data ( Base ExceptionHandler . get ExceptionHandler ( error )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . getView ( link ) Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Ġ= Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( LiveData Event ( relation )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Base ExceptionHandler . get ExceptionHandler ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelation ?. model ?. let Ġ{ Ġbook Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook . enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . delete Book ( book . links [ API _ KEY _ SELF ] Ġ?: Ġerror (" API _ KEY _ SELF Ġnot Ġfound ")) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete . post Value ( LiveData Event ( result )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }