package Ġio . github . w ulkan owy . data . repositories . home work Ċ Ċ import Ġcom . github . pw itt chen . react iven etwork . library . rx 2 . Reactive Network Ċ import Ġcom . github . pw itt chen . react iven etwork . library . rx 2 . internet . ob serving . Internet Ob serving Settings Ċ import Ġio . github . w ulkan owy . data . db . entities . Home work Ċ import Ġio . github . w ulkan owy . data . db . entities . Se mester Ċ import Ġio . github . w ulkan owy . utils . f riday Ċ import Ġio . github . w ulkan owy . utils . mon day Ċ import Ġio . github . w ulkan owy . utils . unique Subtract Ċ import Ġio . reactivex . Single Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġjava . net . Unknown Host Exception Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠHome work Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġsettings : ĠInternet Ob serving Settings , ĊĠĠĠ Ġprivate Ġval Ġlocal : ĠHome work Local , ĊĠĠĠ Ġprivate Ġval Ġremote : ĠHome work Remote Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġget Home work ( semester : ĠSe mester , Ġstart : ĠLocalDate , Ġend : ĠLocalDate , Ġforce Refresh : ĠBoolean Ġ= Ġfalse ): ĠSingle < List < Home work >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ Ġstart . mon day Ġto Ġend . f riday Ġ}. flatMap Ġ{ Ġ( mon day , Ġf riday ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . get Home work ( semester , Ġmon day , Ġf riday ). filter Ġ{ Ġ! force Refresh Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch If Empty ( Reactive Network . check Internet Connectivity ( settings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġremote . get Home work ( semester , Ġmon day , Ġf riday ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠSingle . error ( Unknown Host Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġnew Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . get Home work ( semester , Ġmon day , Ġf riday ). to Single ( emptyList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġold Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . delete Home work ( old . unique Subtract ( new )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . save Home work ( new . unique Subtract ( old )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġlocal . get Home work ( semester , Ġmon day , Ġf riday ). to Single ( emptyList ()) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ