package Ġcom . shark ab oi . media hub . data . paging Ċ Ċ import Ġandroidx . paging . Paging Source Ċ import Ġandroidx . paging . Paging State Ċ import Ġcom . har old admin . cn rad apter . Network Response Ċ import Ġcom . shark ab oi . media hub . common . extensions . empty String Ċ import Ġcom . shark ab oi . media hub . data . api . constants . Api Constants Ċ import Ġcom . shark ab oi . media hub . data . api . models . ApiError Ċ import Ġcom . shark ab oi . media hub . data . api . models . anime . An ime Suggestions Response Ċ import Ġcom . shark ab oi . media hub . data . api . ret rofit . An ime Service Ċ import Ġcom . shark ab oi . media hub . data . wrappers . MH Error Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠAn ime Suggestions DataSource ( ĊĠĠĠ Ġprivate Ġval Ġan ime Service : ĠAn ime Service , ĊĠĠĠ Ġprivate Ġval ĠaccessToken : ĠString ?, ĊĠĠĠ Ġprivate Ġval Ġshow N sf w : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠP aging Source < Int , ĠAn ime Suggestions Response . Data >() Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠĠ Ġprev Key Ġ== Ġnull Ġ-> Ġfirst Ġpage ĊĠĠĠĠ Ġ* ĠĠ Ġnext Key Ġ== Ġnull Ġ-> Ġlast Ġpage ĊĠĠĠĠ Ġ* ĠĠ Ġboth Ġprev Key Ġand Ġnext Key Ġnull Ġ-> Ġonly Ġone Ġpage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Refresh Key ( state : ĠP aging State < Int , ĠAn ime Suggestions Response . Data >): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstate . anchor Position ?. let Ġ{ Ġanchor Position Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanchor Page Ġ= Ġstate . closest Page To Position ( anchor Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Page ?. prev Key ?. plus ( Api Constants . API _ PAGE _ LIMIT ) Ġ?: Ġanchor Page ?. next Key ?. minus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApi Constants . API _ PAGE _ LIMIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( params : ĠLoad Params < Int >): ĠLoad Result < Int , ĠAn ime Suggestions Response . Data > Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" params Ġ: Ġ${ params . key }") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġparams . key Ġ?: ĠApi Constants . API _ START _ OFFSET ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= ĠApi Constants . API _ PAGE _ LIMIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( accessToken Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM H Error . Login Expired Error . get Throwable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Service . get An ime Suggestions Async ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Header Ġ= ĠApi Constants . BE AR ER _ SEPARATOR Ġ+ ĠaccessToken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġoffset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit Ġ= Ġlimit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn sf w Ġ= Ġif Ġ( show N sf w ) ĠApi Constants . NS FW _ AL SO Ġelse ĠApi Constants . S FW _ ONLY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNetwork Response . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Offset Ġ= Ġif Ġ( response . body . data . isEmpty ()) Ġnull Ġelse Ġoffset Ġ+ Ġlimit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresponse . body . data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Key Ġ= Ġif Ġ( offset Ġ== ĠApi Constants . API _ START _ OFFSET ) Ġnull Ġelse Ġoffset Ġ- Ġlimit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Key Ġ= Ġnext Offset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNetwork Response . Unknown Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNetwork Response . ServerError Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ?. get Throwable () Ġ?: ĠApi Error . Default Error . get Throwable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNetwork Response . Network Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( e . message Ġ?: ĠString . empty String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ