package com.ui.user;
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.design.widget.Snackbar;
import android.text.TextUtils;
import android.widget.ImageView;
import com.C;
import com.app.annotation.apt.Extra;
import com.app.annotation.apt.Router;
import com.app.annotation.apt.SceneTransition;
import com.app.annotation.aspect.Permission;
import com.base.BaseActivity;
import com.base.util.BindingUtils;
import com.base.util.SpUtil;
import com.base.util.ToastUtil;
import com.model._User;
import com.ui.main.R;
import com.ui.main.databinding.ActivityUserBinding;
import java.io.File;
@Router(C.USER_INFO)
public class UserActivity extends BaseActivity<UserPresenter, ActivityUserBinding> implements UserContract.View {
@Extra(C.HEAD_DATA)
public _User user;
@SceneTransition(C.TRANSLATE_VIEW)
public ImageView image;
@Override
public int getLayoutId() {
return R.layout.activity_user;
}
@Override
public void initView() {
initUser(user);
mPresenter.initAdapterPresenter(mViewBinding.lvComment.getPresenter(), user);
if (SpUtil.getUser() != null && TextUtils.equals(user.objectId, SpUtil.getUser().objectId)) {
mViewBinding.fab.setImageResource(R.drawable.ic_menu_camera);
mViewBinding.fab.setOnClickListener(v -> takePhoto());
} else mViewBinding.fab.setOnClickListener(v -> ToastUtil.show("ok"));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent mdata){
try {
File file = new File(getExternalCacheDir() + "user_photo.png");
if (!file.exists()) file = new File(BindingUtils.getUrlByIntent(mContext, mdata));
if (file.exists()) mPresenter.upLoadFace(file);
else showMsg("照片无法打开");
} catch (Exception e) {
e.printStackTrace();
showMsg("照片无法打开");
}
}
@Override
public void showMsg(String msg) {
Snackbar.make(mViewBinding.fab, msg, Snackbar.LENGTH_LONG).show();
}
@Override
public void initUser(_User user) {
BindingUtils.loadRoundAndBgImg(mViewBinding.image, user.face, mViewBinding.imHeader);
setTitle(user.username);
}
@Permission(Manifest.permission.CAMERA)
public void takePhoto() {
startActivityForResult(
new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(getExternalCacheDir()+ "user_photo.png"))),
C.IMAGE_REQUEST_CODE);
}
}