package Ġcom . f alcon . rest aurants . screens . meal Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġcom . f alcon . rest aurants . network . meal . Fetch Me als EndPoint Ċ import Ġcom . f alcon . rest aurants . network . meal . Me al Net Ċ import Ġcom . f alcon . rest aurants . room . meal . Me al Ċ import Ġcom . f alcon . rest aurants . room . meal . Me al Dao Ċ import Ġcom . f alcon . rest aurants . utils . Logger Ċ import Ġjavax . inject . Inject Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observable Emitter Ċ import Ġio . reactivex . Observable On Subscribe Ċ import Ġio . reactivex . Single Ċ Ċ class ĠFetch Me als UseCase Ġ@ Inject Ġconstructor Ġ( ĊĠĠĠ Ġval Ġme al Dao : ĠMe al Dao , ĊĠĠĠ Ġval Ġfetch Me als EndPoint : ĠFetch Me als EndPoint ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġval ĠTAG : ĠString Ġ= Ġ" Fetch Me als UseCase " ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġfun Ġfetch (): ĠObservable < String >{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . create { emitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ Ġmax UpdatedAt : ĠString Ġ= Ġme al Dao . getMax Updated () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Me als EndPoint . fetch ( max UpdatedAt , Ġobject : ĠFetch Me als EndPoint . Listener { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fetch Success ( meal Net s : ĠList < Me al Net >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . log ( ĠTAG , Ġ" on Fetch Success : Ġ" Ġ+ Ġme al Net s . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupsert ( meal Net s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext (" meal Ġcompleted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fetch Failed ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . log ( ĠTAG , Ġ" on Fetch Failed : Ġe : Ġ" Ġ+ Ġe . get Localized Message ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetBy Restaurant Id ( type Id V : ĠString ): ĠObservable < List < Me al >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġme al Dao . getBy Restaurant Id ( type Id V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Me al ById ( meal Id : ĠString ): ĠSingle < Me al > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġme al Dao . get Me al ById ( meal Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupsert ( meal Net : ĠMe al Net ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme al Dao . upsert ( Me al ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . details , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . imageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . restaurant Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . updatedAt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . active , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al Net . favorite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupsert ( meal Net s : ĠList < Me al Net >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( meal Current Ġin Ġme al Net s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupsert ( meal Current ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ