package com.gzsll.hupu.ui.userprofile;
import android.support.annotation.NonNull;
import com.gzsll.hupu.api.game.GameApi;
import com.gzsll.hupu.bean.UserData;
import com.gzsll.hupu.bean.UserResult;
import com.gzsll.hupu.injector.PerActivity;
import javax.inject.Inject;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.functions.Func1;
/**
* Created by sll on 2016/3/11.
*/
@PerActivity
public class UserProfilePresenter implements UserProfileContract.Presenter {
private GameApi mGameApi;
private String uid;
private Subscription mSubscription;
private UserProfileContract.View mUserProfileView;
@Inject
public UserProfilePresenter(GameApi gameApi, String uid) {
mGameApi = gameApi;
this.uid = uid;
}
@Override
public void receiveUserInfo() {
mUserProfileView.showLoading();
mSubscription = mGameApi.getUserInfo(uid).map(new Func1<UserData, UserResult>() {
@Override
public UserResult call(UserData userData) {
if (userData != null) {
return userData.result;
}
return null;
}
}).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<UserResult>() {
@Override
public void call(UserResult userResult) {
mUserProfileView.hideLoading();
if (userResult != null) {
mUserProfileView.renderUserData(userResult);
} else {
mUserProfileView.showError();
}
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
mUserProfileView.hideLoading();
mUserProfileView.showError();
}
});
}
@Override
public void attachView(@NonNull UserProfileContract.View view) {
mUserProfileView = view;
}
@Override
public void detachView() {
if (mSubscription != null && !mSubscription.isUnsubscribed()) {
mSubscription.unsubscribe();
}
mUserProfileView = null;
}
}