package com.photo.photogallery.photodetail;
import android.support.annotation.NonNull;
import com.photo.photogallery.BasePresenter;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import rx.subscriptions.CompositeSubscription;
public class PhotoDetailPresenter implements BasePresenter {
@NonNull
private final PhotoDetailModel photoDetailModel;
@NonNull
private PhotoDetailView photoDetailView;
@NonNull
private CompositeSubscription subscriptions;
@NonNull
private String photoId;
public PhotoDetailPresenter(@NonNull String photoId, @NonNull PhotoDetailModel photoDetailModel, @NonNull PhotoDetailView photoDetailView) {
this.photoId = photoId;
this.photoDetailModel = photoDetailModel;
this.photoDetailView = photoDetailView;
this.subscriptions = new CompositeSubscription();
this.photoDetailView.setPresenter(this);
}
@Override
public void subscribe() {
reloadData();
}
@Override
public void unsubscribe() {
subscriptions.clear();
}
public void reloadData() {
photoDetailView.showLoadingUi();
subscriptions.clear();
Subscription subscription = photoDetailModel
.getInfo(photoId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
info -> {
photoDetailView.showContentUi(info);
},
error -> {
photoDetailView.showErrorUi(error);
}
);
subscriptions.add(subscription);
}
}