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