package Ġcom . sh ash ank . ko opp . post Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . paging . Paging Source Ċ import Ġandroidx . paging . Paging State Ċ Ċ class ĠCharacter Paging Source ( private Ġval Ġapi Service : ĠApi Inte face ): ĠP aging Source < Int , ĠResult Data >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Refresh Key ( state : ĠP aging State < Int , ĠResult Data >): ĠInt ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstate . anchor Position ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( params : ĠLoad Params < Int >): ĠLoad Result < Int , ĠResult Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Page : ĠInt Ġ= Ġparams . key Ġ?: ĠFIRST _ PAGE _ INDEX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġapi Service . getData ( next Page ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnext Page Number : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( response ?. meta . pagination . links ?. next Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( response ?. meta . pagination . links ?. next !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Page Query Ġ= Ġuri . getQuery Parameter (" page ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Page Number Ġ= Ġnext Page Query ?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprev Page Number : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( response ?. meta . pagination . links ?. previous Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( response ?. meta . pagination . links ?. previous !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprev Page Query Ġ= Ġuri . getQuery Parameter (" page ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Page Number Ġ= Ġprev Page Query ?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Page ( data Ġ= Ġresponse . data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Key Ġ= Ġprev Page Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Key Ġ= Ġnext Page Number ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIRST _ PAGE _ INDEX Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ Ċ }