package com.wangdaye.mysplash.me.presenter.activity;
import com.wangdaye.mysplash.common.data.entity.unsplash.User;
import com.wangdaye.mysplash.common.data.service.UserService;
import com.wangdaye.mysplash.common.i.model.UserModel;
import com.wangdaye.mysplash.common.i.presenter.UserPresenter;
import com.wangdaye.mysplash.common.i.view.UserView;
import com.wangdaye.mysplash.common.utils.manager.AuthManager;
import retrofit2.Call;
import retrofit2.Response;
/**
* User implementor.
* */
public class UserImplementor
implements UserPresenter {
private UserModel model;
private UserView view;
private OnRequestUserProfileListener requestUserProfileListener;
public UserImplementor(UserModel model, UserView view) {
this.model = model;
this.view = view;
}
@Override
public void requestUser() {
requestUserProfileListener = new OnRequestUserProfileListener();
model.getUserService().requestUserProfile(
AuthManager.getInstance().getUsername(),
requestUserProfileListener);
}
@Override
public void followUser() {
// do nothing.
}
@Override
public void cancelFollowUser() {
// do nothing.
}
@Override
public void cancelRequest() {
if (requestUserProfileListener != null) {
requestUserProfileListener.cancel();
}
model.getUserService().cancel();
}
@Override
public void setUser(User u) {
model.setUser(u);
}
@Override
public User getUser() {
return model.getUser();
}
// interface.
// on request user profile swipeListener.
private class OnRequestUserProfileListener implements UserService.OnRequestUserProfileListener {
// data
private boolean canceled;
OnRequestUserProfileListener() {
canceled = false;
}
public void cancel() {
canceled = true;
}
@Override
public void onRequestUserProfileSuccess(Call<User> call, Response<User> response) {
if (canceled) {
return;
}
if (response.isSuccessful() && response.body() != null) {
model.setUser(response.body());
view.drawUserInfo(response.body());
} else {
requestUser();
}
}
@Override
public void onRequestUserProfileFailed(Call<User> call, Throwable t) {
if (canceled) {
return;
}
requestUser();
}
}
}