package Ġcom . jes en . cod . jet pack video . ui . mine Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . paging . Item Key ed DataSource Ċ import Ġcom . alibaba . fastjson . Type Reference Ċ import Ġcom . jes en . cod . jet pack video . Abs ViewModel Ċ import Ġcom . jes en . cod . jet pack video . model . Feed Ċ import Ġcom . jes en . cod . jet pack video . ui . login . User Manager Ċ import Ġcom . jes en . cod . lib network . ApiService Ċ import Ġjava . util .* Ċ Ċ private Ġconst Ġval ĠURL _ FA V OR ITE _ HISTORY Ġ= Ġ"/ feeds / query User Behavior List " Ċ Ċ class ĠF avorite History ViewModel Ġ: ĠAbs ViewModel < Feed >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Behavior : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Behavior ( behavior : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Behavior Ġ= Ġbehavior ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate DataSource (): ĠDataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDataSource () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠDataSource Ġ: ĠItem Key ed DataSource < Int , ĠFeed >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetKey ( item : ĠFeed ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload Initial ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams : ĠLoad Initial Params < Int >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback : ĠLoad Initial Callback < Feed > ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . requested Initial Key ?. let Ġ{ Ġload Data ( it , Ġcallback ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload After ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Feed >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Data ( params . key , Ġcallback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload Before ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Feed >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( Collections . emptyList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġload Data ( feed Id : ĠInt , Ġcallback : ĠItem Key ed DataSource . Load Callback < Feed >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠApi Service . get < List < Feed >>( URL _ FA V OR ITE _ HISTORY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Params (" behavior ", Ġm Behavior ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Params (" feed Id ", Ġfeed Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Params (" page Count ", Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Params (" userId ", ĠUser Manager . get (). userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. response Type ( object Ġ: ĠType Reference < ArrayList < Feed ?> ?> () Ġ{} . type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠList < Feed > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . body Ġ== Ġnull ) Ġempty List () Ġelse Ġresponse . body Ġas ĠList < Feed > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( result ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( feed Id Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( boundary Page Data Ġas ĠMutable LiveData ). post Value ( result ?. size Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }