package Ġru . nbsp . push ka . presentation . device . feed Ċ Ċ import Ġru . nbsp . push ka . di . annotation . Storage Repository Ċ import Ġru . nbsp . push ka . bus . Rx Bus Ċ import Ġru . nbsp . push ka . bus . event . device . Load Devices Event Ċ import Ġru . nbsp . push ka . presentation . core . base . Base Presenter Ċ import Ġru . nbsp . push ka . presentation . core . model . device . Presentation Device Ċ import Ġru . nbsp . push ka . presentation . core . state . State Ċ import Ġru . nbsp . push ka . repository . device . Device Repository Ċ import Ġru . nbsp . push ka . service . Service Manager Ċ import Ġrx . Observable Ċ import Ġrx . Subscriber Ċ import Ġrx . subscriptions . Composite Subscription Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠDim or in ny Ġon Ġ 3 1 . 0 3 . 1 6 . Ċ Ġ*/ Ċ class ĠDevices Presenter ĊĠĠĠ Ġ@ Inject Ġconstructor (@ Storage Repository Ġval Ġdevice Repository : ĠDevice Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrx Bus : ĠRx Bus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Manager : ĠService Manager ): ĠBase Presenter Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġview : ĠDevices View ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġsubscription : ĠComposite Subscription Ġ= ĠComposite Subscription () ĊĠĠĠ Ġvar Ġdevices : ĠList < Presentation Device > Ġ= ĠArrayList () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ Ġobserve Load Devices Event () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Load Devices Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscription . add ( rx Bus . events ( Load Devices Event :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad Devices Event . Success Ġ-> Ġdevice Repository . get Devices () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad Devices Event . Error Ġ-> ĠObservable . error ( it . t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Load Devices Network Subscriber ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Devices From Cache () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscription . add ( device Repository . get Devices (). subscribe ( Load Devices Cache Subscriber ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Devices From Server () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice Manager . load Devices () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠLoad Devices Cache Subscriber Ġ: ĠSubscriber < List < Presentation Device >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed () Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( result : ĠList < Presentation Device >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices Ġ= Ġresult ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! result . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. setState ( State . STATE _ NORMAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. set Devices ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠLoad Devices Network Subscriber Ġ: ĠSubscriber < List < Presentation Device >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed () Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. disable Swipe Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( devices . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. setState ( State . STATE _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIts Ġworkaround . ĠI Ġdon 't Ġknow , Ġhow Ġto Ġdo Ġit Ġmore Ġeleg ant . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Devices Presenter . observe Load Devices Event () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( result : ĠList < Presentation Device >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. disable Swipe Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. setState ( if Ġ( result . isEmpty ()) ĠState . STATE _ EMPTY Ġelse ĠState . STATE _ NORMAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. set Devices ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscription . unsubscribe () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} Ċ }