package Ġnet . k am rad tf amily . wine che ese app Ċ Ċ import Ġandroidx . paging . Experimental Paging Api Ċ import Ġandroidx . paging . Paging Source Ċ import Ġandroidx . paging . Paging State Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . io . IOException Ċ Ċ class ĠItem Key ed W ine Che ese Paging Source ( val Ġwine Che ese Api : ĠW ine Che ese Api , Ġval Ġid : ĠInt ) Ġ Ġ: ĠP aging Source < Int , ĠW ine Che ese Post >() Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( params : ĠLoad Params < Int >): ĠLoad Result < Int , ĠW ine Che ese Post > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġwine Che ese Api . get Top ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter Ġ= Ġif Ġ( params Ġis ĠLoad Params . Append ) Ġparams . key Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Ġ= Ġif Ġ( params Ġis ĠLoad Params . Prepend ) Ġparams . key Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit Ġ= Ġparams . load Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). data . children . map Ġ{ Ġit . data Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġitems , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Key Ġ= Ġitems . first OrNull ()?. id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Key Ġ= Ġitems . last OrNull ()?. id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Paging Api :: class ) ĊĠĠĠ Ġoverride Ġfun Ġget Refresh Key ( state : ĠP aging State < Int , ĠW ine Che ese Post >): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġid Ġfield Ġis Ġa Ġunique Ġidentifier Ġfor Ġpost Ġitems . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ( no Ġit Ġis Ġnot Ġthe Ġtitle Ġof Ġthe Ġpost Ġ:) Ġ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// www . reddit . com / dev / api ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġreturn Ġstate . anchor Position ?. let Ġ{ Ġanchor Position Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . closest Item To Position ( anchor Position )?. id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ