package Ġorg . step ik . android . domain . step _ source . inter actor Ċ Ċ import Ġio . reactivex . Single Ċ import Ġorg . step ic . d roid . persistence . content . Step Content Resolver Ċ import Ġorg . step ic . d roid . persistence . model . Step Persistent Wrapper Ċ import Ġorg . step ik . android . domain . base . DataSource Type Ċ import Ġorg . step ik . android . domain . step . repository . Step Repository Ċ import Ġorg . step ik . android . domain . step _ source . repository . Step Source Repository Ċ import Ġorg . step ik . android . model . Step Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠStep Source Interactor Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġstep Source Repository : ĠStep Source Repository , ĊĠĠĠ Ġprivate Ġval Ġstep Repository : ĠStep Repository , ĊĠĠĠ Ġprivate Ġval Ġstep Content Resolver : ĠStep Content Resolver Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġchange Step Block Text ( step : ĠStep , Ġtext : ĠString ): ĠSingle < Step Persistent Wrapper > Ġ= ĊĠĠĠĠĠĠĠ Ġstep Source Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Step Source ( step . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġsource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep Source Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Step Source ( source . copy ( block Ġ= Ġsource . block . copy ( text Ġ= Ġtext ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Step ( step . id , Ġprimary Source Type Ġ= ĠDataSource Type . REMOTE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap ( step Content Resolver :: resolve Persistent Content ) ĊĊĠĠĠ Ġfun Ġfetch Step ( step : ĠStep ): ĠSingle < Step Persistent Wrapper > Ġ= ĊĠĠĠĠĠĠĠ Ġstep Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Step ( step . id , Ġprimary Source Type Ġ= ĠDataSource Type . REMOTE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap ( step Content Resolver :: resolve Persistent Content ) Ċ }