package com.lqr.wechat.ui.presenter;
import android.net.Uri;
import android.text.TextUtils;
import com.bumptech.glide.Glide;
import com.lqr.wechat.R;
import com.lqr.wechat.api.ApiRetrofit;
import com.lqr.wechat.db.DBManager;
import com.lqr.wechat.db.model.Friend;
import com.lqr.wechat.model.cache.UserCache;
import com.lqr.wechat.model.response.GetUserInfoByIdResponse;
import com.lqr.wechat.ui.base.BaseActivity;
import com.lqr.wechat.ui.base.BasePresenter;
import com.lqr.wechat.ui.view.IMeFgView;
import com.lqr.wechat.util.LogUtils;
import com.lqr.wechat.util.UIUtils;
import io.rong.imlib.model.UserInfo;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class MeFgPresenter extends BasePresenter<IMeFgView> {
private UserInfo mUserInfo;
private boolean isFirst = true;
public MeFgPresenter(BaseActivity context) {
super(context);
}
public void loadUserInfo() {
mUserInfo = DBManager.getInstance().getUserInfo(UserCache.getId());
if (mUserInfo == null || isFirst) {
isFirst = false;
ApiRetrofit.getInstance().getUserInfoById(UserCache.getId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getUserInfoByIdResponse -> {
if (getUserInfoByIdResponse != null && getUserInfoByIdResponse.getCode() == 200) {
GetUserInfoByIdResponse.ResultEntity result = getUserInfoByIdResponse.getResult();
mUserInfo = new UserInfo(UserCache.getId(), result.getNickname(), Uri.parse(result.getPortraitUri()));
if (TextUtils.isEmpty(mUserInfo.getPortraitUri().toString())) {
mUserInfo.setPortraitUri(Uri.parse(DBManager.getInstance().getPortraitUri(mUserInfo)));
}
DBManager.getInstance().saveOrUpdateFriend(new Friend(mUserInfo.getUserId(), mUserInfo.getName(), mUserInfo.getPortraitUri().toString()));
fillView();
}
}, this::loadError);
} else {
fillView();
}
}
public void refreshUserInfo() {
UserInfo userInfo = DBManager.getInstance().getUserInfo(UserCache.getId());
if (userInfo == null) {
loadUserInfo();
} else {
mUserInfo = userInfo;
}
}
public void fillView() {
if (mUserInfo != null) {
Glide.with(mContext).load(mUserInfo.getPortraitUri()).centerCrop().into(getView().getIvHeader());
getView().getTvAccount().setText(UIUtils.getString(R.string.my_chat_account, mUserInfo.getUserId()));
getView().getTvName().setText(mUserInfo.getName());
}
}
private void loadError(Throwable throwable) {
LogUtils.sf(throwable.getLocalizedMessage());
UIUtils.showToast(throwable.getLocalizedMessage());
}
public UserInfo getUserInfo() {
return mUserInfo;
}
}