package Ġcom . dream it . android quiz . data . quiz item Ċ Ċ import Ġcom . dream it . android quiz . data . quiz item . local . Local Quiz Details Repository Ċ import Ġcom . dream it . android quiz . data . quiz item . remote . Remote Quiz Details Repository Ċ import Ġcom . dream it . android quiz . quiz item . model . Quiz Details Ċ import Ġio . reactivex . Observable Ċ import Ġkotlinx . coroutines . experimental . android . UI Ċ import Ġkotlinx . coroutines . experimental . launch Ċ Ċ class ĠQu iz Details Repository ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlocal Repository : ĠLocal Quiz Details Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġremote Repository : ĠRemote Quiz Details Repository Ċ ) Ġ: ĠQu iz Details DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Quiz Details ( quiz Id : ĠLong ): ĠObservable < Quiz Details > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . concat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Repository . get Quiz Details ( quiz Id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremote Repository . get Quiz Details ( quiz Id ). do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( UI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . questions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Repository . save Quiz Details ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Quiz Solve ( quiz Id : ĠLong ): ĠObservable < Quiz Details > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Repository . get Quiz Details ( quiz Id ) ĊĊĠĠĠ Ġoverride Ġfun Ġsave Quiz Details ( quiz : ĠQu iz Details ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlocal Repository . save Quiz Details ( quiz ) ĊĠĠĠ Ġ} Ċ }