From 0faa0b490afeded300b453a9ecf0f1cc5c28ea2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=99=A8?= Date: Wed, 5 Mar 2025 11:19:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E3=80=90=E5=85=89=E7=8E=AF=E5=8A=A9?= =?UTF-8?q?=E6=89=8B=E3=80=91=E5=A5=87=E6=B8=B8=E5=8A=A0=E9=80=9F=E5=99=A8?= =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=9C=9F=E8=BF=AD=E4=BB=A3-03/04=E6=B5=8B?= =?UTF-8?q?=E8=AF=95-=E5=AE=A2=E6=88=B7=E7=AB=AF=20https://jira.shanqu.cc/?= =?UTF-8?q?browse/GHZSCY-7608?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/AcceleratorDataHolder.kt | 19 +++++++++---------- .../provider/AcceleratorProviderImpl.kt | 3 --- .../gamecenter/login/user/UserRepository.java | 12 +++++++++++- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/halo/assistant/accelerator/repository/AcceleratorDataHolder.kt b/app/src/main/java/com/halo/assistant/accelerator/repository/AcceleratorDataHolder.kt index 59b68a3f9b..f2b2f3acda 100644 --- a/app/src/main/java/com/halo/assistant/accelerator/repository/AcceleratorDataHolder.kt +++ b/app/src/main/java/com/halo/assistant/accelerator/repository/AcceleratorDataHolder.kt @@ -62,27 +62,26 @@ class AcceleratorDataHolder { "" } - private var _vipEntity: VipEntity? = null - val vipEntity: VipEntity? - get() = _vipEntity + var vipEntity: VipEntity? = null + private set val isVip: Boolean - get() = _vipEntity?.vipStatus ?: false + get() = vipEntity?.vipStatus ?: false val isNewUser: Boolean - get() = _vipEntity?.isNewUser ?: false + get() = vipEntity?.isNewUser ?: false val memberType: String get() = when { !CheckLoginUtils.isLogin() -> MEMBER_TYPE_NOT_LOGIN - _vipEntity?.vipStatus == true && _vipEntity?.isTryVip == true -> MEMBER_TYPE_FREE_MEMBER - _vipEntity?.vipStatus == true -> MEMBER_TYPE_PAID_MEMBER + vipEntity?.vipStatus == true && vipEntity?.isTryVip == true -> MEMBER_TYPE_FREE_MEMBER + vipEntity?.vipStatus == true -> MEMBER_TYPE_PAID_MEMBER else -> MEMBER_TYPE_NONE_MEMBER } fun setVipEntity(vip: VipEntity) { - if (_vipEntity != vip) { - _vipEntity = vip + if (vipEntity != vip) { + vipEntity = vip listeners.forEach { it.onVipStateChanged(vip) } @@ -98,7 +97,7 @@ class AcceleratorDataHolder { } fun clear() { - _vipEntity = null + vipEntity = null listeners.clear() } diff --git a/feature/accelerator/src/main/java/com/gh/gamecenter/accelerator/provider/AcceleratorProviderImpl.kt b/feature/accelerator/src/main/java/com/gh/gamecenter/accelerator/provider/AcceleratorProviderImpl.kt index 8b0201c1bd..b241ac2d31 100644 --- a/feature/accelerator/src/main/java/com/gh/gamecenter/accelerator/provider/AcceleratorProviderImpl.kt +++ b/feature/accelerator/src/main/java/com/gh/gamecenter/accelerator/provider/AcceleratorProviderImpl.kt @@ -5,7 +5,6 @@ import com.gh.gamecenter.core.callback.AccelerateState import com.gh.gamecenter.core.callback.OnAccelerateListener import com.gh.gamecenter.core.provider.IAcceleratorProvider import com.gh.gamecenter.feature.entity.AcctGameInfo -import com.gh.gamecenter.feature.entity.VipEntity import com.gh.gamecenter.feature.utils.SentryHelper import com.lightgame.utils.Utils import com.qeeyou.qyvpn.QyAccelerator @@ -19,7 +18,6 @@ import java.io.File */ @com.therouter.inject.ServiceProvider class AcceleratorProviderImpl : IAcceleratorProvider { - private var vipEntity: VipEntity? = null private var _token = "" // 根据包名回调 @@ -119,7 +117,6 @@ class AcceleratorProviderImpl : IAcceleratorProvider { _token = "" listeners.clear() allListener.clear() - vipEntity = null return isDeleted } diff --git a/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java b/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java index e2cbc86c6a..3e91233fdc 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java +++ b/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java @@ -640,6 +640,17 @@ public class UserRepository { errorHelper.handleLoginError(mContext, e.getHttpException(), loginTag.toChinese(), false); } logout(); + } else { + // loginTag == null 时,UserInfo 刷新失败,这里没有退出登录,此时用户仍然是登录状态,就会使用本地缓存的用户信息,等到调用下一个需要用户token的接口时,刷新token之后才会刷新用户信息 + // 在此之后,如果用户不进入搜索页或者详情页,则再也没有机会刷新 加速器vip状态,用户点击加速时,可能会出现状态错误 + // 所以,这里需要刷新 用户vip状态 和 qyToken + // 请注意,这里qiToken也需要刷新,因为用户可能在自定义页面点击加速,自定义页面不需要登录状态,可能不会自动刷新token + String userInfo = mPreferences.getString(Constants.USER_INFO_KEY, null); + if (!TextUtils.isEmpty(userInfo)) { + UserInfoEntity infoEntity = GsonUtils.fromJson(userInfo, UserInfoEntity.class); + setAcceleratorToken(infoEntity.getUserId(), null); + } + } if (PackageFlavorHelper.IS_TEST_FLAVOR) { @@ -695,7 +706,6 @@ public class UserRepository { public void refreshVipStatus(String userId, boolean refresh) { // 每次更新token成功,都需要重新获取vip状态 RetrofitManager.getInstance().getNewApi().getVipStatus(userId, "gjonline_vip", refresh) - .map(vipEntityBaseEntity -> vipEntityBaseEntity) .compose(ExtensionsKt.singleToMain()) .subscribe(new BiResponse>() { @Override