package Ġorg . simple . clin ic . reports Ċ Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġorg . simple . clin ic . sync . Model Sync Ċ import Ġorg . simple . clin ic . sync . Sync Config Ċ import Ġorg . simple . clin ic . user . User Session Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Named Ċ Ċ class ĠReports Sync Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġreports Api : ĠReports Api , ĊĠĠĠ Ġprivate Ġval Ġreports Repository : ĠReports Repository , ĊĠĠĠ Ġprivate Ġval Ġuser Session : ĠUser Session , ĊĠĠĠ Ġ@ Named (" sync _ config _ daily ") Ġprivate Ġval Ġconfig Provider : ĠSingle < Sync Config > Ċ ) Ġ: ĠModel Sync Ġ{ ĊĠ Ġprivate Ġfun Ġcan Sync Data () Ġ= Ġuser Session . can Sync Data (). first Or Error () ĊĊĠ Ġoverride Ġfun Ġsync (): ĠComp letable Ġ= ĊĠĠĠĠĠ Ġcan Sync Data () ĊĠĠĠĠĠĠĠĠĠ Ġ. flatMap Comp letable Ġ{ Ġcan Sync Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( can Sync ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp letable . merge Array Delay Error ( push (), Ġpull ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp letable . complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpush (): ĠComp letable Ġ= ĠComp letable . complete () ĊĊĠ Ġoverride Ġfun Ġpull (): ĠComp letable Ġ= ĊĠĠĠĠĠ Ġreports Api ĊĠĠĠĠĠĠĠĠĠ Ġ. user Analytics () ĊĠĠĠĠĠĠĠĠĠ Ġ. flatMap Comp letable ( reports Repository :: update Reports ) ĊĊĠ Ġoverride Ġfun Ġsync Config () Ġ= Ġconfig Provider Ċ } Ċ