package Ġcom . ye h ia hd . movies . ui . main screen Ċ Ċ import Ġcom . ye h ia hd . movies . datamodel . DataManager Ċ import Ġcom . ye h ia hd . movies . model . Movie Ċ import Ġcom . ye h ia hd . movies . ui . base . Base ViewModel Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠMain ViewModel Ġconstructor ( private Ġval Ġdata Manager : ĠData Manager ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġmovies : ĠList < Movie >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget Movies ByType ( type : ĠString ): ĠFlow able < List < Movie >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata Manager . get Movies From Db ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Manager . get Movies From Server ByType ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlow able . just ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . movies Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlow able . just ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload Movies ( movies Type : ĠString ): ĠObservable < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . from Callable Ġ{ Ġdata Manager . delete Movies ByType ( movies Type ) Ġ} ĊĠĠĠ Ġ} Ċ }