package Ġcom . example . mov iet op . view model Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Application Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . example . mov iet op . service . model . Movie Model Ċ import Ġcom . example . mov iet op . service . repository . Favorite Repository Ċ import Ġcom . example . mov iet op . service . repository . Movie Repository Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠMovie ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Movie Repository Ġ= ĠMovie Repository ( application ) ĊĠĠĠ Ġprivate Ġval Ġm Favorite Repository Ġ= ĠF avorite Repository ( application ) ĊĊĠĠĠ Ġprivate Ġval Ġm Movie Ġ= ĠMutable LiveData < Movie Model >() ĊĠĠĠ Ġvar Ġmovie : ĠLive Data < Movie Model > Ġ= Ġm Movie ĊĊĠĠĠ Ġprivate Ġval Ġm Is Fav Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġvar Ġis Fav : ĠLive Data < Boolean > Ġ= Ġm Is Fav ĊĊĠĠĠ Ġprivate Ġval Ġcompose Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġload ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompose Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Movie Repository . get Movie ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Movie . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfavorite ( favorite : ĠMovie Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompose Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Favorite Repository . insert Favorite ( favorite . insert ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" favorite ", Ġ" completed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThrowable ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdes Favorite ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompose Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Favorite Repository . delete Favorite ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" de sf avorite ", Ġ" completed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThrowable ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Favorite ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompose Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Favorite Repository . is Favorite 2 ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Fav . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThrowable ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }