package Ġorg . step ic . d roid . persistence . downloads . resolvers . structure Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġorg . step ic . d roid . di . App Singleton Ċ import Ġorg . step ic . d roid . persistence . model . Structure Ċ import Ġorg . step ic . d roid . util . get Prog resses Ċ import Ġorg . step ic . d roid . util . then Ċ import Ġorg . step ik . android . domain . progress . repository . Progress Repository Ċ import Ġorg . step ik . android . domain . section . repository . Section Repository Ċ import Ġorg . step ik . android . model . Section Ċ import Ġjavax . inject . Inject Ċ Ċ @ App Singleton Ċ class ĠSection Structure Resolver Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġsection Repository : ĠSection Repository , ĊĠĠĠ Ġprivate Ġval Ġunit Structure Resolver : ĠUnit Structure Resolver , ĊĠĠĠ Ġprivate Ġval Ġprogress Repository : ĠProgress Repository Ċ ): ĠStructure Resolver < Section > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġresolve Structure ( var arg Ġids : ĠLong ): ĠObservable < Structure > Ġ= ĊĠĠĠĠĠĠĠ Ġsection Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Sections (* ids ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Observable Ġ{ Ġsections Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Structure (* sections . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Structure ( var arg Ġitems : ĠSection ): ĠObservable < Structure > Ġ= ĊĠĠĠĠĠĠĠ Ġprogress Repository . get Prog resses (* items . as Iterable (). get Prog resses ()). to Comp letable () Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . concat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . map Ġ{ Ġsection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit Structure Resolver . resolve Structure ( section . course , Ġsection . id , Ġunit Ids Ġ= Ġ* section . units . to Long Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ }