package com.halzhang.android.examples.dagger2example.login;
import android.support.annotation.NonNull;
import com.halzhang.android.examples.dagger2example.IUserApi;
import com.halzhang.android.examples.dagger2example.entity.User;
import javax.inject.Inject;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Login Presenter
* Created by Hal on 16/5/28.
*/
public class LoginPresenter implements LoginContract.Presenter {
@NonNull
private final IUserApi mUserApi;
@NonNull
private final LoginContract.View mLoginView;
@Inject
LoginPresenter(@NonNull IUserApi userApi, @NonNull LoginContract.View loginView) {
mUserApi = userApi;
mLoginView = loginView;
}
/**
* 注入自动调用,设置 Presenter
*/
@Inject
void setupListeners() {
mLoginView.setPresenter(this);
}
@Override
public void login(String username, String password) {
mUserApi.login(username, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<User>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
mLoginView.onLoginResult(0, e.getMessage());
}
@Override
public void onNext(User user) {
if (!mLoginView.isActive()) {
return;
}
if (user != null) {
mLoginView.onLoginResult(1, "success");
} else {
mLoginView.onLoginResult(0, "failure");
}
}
});
}
@Override
public void start() {
//noop
}
}