diff --git a/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt index 4e1bdaa521..ea2478c1a7 100644 --- a/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt @@ -7,9 +7,6 @@ import com.gh.gamecenter.feature.provider.IRegionSettingHelperProvider @com.therouter.inject.ServiceProvider class RegionSettingHelperProviderImpl : IRegionSettingHelperProvider { - override fun shouldThisGameDisplayMirrorInfo(gameId: String): Boolean { - return RegionSettingHelper.shouldThisGameDisplayMirrorInfo(gameId) - } override fun getMirrorPosition(gameId: String): Int { return RegionSettingHelper.getMirrorPosition(gameId) diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt index 45e9c0fc86..d0f9563262 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameEntity.kt @@ -357,6 +357,8 @@ data class GameEntity( // 本地字段,使用镜像信息 var useMirrorInfo: Boolean = false, + // 本地字段,已使用的镜像实体,一旦存在便不再变更 + var cachedMirrorData: GameEntity? = null, // 本地字段,最后打开时间 var lastPlayedTime: Long = 0, @@ -462,13 +464,17 @@ data class GameEntity( * 获取镜像数据 */ fun obtainMirrorData(): GameEntity? { + if (cachedMirrorData != null) { + return cachedMirrorData + } + val regionSettingProvider = TheRouter.get(IRegionSettingHelperProvider::class.java) return when (regionSettingProvider?.getMirrorPosition(_id)) { 1 -> mMirrorData 2 -> mMirrorData2 else -> null - } + }?.also { cachedMirrorData = it } } @IgnoredOnParcel @@ -853,7 +859,8 @@ data class GameEntity( } else { val provider = TheRouter.get(IRegionSettingHelperProvider::class.java) useMirrorInfo = - (mirrorStatus == "on" || mirrorStatus2 == "on") && provider?.shouldThisGameDisplayMirrorInfo(_id) == true + (mirrorStatus == "on" && mMirrorData != null) && provider?.getMirrorPosition(_id) == 1 + || (mirrorStatus2 == "on" && mMirrorData2 != null) && provider?.getMirrorPosition(_id) == 2 } return useMirrorInfo diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt index 274b67567e..4b0be2837d 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt @@ -6,8 +6,6 @@ import com.gh.gamecenter.feature.entity.IpInfo interface IRegionSettingHelperProvider { - fun shouldThisGameDisplayMirrorInfo(gameId: String): Boolean - fun getMirrorPosition(gameId: String): Int fun shouldThisGameShowSpecialDownload(gameId: String): Boolean