package com.mathiasluo.designer.presenter;
import android.graphics.Bitmap;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.mathiasluo.designer.app.APP;
import com.mathiasluo.designer.bean.User;
import com.mathiasluo.designer.model.IModel.UserModel;
import com.mathiasluo.designer.model.ImageModelImpl;
import com.mathiasluo.designer.model.UserModelImpl;
import com.mathiasluo.designer.utils.LogUtils;
import com.mathiasluo.designer.utils.SPUtil;
import com.mathiasluo.designer.utils.ToastUtil;
import com.mathiasluo.designer.utils.UserUtil;
import com.mathiasluo.designer.view.activity.MainActivity;
import com.mathiasluo.designer.view.widget.CircleImageView;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/**
* Created by MathiasLuo on 2016/3/10.
*/
public class MainActivityPresenter extends BasePresenter<MainActivity> {
private UserModel mUserModel;
private User mCurrentUser;
public MainActivityPresenter() {
mUserModel = UserModelImpl.getInstance();
}
public void loadUserInfoFromRealm() {
mUserModel.getCurrentUser()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> {
if (user != null) {
mCurrentUser = user;
getView().loadUerInfo(mCurrentUser);
//从网络更新用户消息
loadUserInfoFromNet();
} else ToastUtil.Toast("你还没登录哟\n登陆后会更加精彩哟");
}
, throwable -> {
LogUtils.e("为什么又在这里出现问题了" + throwable.toString());
ToastUtil.Toast("出现了不可预计的错误...");
});
}
public void loadUserInfoFromNet() {
mUserModel.getUseWithAccessToken(SPUtil.getAccessToken(APP.getInstance()))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<User, User>() {
@Override
public User call(User user) {
if (!UserUtil.enqual(user, mCurrentUser)) {
user.setAccessToken(mCurrentUser.getAccessToken());
LogUtils.d("更新USER数据成功");
mUserModel.saveUserToReaml(user);
return user;
}
return null;
}
})
.subscribe(new Action1<User>() {
@Override
public void call(User user) {
if (user != null) {
mCurrentUser = user;
getView().loadUerInfo(mCurrentUser);
}
return;
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
LogUtils.e("为什么从网络上更新用户消息失败呀------>>>>" + throwable.toString());
}
});
}
public void loadImageWithurl(String url, CircleImageView imageView) {
ImageModelImpl.getInstance().loadImageWithTargetView(url, new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageView.setImageBitmap(resource);
}
});
}
public User getCurrentUser() {
return mCurrentUser;
}
}