package Ġcom . b ub bble . presentation . user profile . shots Ċ Ċ import Ġcom . are l lo mobile . mvp . Inject ViewState Ċ import Ġcom . b ub bble . core . models . shot . Shot Ċ import Ġcom . b ub bble . core . network . No Network Exception Ċ import Ġcom . b ub bble . domain . user profile . User Sh ots Interactor Ċ import Ġcom . b ub bble . core ui . mvp . Base Presenter Ċ import Ġdagger . ass isted . Ass isted Ċ import Ġdagger . ass isted . Ass isted Factory Ċ import Ġdagger . ass isted . Ass isted Inject Ċ import Ġjava . util .* Ċ Ċ @ Inject ViewState Ċ class ĠUser Sh ots Presenter Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuser Sh ots Interactor : ĠUser Sh ots Interactor , ĊĠĠĠ Ġ@ Ass isted Ġprivate Ġval ĠuserId : ĠLong Ċ ) Ġ: ĠBase Presenter < User Sh ots View >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Max Page Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval Ġsh ots : ĠMutable List < Shot > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġis Sh ots Loading Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġis First Loading : ĠBoolean ĊĠĠĠĠĠĠĠ Ġprivate Ġget () Ġ= Ġcurrent Max Page Ġ== Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun Ġon First View Attach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on First View Attach () ĊĠĠĠĠĠĠĠ Ġview State . show Sh ots Loading Progress () ĊĠĠĠĠĠĠĠ Ġload More Sh ots ( current Max Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload More Sh ots ( page : ĠInt ) Ġ= Ġlaunch Safe Ġ{ ĊĠĠĠĠĠĠĠ Ġis Sh ots Loading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġuser Sh ots Request Params Ġ= ĠUser Sh ots Params ( userId , Ġpage , ĠPAGE _ SIZE ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Sh ots Ġ= Ġuser Sh ots Interactor . getUser Sh ots ( user Sh ots Request Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsh ots . addAll ( new Sh ots ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . show New Sh ots ( new Sh ots ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : Ġcom . b ub bble . core . network . No Network Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . show No Network Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . show Load More Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . hide Sh ots Loading Progress () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis Sh ots Loading Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is First Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . hide Sh ots Loading Progress () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . hide Sh ots Loading More Progress () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonLoad More Sh ots Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Sh ots Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview State . show Sh ots Loading More Progress () ĊĠĠĠĠĠĠĠ Ġcurrent Max Page ++ ĊĠĠĠĠĠĠĠ Ġload More Sh ots ( current Max Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġretry Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is First Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . hide No Network Layout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . show Sh ots Loading Progress () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . show Sh ots Loading More Progress () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġload More Sh ots ( current Max Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Shot Click ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview State . open Shot Details Screen ( shots [ position ]. id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPAGE _ SIZE Ġ= Ġ 2 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Ass isted Factory ĊĠĠĠ Ġinterface ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( userId : ĠLong ): ĠUser Sh ots Presenter ĊĠĠĠ Ġ} Ċ Ċ }