package Ġcom . wild an p urn omo . cab aca . data . book Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . lang . Exception Ċ Ċ class ĠBook ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Book Repository Ġ= ĠBook Repository () ĊĊĠĠĠ Ġprivate Ġval Ġis Error : ĠMutable LiveData < Boolean > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < Boolean >( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Is Error (): ĠLive Data < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Error ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠerrorMessage : ĠMutable LiveData < String > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < String >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ErrorMessage (): ĠLive Data < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠerrorMessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlatest Book : ĠMutable LiveData < ArrayList < Book Model >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < ArrayList < Book Model >>() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Latest Book () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġm Book Repository . get Latest Book () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . response Data . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Book . post Value ( response . response Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage . post Value (" Tid ak Ġada Ġdata Ġuntuk Ġdit ampil kan .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage . post Value (" G agal Ġm end apat kan Ġdata .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Latest Book (): ĠLive Data < ArrayList < Book Model >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlatest Book ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbook By Genre : ĠMutable LiveData < ArrayList < Book Model >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < ArrayList < Book Model >>() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Book By Genre (): ĠLive Data < ArrayList < Book Model >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbook By Genre ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Book By Genre ( genre Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġm Book Repository . get Book By Genre Id ( genre Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . response Data . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook By Genre . post Value ( response . response Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w tf (" Error Ġbook Ġby Ġgenre ", Ġe . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbook Detail : ĠMutable LiveData < Book Model > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < Book Model >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Book Detail ( book Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġm Book Repository . get Book Detail ById ( book Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook Detail . post Value ( response . response Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w tf (" Error Ġbook Ġby Ġgenre ", Ġe . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Book Detail (): ĠLive Data < Book Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbook Detail ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Writer Id From Detail (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbook Detail . value ?. writer By Writer Id ?. userId Ġ?: Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Latest Book () ĊĠĠĠ Ġ} Ċ }