Browse Source

🚧 删除不必要的登录状态、查询用户对应缓存时检测id的空状态 为空则需要重新登录

master
LiuSiXiang-007 1 year ago
parent
commit
05c1c300b0
  1. 3
      app/src/main/java/com/kanglai/push/constant/CacheConstant.java
  2. 2
      app/src/main/java/com/kanglai/push/ui/fragment/MessageFragment.java
  3. 16
      app/src/main/java/com/kanglai/push/ui/vm/LoginViewModel.java
  4. 5
      app/src/main/java/com/kanglai/push/ui/vm/UserViewModel.java
  5. 21
      app/src/main/java/com/kanglai/push/util/HistoryMsgUtil.java
  6. 2
      library/core/src/main/java/com/dolphin/core/http/exception/ExceptionHandle.java
  7. 3
      library/core/src/main/java/com/dolphin/core/util/PermissionUtil.java

3
app/src/main/java/com/kanglai/push/constant/CacheConstant.java

@ -13,9 +13,6 @@ public interface CacheConstant {
/** 登录名称存储键 */ /** 登录名称存储键 */
String LOGIN_USERNAME = "LOGIN_USERNAME"; String LOGIN_USERNAME = "LOGIN_USERNAME";
/** 登录密码存储键 */
String LOGIN_PASSWORD = "LOGIN_PASSWORD";
/** 软件隐私协议授权键 */ /** 软件隐私协议授权键 */
String SOFTWARE_PRIVACY_AGREEMENT_AUTH = "SOFTWARE_PRIVACY_AGREEMENT_AUTH"; String SOFTWARE_PRIVACY_AGREEMENT_AUTH = "SOFTWARE_PRIVACY_AGREEMENT_AUTH";

2
app/src/main/java/com/kanglai/push/ui/fragment/MessageFragment.java

@ -132,6 +132,8 @@ public class MessageFragment extends BaseFragment<FragmentMessageBinding, Messag
ImageView toolbarBack = getView().findViewById(R.id.iv_back); ImageView toolbarBack = getView().findViewById(R.id.iv_back);
toolbarBack.setVisibility(View.INVISIBLE); toolbarBack.setVisibility(View.INVISIBLE);
HistoryMsgUtil.loadUser(); // 初始化时 更新一次聊天页对应的用户数据
mRefreshLayout = getView().findViewById(R.id.refreshLayout); mRefreshLayout = getView().findViewById(R.id.refreshLayout);
mRecyclerView = getView().findViewById(R.id.recycler_view); mRecyclerView = getView().findViewById(R.id.recycler_view);
mLoadingLayout = getView().findViewById(R.id.loading); mLoadingLayout = getView().findViewById(R.id.loading);

16
app/src/main/java/com/kanglai/push/ui/vm/LoginViewModel.java

@ -68,7 +68,7 @@ public class LoginViewModel extends BaseViewModel<LoginActivity> {
/** 电话号码 */ /** 电话号码 */
public ObservableField<String> phones = new ObservableField(""); public ObservableField<String> phones = new ObservableField("");
/** 电话号码 */ /** 验证码 */
public ObservableField<String> captcha = new ObservableField(""); public ObservableField<String> captcha = new ObservableField("");
/** 隐私协议确认按钮 */ /** 隐私协议确认按钮 */
@ -146,6 +146,8 @@ public class LoginViewModel extends BaseViewModel<LoginActivity> {
/** 获取验证码点击事件 */ /** 获取验证码点击事件 */
public BindingCommand captchaClickCommand = new BindingCommand(() -> { public BindingCommand captchaClickCommand = new BindingCommand(() -> {
User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User());
LogUtils.d(user);
if (StringUtils.isTrimEmpty(phones.get())) { if (StringUtils.isTrimEmpty(phones.get())) {
ToastUtil.showBottomWarn("请输入电话号码!"); ToastUtil.showBottomWarn("请输入电话号码!");
return; return;
@ -226,7 +228,7 @@ public class LoginViewModel extends BaseViewModel<LoginActivity> {
@Override @Override
public void onComplete() { public void onComplete() {
captcha.set(""); // 验证码+电话 验证之后就清空一次验证码
} }
}); });
}); });
@ -265,7 +267,6 @@ public class LoginViewModel extends BaseViewModel<LoginActivity> {
User user = R.getData(); User user = R.getData();
if (StringUtils.isTrimEmpty(user.getAvatar())) user.setAvatar("/default.png"); if (StringUtils.isTrimEmpty(user.getAvatar())) user.setAvatar("/default.png");
MMKV.defaultMMKV().putString(CacheConstant.LOGIN_USERNAME, R.getData().getNickName()); MMKV.defaultMMKV().putString(CacheConstant.LOGIN_USERNAME, R.getData().getNickName());
MMKV.defaultMMKV().putString(CacheConstant.LOGIN_PASSWORD, password.get());
CacheDiskUtils.getInstance().put(CacheConstant.USER_INFO, user); CacheDiskUtils.getInstance().put(CacheConstant.USER_INFO, user);
if (isRegister) { // 判断是否第一次登录 isRegister if (isRegister) { // 判断是否第一次登录 isRegister
startActivity(LoginSurveyActivity.class); startActivity(LoginSurveyActivity.class);
@ -302,15 +303,6 @@ public class LoginViewModel extends BaseViewModel<LoginActivity> {
@Override @Override
public void onCreate(@NonNull LifecycleOwner owner) { public void onCreate(@NonNull LifecycleOwner owner) {
super.onCreate(owner); super.onCreate(owner);
// 记住用户名与密码
// if(!StringUtils.isTrimEmpty(MMKV.defaultMMKV().getString(AppConstant.ACCESS_TOKEN_NAME,null))){
// username.set(MMKV.defaultMMKV().getString(CacheConstant.LOGIN_USERNAME,null));
// password.set(MMKV.defaultMMKV().getString(CacheConstant.LOGIN_PASSWORD,null));
// }
}
public void loggableStatus(){
} }
@Override @Override

5
app/src/main/java/com/kanglai/push/ui/vm/UserViewModel.java

@ -44,7 +44,6 @@ public class UserViewModel extends ToolbarViewModel<UserFragment> {
@Override @Override
public void onCreate(@NonNull LifecycleOwner owner) { public void onCreate(@NonNull LifecycleOwner owner) {
super.onCreate(owner); super.onCreate(owner);
} }
public UserViewModel(@NonNull Application application) { public UserViewModel(@NonNull Application application) {
@ -65,11 +64,11 @@ public class UserViewModel extends ToolbarViewModel<UserFragment> {
.subscribe(new DisposableObserver<ResultResponse>() { .subscribe(new DisposableObserver<ResultResponse>() {
@Override @Override
public void onNext(ResultResponse R) { public void onNext(ResultResponse R) {
CacheDiskUtils.getInstance().remove(CacheConstant.LOGIN_USERNAME); // 清除用户缓存 CacheDiskUtils.getInstance().remove(CacheConstant.LOGIN_USERNAME); // 清除用户缓存信息
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
CacheDiskUtils.getInstance().remove(CacheConstant.LOGIN_USERNAME); // 清除用户缓存 CacheDiskUtils.getInstance().remove(CacheConstant.LOGIN_USERNAME); // 清除用户缓存信息
closeDialog(); closeDialog();
PermissionUtil.logout(); PermissionUtil.logout();
} }

21
app/src/main/java/com/kanglai/push/util/HistoryMsgUtil.java

@ -1,12 +1,20 @@
package com.kanglai.push.util; package com.kanglai.push.util;
import com.blankj.utilcode.util.CacheDiskUtils; import com.blankj.utilcode.util.CacheDiskUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.MapUtils; import com.blankj.utilcode.util.MapUtils;
import com.blankj.utilcode.util.StringUtils;
import com.dolphin.core.http.HttpRequest;
import com.dolphin.core.http.exception.ExceptionHandle;
import com.dolphin.core.util.PermissionUtil;
import com.dolphin.core.util.RxUtil;
import com.dolphin.core.util.ToastUtil;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.kanglai.push.constant.CacheConstant; import com.kanglai.push.constant.CacheConstant;
import com.kanglai.push.entity.LocalPushChatMsg; import com.kanglai.push.entity.LocalPushChatMsg;
import com.kanglai.push.entity.User; import com.kanglai.push.entity.User;
import com.kanglai.push.ui.vm.LoginViewModel;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.HashMap; import java.util.HashMap;
@ -26,10 +34,21 @@ import lombok.experimental.UtilityClass;
@UtilityClass @UtilityClass
public class HistoryMsgUtil { public class HistoryMsgUtil {
private User user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User()); private User user;
public void loadUser(){ // 初始化用户信息
user = CacheDiskUtils.getInstance().getParcelable(CacheConstant.USER_INFO, User.CREATOR, new User());
}
/** 获取缓存的列表数据 */ /** 获取缓存的列表数据 */
public HashMap<String, LocalPushChatMsg> select() { public HashMap<String, LocalPushChatMsg> select() {
if (StringUtils.isEmpty(user.getId())) { // 用户信息过期就需要重新登录
HttpRequest.getInstance().retrofit.create(ExceptionHandle.LoginMapper.class)
.logout().compose(RxUtil.schedulersTransformer());
PermissionUtil.logout();
ToastUtil.show("登录状态已过期,请重新登录");
return null;
}
String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,""); String localHistoryMsgJson = CacheDiskUtils.getInstance().getString(user.getId().concat(user.getUserType()) ,"");
Type type = new TypeToken<HashMap<String, LocalPushChatMsg>>(){}.getType(); Type type = new TypeToken<HashMap<String, LocalPushChatMsg>>(){}.getType();
return new Gson().fromJson(localHistoryMsgJson, type); return new Gson().fromJson(localHistoryMsgJson, type);

2
library/core/src/main/java/com/dolphin/core/http/exception/ExceptionHandle.java

@ -106,7 +106,7 @@ public class ExceptionHandle {
} }
interface LoginMapper { public interface LoginMapper {
@DELETE("auth_proxy/token/logout") @DELETE("auth_proxy/token/logout")
Observable<ResultResponse<Boolean>> logout(); Observable<ResultResponse<Boolean>> logout();

3
library/core/src/main/java/com/dolphin/core/util/PermissionUtil.java

@ -4,6 +4,7 @@ import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import com.blankj.utilcode.util.CacheDiskUtils;
import com.blankj.utilcode.util.PermissionUtils; import com.blankj.utilcode.util.PermissionUtils;
import com.blankj.utilcode.util.Utils; import com.blankj.utilcode.util.Utils;
import com.dolphin.core.base.AppManager; import com.dolphin.core.base.AppManager;
@ -38,7 +39,7 @@ public class PermissionUtil {
public void logout() { public void logout() {
MMKV.defaultMMKV().remove(AppConstant.ACCESS_TOKEN_NAME); MMKV.defaultMMKV().remove(AppConstant.ACCESS_TOKEN_NAME);
MMKV.defaultMMKV().remove(AppConstant.REFRESH_TOKEN_NAME); MMKV.defaultMMKV().remove(AppConstant.REFRESH_TOKEN_NAME);
// todo 将所有的活动都关闭之后 intent 无法调起活动 CacheDiskUtils.getInstance().remove("USER_INFO");
AppManager.getAppManager().currentActivity(); AppManager.getAppManager().currentActivity();
Intent intent = new Intent("com.android.kanglai.push.LoginActivity"); Intent intent = new Intent("com.android.kanglai.push.LoginActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Loading…
Cancel
Save