package Ġio . b umb um apps . radio . intern e tr adi op layer . domain . inter actor Ċ Ċ import Ġio . b umb um apps . radio . intern e tr adi op layer . data . db . entity . Station Ċ import Ġio . b umb um apps . radio . intern e tr adi op layer . data . repository . F avorites Repository Ċ import Ġio . b umb um apps . radio . intern e tr adi op layer . data . repository . History Repository Ċ import Ġio . b umb um apps . radio . intern e tr adi op layer . extensions . subscribe X Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . rx kotlin . Observable s Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠV lad im ir ĠM ik h ale v Ġ 0 2 . 1 2 . 2 0 1 8 . Ċ Ġ*/ Ċ Ċ class ĠHistory Interactor Ċ @ Inject Ġconstructor ( private Ġval Ġhistory Repository : ĠHistory Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġfavor ites Repository : ĠF avorites Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmedia Interactor : ĠMedia Interactor ) Ġ{ ĊĊĠĠĠ Ġfun Ġinit History (): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget History Obs () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first ( emptyList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġstations Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstations . find Ġ{ Ġmedia Interactor . get Saved Media Id () Ġ== Ġit . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġmedia Interactor . current Media Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. ignore Element () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget History Obs (): ĠObservable < List < Station >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable s . combine Latest ( history Repository . get History Obs (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavor ites Repository . stations List Obs ) Ġ{ Ġhistory , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory . map Ġ{ Ġstation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavor ites Repository . get Station Ġ{ Ġit . uri Ġ== Ġstation . uri Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġstation . apply Ġ{ Ġis Favorite Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate History ( station : ĠStation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhistory Repository . create History ( station ). subscribe X () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete History ( station : ĠStation ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhistory Repository . delete History ( station . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Station ( predicate : Ġ( Station ) Ġ-> ĠBoolean ) Ġ= Ġhistory Repository . get Station ( predicate ) Ċ }