package Ġcom . se b astian op igh i . best lyr ics . domain . use cases Ċ Ċ import Ġcom . se b astian op igh i . best lyr ics . domain . models . Track Entity Ċ import Ġcom . se b astian op igh i . best lyr ics . domain . repositories . Tracks Repository Ċ import Ġcom . se b astian op igh i . best lyr ics . domain . utils . Transformer Ċ import Ġio . reactivex . Observable ĊĊ Ċ open Ġclass ĠGet Tracks UseCase ( transformer : ĠTransformer < List < Track Entity >>, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġtracks Repository : ĠTrack s Repository Ċ ) Ġ: ĠUse Case < List < Track Entity >>( transformer ) Ġ{ ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPARAM _ PAGE Ġ= Ġ" page " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Page ( page : ĠInt ): ĠObservable < List < Track Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠHashMap < String , ĠInt >() ĊĠĠĠĠĠĠĠ Ġdata [ Get Tracks UseCase . PARAM _ PAGE ] Ġ= Ġpage ĊĠĠĠĠĠĠĠ Ġreturn Ġobservable ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Observable ( data : ĠMap < String , ĠAny >? ): ĠObservable < List < Track Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġdata ?. get ( Get Tracks UseCase . PARAM _ PAGE ) ĊĠĠĠĠĠĠĠ Ġpage ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtracks Repository . get Tracks ( page Ġas ĠInt ). to Observable () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġtracks Repository . get Tracks ( 1 ). to Observable () ĊĠĠĠ Ġ} Ċ Ċ }