package com.halzhang.android.apps.startupnews.presenter;
import android.support.annotation.NonNull;
import com.halzhang.android.startupnews.data.net.ISnApi;
import javax.inject.Inject;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/**
* Presenter for Login
* Created by Hal on 16/6/12.
*/
public class LoginPresenter implements LoginContract.Presenter {
@NonNull
private final LoginContract.View mView;
@NonNull
private final ISnApi mSnApi;
@Inject
public LoginPresenter(@NonNull LoginContract.View view, @NonNull ISnApi snApi) {
mView = view;
mSnApi = snApi;
}
@Inject
void setupListener() {
mView.setPresenter(this);
}
@Override
public void login(final String username, final String password) {
mView.addSubscription(
mSnApi.getFnid()
.flatMap(new Func1<String, Observable<String>>() {
@Override
public Observable<String> call(String s) {
return mSnApi.login(s, username, password);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
if (mView.isActive()) {
mView.onLoginError(e);
}
}
@Override
public void onNext(String s) {
if (mView.isActive()) {
mView.onLoginResult(s);
}
}
})
);
}
/* no-op */
@Override
public void start() {
}
@Override
public void stop() {
}
}