package Ġcom . aw al ide ck . m oo v ies . popular movies Ċ Ċ // class ĠMovie Paging Source ( Ċ // ĠĠĠ Ġprivate Ġval Ġbackend : ĠMovie ApiService Ċ // ) Ġ: ĠP aging Source < Int , ĠMovie >() Ġ{ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( params : ĠLoad Params < Int >): ĠLoad Result < Int , ĠMovie > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Page Number Ġ= Ġparams . key Ġ?: Ġ 1 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġbackend . get Pop ular Movies ( next Page Number ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Page ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresponse . results , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Key Ġ= Ġnull , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Key Ġ= Ġresponse . page Ġ+ Ġ 1 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Error ( e ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠHttp Exception ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Error ( e ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġget Refresh Key ( state : ĠP aging State < Int , ĠMovie >): ĠInt ? Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġstate . anchor Position ?. let Ġ{ anchor Position -> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanchor Page Ġ= Ġstate . closest Page To Position ( anchor Position ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Page ?. prev Key ?. plus ( 1 ) Ġ?: Ġanchor Page ?. next Key ?. minus ( 1 ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ //}