package Ġcom . kom ay ip . common lib . base . re cyclerView . diff util . paging . repo Ċ Ċ import Ġandroidx . paging . Page Key ed DataSource Ċ import Ġcom . kom ay ip . common lib . ext . dis posed By Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ Ċ abstract Ġclass ĠBase Page Key ed DataSource < T > Ġ: ĠPage Key ed DataSource < Int , ĠT >() Ġ{ ĊĊĠĠĠ Ġ// Ġindicate Ġthe Ġsource Ġis Ġzero Ġbased , Ġ 0 Ġif Ġtrue , Ġ 1 Ġotherwise ĊĠĠĠ Ġabstract Ġval Ġis Zero Based : ĠBoolean ĊĊĠĠĠ Ġ// Ġimplement Ġdata Ġsource Ġapi Ġor Ġdao Ġetc ĊĠĠĠ Ġabstract Ġfun Ġquery Data ( page : ĠInt ): ĠObservable < List < T >> ĊĊĠĠĠ Ġprivate Ġval Ġdispose Bag Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun Ġload Initial ( ĊĠĠĠĠĠĠĠ Ġparams : ĠLoad Initial Params < Int >, ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoad Initial Callback < Int , ĠT > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġif Ġ( is Zero Based ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠgetData ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( it , Ġnull , Ġpage . inc ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dis posed By ( dispose Bag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload After ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġparams . key ĊĠĠĠĠĠĠĠ ĠgetData ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( it , Ġpage . inc ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dis posed By ( dispose Bag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Before ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġparams . key ĊĠĠĠĠĠĠĠ ĠgetData ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( it , Ġpage . dec ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dis posed By ( dispose Bag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetData ( current : ĠInt ): ĠObservable < List < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġquery Data ( current ). onError Return Item ( listOf ()) ĊĠĠĠ Ġ} Ċ }