package Ġcz . vo j ta . un id architecture . tracks Ċ Ċ import Ġcz . vo j ta . un id architecture . Load Next Ċ import Ġcz . vo j ta . un id architecture . Params Ċ import Ġcz . vo j ta . un id architecture . Refresh Ċ import Ġcz . vo j ta . un id architecture . Uni D ViewModel Ċ import Ġio . reactivex . Observable Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠTrack s ViewModel Ġ: ĠUni D ViewModel < List < Track >>() Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdomain : ĠTrack s Domain ĊĊĠĠĠ Ġoverride Ġfun Ġload ( params : ĠParams ): ĠObservable < List < Track >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdomain . tracks (" first Ġpage ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh ( refresh Params : ĠRefresh ): ĠObservable < List < Track >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdomain . tracks (" first Ġpage ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext Page ( next Page Params : ĠLoad Next ): ĠObservable < List < Track >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdomain . next Page (" next Ġpage ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcombine Data ( old Data : ĠList < Track >, ĠnewData : ĠList < Track >): ĠList < Track > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Data Ġ+ ĠnewData ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠMain View Ġ: ĠUni D ViewModel . View < List < Track >> Ġ{ Ċ }