package Ġcom . sh id . m ang alist . data . remote Ċ Ċ import Ġandroidx . paging . Experimental Paging Api Ċ import Ġandroidx . paging . Paging Source Ċ import Ġcom . sh id . m ang alist . data . remote . network . Api Services Ċ import Ġcom . sh id . m ang alist . data . remote . response . main _ response . An ime ListResponse Ċ import Ġcom . sh id . m ang alist . ui . home . Home Fragment Ċ import Ġjavax . inject . Inject Ċ Ċ @ Experimental Paging Api Ċ class ĠAn ime Paging Source Ġ@ Inject Ġconstructor ( val Ġbackend : ĠApi Services Ċ ) Ġ: ĠP aging Source < Int , ĠAn ime ListResponse >() Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( ĊĠĠĠĠĠĠĠ Ġparams : ĠLoad Params < Int > ĊĠĠĠ Ġ): ĠLoad Result < Int , ĠAn ime ListResponse > Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġrefresh Ġat Ġpage Ġ 1 Ġif Ġundefined . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Page Number Ġ= Ġparams . key Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġbackend . get Top An ime Paging ( Home Fragment . type An ime , next Page Number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresponse . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Key Ġ= Ġif Ġ( next Page Number Ġ== Ġ 1 ) Ġnull Ġelse Ġnext Page Number Ġ- Ġ 1 , Ġ// ĠOnly Ġpaging Ġforward . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Key Ġ= Ġif Ġ( next Page Number Ġ> Ġ 7 ) Ġnull Ġelse Ġnext Page Number Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHandle Ġerrors Ġin Ġthis Ġblock Ġand Ġreturn ĠLoad Result . Error Ġif Ġit Ġis Ġan ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpected Ġerror Ġ( such Ġas Ġa Ġnetwork Ġfailure ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }