package Ġcom . sc ud der apps . movies up . repository . tv . tv details Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . sc ud der apps . movies up . api . T mdb Api Interface Ċ import Ġcom . sc ud der apps . movies up . models . common . Cast Response Ċ import Ġcom . sc ud der apps . movies up . models . common . Media Response Ċ import Ġcom . sc ud der apps . movies up . models . common . Video Response Ċ import Ġcom . sc ud der apps . movies up . models . tv . Tv Detail Ċ import Ġcom . sc ud der apps . movies up . repository . Network State Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠT v Details DataSource ( ĊĠĠĠ Ġprivate Ġval Ġapi Service : ĠT mdb Api Interface , ĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable : ĠComposite Disposable Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ network State Ġ= ĠMutable LiveData < Network State >() ĊĠĠĠ Ġval Ġnetwork State : ĠLive Data < Network State > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ network State ĊĊĠĠĠ Ġprivate Ġval Ġ_ tv Details Response Ġ= ĠMutable LiveData < Tv Detail >() ĊĠĠĠ Ġval Ġtv Details Response : ĠLive Data < Tv Detail > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ tv Details Response ĊĊĠĠĠ Ġprivate Ġval Ġ_ tv Videos Response Ġ= ĠMutable LiveData < Video Response >() ĊĠĠĠ Ġval Ġtv Videos Response : ĠLive Data < Video Response > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ tv Videos Response ĊĊĠĠĠ Ġprivate Ġval Ġ_ tv Media Response Ġ= ĠMutable LiveData < Media Response >() ĊĠĠĠ Ġval Ġtv Media Response : ĠLive Data < Media Response > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ tv Media Response ĊĊĠĠĠ Ġprivate Ġval Ġ_ tv Cast Response Ġ= ĠMutable LiveData < Cast Response >() ĊĠĠĠ Ġval Ġtv Cast Response : ĠLive Data < Cast Response > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ tv Cast Response ĊĊĠĠĠ Ġfun Ġfetch Tv Details ( tv Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADING ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . get TV Details ( tv Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ tv Details Response . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Tv Detail DataSource ", Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Tv Detail DataSource ", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Tv Videos ( tv Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADING ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . get Tv Videos ( tv Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ tv Videos Response . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Tv Detail DataSource ", Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Tv Detail DataSource ", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Movies Media ( tv Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADING ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . get Tv Media ( tv Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ tv Media Response . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Movie Detail DataSource ", Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Movie Detail DataSource ", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Tv Cast Details ( tv Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADING ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . get Tv Cast ( tv Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ tv Cast Response . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . LOADED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ network State . post Value ( Network State . ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Movie Detail DataSource ", Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Movie Detail DataSource ", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }