package Ġorg . step ic . d roid . features . stories . repository Ċ Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġorg . step ic . d roid . di . App Singleton Ċ import Ġorg . step ic . d roid . features . stories . model . View ed Story Template Ċ import Ġorg . step ic . d roid . storage . dao . ID ao Ċ import Ġorg . step ik . android . data . stories . source . Story Templates Remote DataSource Ċ import Ġorg . step ik . android . model . Story Template Ċ import Ġjavax . inject . Inject Ċ Ċ @ App Singleton Ċ class ĠStory Templates Repository Impl Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġstory Templates Remote Remote DataSource : ĠStory Templates Remote DataSource , ĊĠĠĠ Ġprivate Ġval Ġviewed Story Template Dao : ĠID ao < View ed Story Template > Ċ ) Ġ: ĠStory Templates Repository Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠST ORY _ TEMP LAT ES _ VERSION Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Story Templates ( lang : ĠString ): ĠSingle < List < Story Template >> Ġ= ĊĠĠĠĠĠĠĠ Ġstory Templates Remote Remote DataSource . get Story Templates ( lang ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġstory Templates Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstory Templates . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġtemplate Ġ-> Ġtemplate . version Ġ<= ĠST ORY _ TEMP LAT ES _ VERSION Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By ( Story Template :: position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View ed St ories Ids (): ĠSingle < Set < Long >> Ġ= ĊĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewed Story Template Dao ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getAll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . story Template Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark Story As View ed ( story Template Id : ĠLong ): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ ĠComp letable . from Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewed Story Template Dao . insert Or Replace ( View ed Story Template ( story Template Id )) ĊĠĠĠĠĠĠĠ Ġ} Ċ }