/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠAnd rey ĠT ol pe ev Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . github . v ase 4 kin . team city app . changes . presenter Ċ Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġcom . github . v ase 4 kin . team city app . account . create . data . On Loading Listener Ċ import Ġcom . github . v ase 4 kin . team city app . base . list . presenter . Base List Presenter Impl Ċ import Ġcom . github . v ase 4 kin . team city app . base . tracker . View Tracker Ċ import Ġcom . github . v ase 4 kin . team city app . changes . api . Changes Ċ import Ġcom . github . v ase 4 kin . team city app . changes . data . Changes DataManager Ċ import Ġcom . github . v ase 4 kin . team city app . changes . data . Changes DataModel Ċ import Ġcom . github . v ase 4 kin . team city app . changes . data . Changes DataModel Impl Ċ import Ġcom . github . v ase 4 kin . team city app . changes . extractor . Changes Value Extractor Ċ import Ġcom . github . v ase 4 kin . team city app . changes . view . Changes View Ċ import Ġcom . m ug en . M ug en Callbacks Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠPres enter Ġmanages Ġlogic Ġof Ġ[ com . github . v ase 4 kin . team city app . changes . view . Changes Fragment ] Ċ Ġ*/ Ċ class ĠChanges Presenter Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġview : ĠChanges View , ĊĠĠĠ Ġdata Manager : ĠChanges DataManager , ĊĠĠĠ Ġtracker : ĠView Tracker , ĊĠĠĠ Ġvalue Extractor : ĠChanges Value Extractor Ċ ) Ġ: ĠBase List Presenter Impl < Changes DataModel , ĠChanges . Change , ĠChanges View , ĠChanges DataManager , ĠView Tracker , ĠChanges Value Extractor >( ĊĠĠĠ Ġview , ĊĠĠĠ Ġdata Manager , ĊĠĠĠ Ġtracker , ĊĠĠĠ Ġvalue Extractor Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġvar Ġis Load More Loading Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Views () ĊĠĠĠĠĠĠĠ Ġview . set Load More Listener ( object Ġ: ĠM ug en Callbacks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad More () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Load More Loading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . add Load More () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Manager . load More ( object Ġ: ĠOn Loading Listener < List < Changes . Change >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( data : ĠList < Changes . Change >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . remove Load More () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . add More Build s ( Changes DataModel Impl ( data . to Mutable List ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Load More Loading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fail ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . remove Load More () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Retry Load More Sn ackBar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Load More Loading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisLoading (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Load More Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Loaded All Items (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ! data Manager . can Load More () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġview . replace Skeleton View Content () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġload Data ( ĊĠĠĠĠĠĠĠ Ġloading Listener : ĠOn Loading Listener < List < Changes . Change >>, ĊĠĠĠĠĠĠĠ Ġupdate : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Manager . load Limit ed ( value Extractor . url , Ġloading Listener , Ġupdate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġcreate Model ( data : ĠList < Changes . Change >): ĠChanges DataModel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠChanges DataModel Impl ( data . to Mutable List ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Views Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Views Created () ĊĠĠĠĠĠĠĠ Ġdata Manager . load Tab Title ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Extractor . url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠOn Loading Listener < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( data : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Manager . post Change Tab Title Event ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fail ( errorMessage : ĠString ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ