package Ġcom . h udson . wan android . data . repository Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . paging . Pager Ċ import Ġandroidx . paging . Paging Config Ċ import Ġcom . h udson . wan android . data . Wan Android Api Ċ import Ġcom . h udson . wan android . data . common . App Executor Ċ import Ġcom . h udson . wan android . data . common . merge call . Ret rofit Call Ċ import Ġcom . h udson . wan android . data . db . Wan Android Db Ċ import Ġcom . h udson . wan android . data . entity . Subject Ċ import Ġcom . h udson . wan android . data . entity . Subject Wrapper Ċ import Ġcom . h udson . wan android . data . entity . wrapper . Resource Ċ import Ġcom . h udson . wan android . data . repository . base . Base Network Bound Resource Ċ import Ġcom . h udson . wan android . data . repository . base . Network Bound Resource Ċ import Ġcom . h udson . wan android . data . repository . paging . TreeItem Remote Mediator Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠH udson Ġon Ġ 2 0 2 0 / 8 / 2 4 . Ċ Ġ*/ Ċ @ Singleton Ċ class ĠTree Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapp Executor : ĠApp Executor , ĊĠĠĠ Ġw an Android Api : ĠW an Android Api , ĊĠĠĠ Ġdb : Wan Android Db Ċ ): ĠArticle Repository ( wan Android Api , Ġdb ){ ĊĠĠĠ Ġprivate Ġvar Ġresource : ĠNetwork Bound Resource < List < Subject >, ĠSubject Wrapper >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġload Tree (): ĠLive Data < Resource < List < Subject >> >{ ĊĠĠĠĠĠĠĠ Ġresource Ġ= Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase Network Bound Resource < List < Subject >, ĠSubject Wrapper >( db . data Wrapper Dao (), Ġapp Executor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Fetch ( data : ĠList < Subject >? ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . should Fetch ( data ) Ġ|| Ġdata Ġ== Ġnull Ġ|| Ġdata . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( request Type : ĠSubject Wrapper ): ĠList < Subject >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequest Type . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Call () Ġ= ĠRet rofit Call ( wan Android Api . tree Category ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæľī åħ¬ ä¼Ĺ åı· æķ°æį® å®ŀä½ĵ ä¸İ å½ĵåīį æķ°æį® å®ŀä½ĵ ä¸Ģèĩ´ ï¼Į åĽłæŃ¤ éľĢè¦ģ åĮº åĪĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġidentity Info () Ġ= Ġ" home _ tab _ tree " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresource !!. as LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġretry (){ ĊĠĠĠĠĠĠĠ Ġresource ?. retry () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload TreeItem Articles ( tree Id : ĠInt , Ġsuper Id : ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠP ager ( config Ġ= ĠP aging Config ( pageSize Ġ= ĠNET WORK _ PAGE _ SIZE ), ĊĠĠĠĠĠĠĠ Ġremote Mediator Ġ= ĠTree Item Remote Mediator ( wan Android Api , Ġdb , Ġtree Id , Ġsuper Id )){ ĊĠĠĠĠĠĠĠ Ġdb . article Dao (). get Subject Paging Source ( tree Id , Ġsuper Id ) ĊĠĠĠ Ġ}. flow ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNET WORK _ PAGE _ SIZE Ġ= Ġ 2 0 ĊĠĠĠ Ġ} Ċ }