package Ġcom . m human . mov i ep lot . data . remote . movie Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . paging . Page Key ed DataSource Ċ import Ġcom . m human . mov i ep lot . network . model . Movie InfoList Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġorg . k oin . core . K oin Component Ċ import Ġorg . k oin . core . inject Ċ Ċ class ĠMovie Paging DataSource Ġ: ĠPage Key ed DataSource < Int , ĠMovie InfoList >(), ĠK oin Component Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable : ĠComposite Disposable Ġby Ġlazy Ġ{ ĠComposite Disposable () Ġ} ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠMovie Paging Repository Ġby Ġinject () ĊĠĠĠ Ġval Ġnetwork Errors : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġoverride Ġfun Ġload Initial ( ĊĠĠĠĠĠĠĠ Ġparams : ĠLoad Initial Params < Int >, ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoad Initial Callback < Int , ĠMovie InfoList > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . getAll Movie List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= ĠFIRST _ PAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġ{ Ġresult Ġ-> Ġcallback . on Result ( result , Ġnull , ĠFIRST _ PAGE Ġ+ Ġ 1 ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailed Ġ= Ġ{ Ġnetwork Errors . post Value ( ERROR _ MESSAGE _ REQUEST _ FAILED ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload After ( ĊĠĠĠĠĠĠĠ Ġparams : ĠLoad Params < Int >, ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoad Callback < Int , ĠMovie InfoList > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . getAll Movie List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġparams . key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġ{ Ġresult Ġ-> Ġcallback . on Result ( result , Ġparams . key Ġ+ Ġ 1 ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailed Ġ= Ġ{ Ġnetwork Errors . post Value ( ERROR _ MESSAGE _ REQUEST _ FAILED ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Before ( ĊĠĠĠĠĠĠĠ Ġparams : ĠLoad Params < Int >, ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoad Callback < Int , ĠMovie InfoList > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . getAll Movie List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġparams . key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġ{ Ġresult Ġ-> Ġcallback . on Result ( result , Ġparams . key Ġ- Ġ 1 ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailed Ġ= Ġ{ Ġnetwork Errors . post Value ( ERROR _ MESSAGE _ REQUEST _ FAILED ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFIRST _ PAGE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠERROR _ MESSAGE _ REQUEST _ FAILED Ġ= Ġ" ëį°ìĿ´íĦ° ĠìļĶ ì²Ń ìĿĦ Ġìĭ¤ íĮ ¨ íķĺ ìĺ Ģ ìĬµëĭĪëĭ¤ .\ n ëĦ ¤íĬ¸ ìĽĮ íģ¬ ĠìĦ¤ìłķ ìĿĦ ĠíĻķìĿ¸ íķ´ ì£¼ ìĦ¸ìļĶ ." ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠERROR _ MESSAGE _ EMPTY _ DATA Ġ= Ġ" ì° ¾ ìľ¼ ìĭľ ëĬĶ Ġìĺģ íĻĶ Ġëį°ìĿ´íĦ° ê°Ģ Ġ\ n ìĦľ ë²Ħ ìĹĲ Ġì ¡´ ìŀ¬ íķĺì§Ģ ĠìķĬ ìĬµëĭĪëĭ¤ ." ĊĠĠĠ Ġ} Ċ } ĊĊ