package Ġxyz . man o los . cub os . movie Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx kotlin . addTo Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġxyz . man o los . cub os . database . Movie Dao Ċ import Ġxyz . man o los . cub os . database . Movie Genre Dao Ċ import Ġxyz . man o los . cub os . model . Movie Ċ import Ġxyz . man o los . cub os . model . Movie Genre Ċ import Ġxyz . man o los . cub os . model . Response Movies Ċ import Ġxyz . man o los . cub os . service . Movie Service Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMovie Fragment Presenter Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠMovie View , ĊĠĠĠ Ġprivate Ġval Ġmovie Service : ĠMovie Service , ĊĠĠĠ Ġprivate Ġval Ġmovie Dao : ĠMovie Dao , ĊĠĠĠ Ġprivate Ġval Ġmovie Genre Dao : ĠMovie Genre Dao Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġfetch Movies ( page : ĠInt , Ġgenre Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . show Loading () ĊĠĠĠĠĠĠĠ Ġmovie Service . fetch Movies By Genre Id ( page , Ġgenre Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Movies ( it . results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Page And Hide Loading ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error And Hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( dis pos ables ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Movies ( movies : ĠList < Movie >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie Dao . insert Movies ( movies ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĊĠĠĠĠĠĠĠ Ġsave Movies Gen res ( movies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve Movies By Genre Id ( genre Id : ĠLong ): ĠLive Data < List < Movie >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmovie Genre Dao . getAll Movies By Genre Id ( genre Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Movies Gen res ( movies : ĠList < Movie >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmovies . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Genre Dao . insert Movies Gen res ( get Movies Gen res By Movie ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Movies Gen res By Movie ( movie : ĠMovie ): ĠList < Movie Genre > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmovie . genre Ids . map Ġ{ ĠMovie Genre ( id _ movie Ġ= Ġmovie . id , Ġid _ genre Ġ= Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Page And Hide Loading ( it : ĠResponse Movies ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . update Page ( it ) ĊĠĠĠĠĠĠĠ Ġview . hide Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error And Hide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . show Error () ĊĠĠĠĠĠĠĠ Ġview . hide Loading () ĊĠĠĠ Ġ} ĊĊ Ċ }