package Ġcom . tam im at ta fi . p izza . android . data . repository Ċ Ċ import Ġcom . tam im at ta fi . p izza . android . data . local . I Orders Local DataSource Ċ import Ġcom . tam im at ta fi . p izza . android . data . remote . I Orders Remote DataSource Ċ import Ġcom . tam im at ta fi . p izza . domain . model . order . Order Ċ import Ġcom . tam im at ta fi . p izza . domain . repository . I Orders Repository Ċ import Ġio . reactivex . rx java 3 . core . Comp letable Ċ import Ġio . reactivex . rx java 3 . core . Flow able Ċ import Ġio . reactivex . rx java 3 . schedul ers . Schedulers Ċ Ċ class ĠOrders Repository ( ĊĠĠĠ Ġprivate Ġval Ġlocal : ĠI Orders Local DataSource , ĊĠĠĠ Ġprivate Ġval Ġremote : ĠI Orders Remote DataSource Ċ ) Ġ: ĠI Orders Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll (): ĠFlow able < List < Order >> Ġ= ĊĠĠĠĠĠĠĠ Ġlocal . getAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( p izza Id : ĠInt ): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ Ġlocal . add ( p izza Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĊĠĠĠ Ġoverride Ġfun Ġremove ( p izza Id : ĠInt ): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ Ġlocal . remove ( p izza Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĊĠĠĠ Ġoverride Ġfun Ġclear (): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ Ġlocal . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĊĠĠĠ Ġoverride Ġfun Ġsubmit (): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ Ġlocal . getAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Or Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Comp letable ( remote :: submit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Then ( clear ()) Ċ }