package Ġorg . step ik . android . ex ams . data . repository Ċ Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Single Ċ import Ġorg . step ik . android . ex ams . api . Step ic Rest Service Ċ import Ġorg . step ik . android . ex ams . data . preference . Shared Preference Helper Ċ import Ġorg . step ik . android . ex ams . data . model . Attempt Request Ċ import Ġorg . step ik . android . model . attempts . Attempt Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAttempt Repository Ċ @ Inject Ċ constructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġstep ic Rest Service : ĠSte pic Rest Service , ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġshared Preference Helper : ĠShared Preference Helper Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġcreate Attempt ( step Id : ĠLong ): ĠSingle < Attempt > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep ic Rest Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. createNew Attempt ( Attempt Request ( step Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . attempts . first () Ġ} ĊĊĠĠĠ Ġfun Ġget Attempt By Step Id ( step Id : ĠLong ): ĠMaybe < Attempt > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep ic Rest Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Existing Attempts ( step Id , Ġshared Preference Helper . getCurrent UserId () Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Maybe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattempt Ġ= Ġit . attempts . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( attempt Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . just ( attempt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Attempt For Step ( step Id : ĠLong ): ĠSingle < Attempt > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Attempt By Step Id ( step Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch If Empty ( create Attempt ( step Id )) Ċ }