package io.hefuyi.zhihudaily.mvp.presenter; import io.hefuyi.zhihudaily.domain.FetchStartImageUsecase; import io.hefuyi.zhihudaily.mvp.contract.SplashContract; import io.hefuyi.zhihudaily.mvp.model.StartImage; import rx.Subscription; import rx.functions.Action1; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * Created by hefuyi on 16/8/19. */ public class SplashPresenter implements SplashContract.Presenter { private Subscription mSubscription; private SplashContract.View mView; private FetchStartImageUsecase mUsecase; public SplashPresenter(FetchStartImageUsecase usecase) { this.mUsecase = usecase; } @Override public void attachView(SplashContract.View view) { this.mView = view; } @Override public void onCreate() { } @Override public void onStart() { } @Override public void onPause() { } @Override public void onStop() { if (mSubscription != null && !mSubscription.isUnsubscribed()) { mSubscription.unsubscribe(); } } @Override public void refresh(int width, int height) { mUsecase.setScreenSize(width, height); mSubscription = mUsecase.execute() .subscribeOn(Schedulers.io()) .onErrorReturn(new Func1<Throwable, StartImage>() { @Override public StartImage call(Throwable throwable) { mView.showError(); return null; } }) .subscribe(new Action1<StartImage>() { @Override public void call(StartImage startImage) { if (startImage != null) { mView.showBackgroundImage(startImage); } } }); } }