package Ġsample . books . domain Ċ Ċ import Ġsample . base . domain . Rx Schedulers Ċ import Ġsample . base . domain . Single UseCase Ċ import Ġsample . books . domain . Book ListItem . Book Item Ċ import Ġsample . books . domain . Book ListItem . Header Item Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . rx kotlin . to Flow able Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠUse Ġcase Ġfor Ġflatten ing Ġthe Ġ[ Book Groups ][ Book Group ] Ġinto Ġlist Ġof Ġ[ Book List Items ][ Book ListItem ]. Ċ Ġ*/ Ċ interface ĠFlat ten Book Groups UseCase Ġ: ĠSingle UseCase < List < Book Group >, ĠList < Book ListItem >> Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof Ġ[ Flatten Book Groups UseCase ]. Ċ Ġ*/ Ċ class ĠFlat ten Book Groups UseCase Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġs chedulers : ĠRx Schedulers Ċ ) Ġ: ĠFlat ten Book Groups UseCase Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( input : ĠList < Book Group >): ĠSingle < List < Book ListItem >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput . to Flow able () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( schedul ers . computation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġgroup Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . books ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map To ( mutable ListOf < Book ListItem >( Header Item ( group . name ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBook Item ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Flow able () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġ} Ċ }