package com.halzhang.android.apps.startupnews.presenter;
import android.support.annotation.NonNull;
import com.halzhang.android.startupnews.data.entity.SNDiscuss;
import com.halzhang.android.startupnews.data.entity.Status;
import com.halzhang.android.startupnews.data.net.ISnApi;
import com.halzhang.android.startupnews.data.utils.SessionManager;
import javax.inject.Inject;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Created by Hal on 16/8/14.
*/
public class DiscussPresenter implements DiscussContract.Presenter {
@NonNull
private final DiscussContract.View mView;
@NonNull
private final ISnApi mSnApi;
@NonNull
private final SessionManager mSessionManager;
private String mFnid;
@Inject
public DiscussPresenter(DiscussContract.View view, ISnApi snApi, SessionManager sessionManager) {
mView = view;
mSnApi = snApi;
mSessionManager = sessionManager;
}
@Inject
void setupListener() {
mView.setPresenter(this);
}
@Override
public void start() {
}
@Override
public void stop() {
}
@Override
public void getDiscuss(String url) {
mSnApi.getDiscuss(url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<SNDiscuss>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
if (mView.isActive()) {
mView.onGetDiscussFailure(e);
}
}
@Override
public void onNext(SNDiscuss snDiscuss) {
if (mView.isActive()) {
if (snDiscuss != null) {
mFnid = snDiscuss.getFnid();
}
mView.onGetDiscuss(snDiscuss);
}
}
});
}
@Override
public void comment(String message) {
if (!mSessionManager.isValid()) {
if (mView.isActive()) {
mView.onSessionExpired();
}
return;
}
mSnApi.comment(message, mFnid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Status>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
if (mView.isActive()) {
mView.onCommentFailure(e);
}
}
@Override
public void onNext(Status status) {
if (mView.isActive()) {
mView.onCommentSuccess(status);
}
}
});
}
}