From fc907a398f46e9281a6fa00a4e24a4a6b144f820 Mon Sep 17 00:00:00 2001 From: juntao Date: Tue, 22 Dec 2020 11:02:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=85=89=E7=8E=AF=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E4=BC=98=E5=8C=96=E6=B1=87=E6=80=BB(12=E6=9C=88)(1,2,?= =?UTF-8?q?4,6)=20https://git.ghzs.com/pm/halo-app-issues/-/issues/1098?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/exposure/ExposureManager.kt | 2 +- .../main/java/com/gh/common/exposure/ExposureUtils.kt | 10 ++++++++++ .../main/java/com/gh/gamecenter/entity/GameEntity.kt | 7 +++++-- .../com/gh/gamecenter/gamedetail/GameDetailFragment.kt | 4 ++-- .../main/java/com/gh/gamecenter/home/HomeViewModel.kt | 4 +++- .../java/com/gh/gamecenter/subject/SubjectAdapter.kt | 2 +- .../main/res/layout/gamedetail_item_custom_column.xml | 3 ++- 7 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/gh/common/exposure/ExposureManager.kt b/app/src/main/java/com/gh/common/exposure/ExposureManager.kt index 4fe91b9139..5af9e08ed3 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureManager.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureManager.kt @@ -138,7 +138,7 @@ object ExposureManager { return log } - internal class FixedSizeLinkedHashSet(var maxSize: Int) : LinkedHashSet() { + class FixedSizeLinkedHashSet(var maxSize: Int) : LinkedHashSet() { override fun add(element: T): Boolean { if (size == maxSize) { pop() diff --git a/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt b/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt index a599ad35eb..079be0c53e 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt @@ -12,6 +12,8 @@ import java.util.* object ExposureUtils { + private val mDownloadCompleteTraceEventIdSet = ExposureManager.FixedSizeLinkedHashSet(3) + @JvmStatic fun logADownloadExposureEvent(entity: GameEntity, platform: String?, @@ -45,6 +47,14 @@ object ExposureUtils { gameEntity.platform = platform gameEntity.downloadCompleteType = downloadType.toString() val traceEvent = trace?.toObject() + + // 避免生成 trace 相同的下载完成事件,根据日志看下载完成的同一秒有可能生成两条 + if (mDownloadCompleteTraceEventIdSet.contains(traceEvent?.id)) { + return + } + + traceEvent?.payload?.gameId?.let { mDownloadCompleteTraceEventIdSet.add(it) } + val exposureEvent = ExposureEvent.createEvent(gameEntity = gameEntity, source = traceEvent?.source ?: ArrayList(), eTrace = ExposureTraceUtils.appendTrace(traceEvent), diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt index 7eb7e27f47..3d5967ef27 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -252,12 +252,15 @@ data class GameEntity( @IgnoredOnParcel var exposureEvent: ExposureEvent? = null + @IgnoredOnParcel + var shouldShowNameSuffix = true // 专题级开关,只要这个开关为 false,实体有 suffix 也不显示 + @IgnoredOnParcel var name: String? get() = if (shouldUseMirrorInfo()) { - mirrorData?.mName?.removeSuffix(".") + mirrorData?.nameSuffix + mirrorData?.mName?.removeSuffix(".") + if (shouldShowNameSuffix) mirrorData?.nameSuffix ?: "" else "" } else { - mName?.removeSuffix(".") + nameSuffix + mName?.removeSuffix(".") + if (shouldShowNameSuffix) nameSuffix else "" } set(value) { mName = value diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 16c9645214..94d585a14f 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -847,9 +847,9 @@ class GameDetailFragment : NormalFragment() { // GdtHelper.logAction(ActionType.SHARE, GdtHelper.CONTENT_TYPE, "GAME", GdtHelper.CONTENT_ID, mGameEntity!!.id) val url = if (isPublishEnv()) { - "http://m.ghzs666.com/game/" + it.shareCode + "http://m.ghzs666.com/game/" + mGameEntity?.id } else { - "https://static-web.ghzs.com/gamestats-dev/index.html#/game/" + it.shareCode + "https://static-web.ghzs.com/gamestats-dev/index.html#/game/" + mGameEntity?.id } if (activity is BaseActivity) { diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt index 2c42005a0d..a821d35935 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt @@ -334,11 +334,13 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) { homeContent.linkColumn?.data = RegionSettingHelper.filterGame(homeContent.linkColumn?.data) - // 替换已安装的游戏 homeContent.linkColumn?.let { subjectEntity -> subjectEntity.data?.let { data -> + // 这个 for 循环主要功能是用来标识替换已安装的游戏 for (game in data) { mSubjectGameIdList.add(game.id) + // 应用专题是否显示游戏名后缀的配置 + game.shouldShowNameSuffix = subjectEntity.showSuffix } subjectEntity.relatedColumnId?.let { diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt index 0ee5cce7be..96a2c11ff0 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt @@ -98,7 +98,7 @@ class SubjectAdapter(context: Context, val gameEntity = mEntityList[position] holder.binding.game = gameEntity holder.binding.briefStyle = subjectData.briefStyle - holder.binding.isShowSuffix = subjectData.showSuffix + holder.binding.isShowSuffix = true // 专题详情均显示游戏后缀 https://git.ghzs.com/pm/halo-app-issues/-/issues/1098 (3) holder.initServerType(gameEntity) holder.binding.executePendingBindings() diff --git a/app/src/main/res/layout/gamedetail_item_custom_column.xml b/app/src/main/res/layout/gamedetail_item_custom_column.xml index 0e8be52faf..309411f6a3 100644 --- a/app/src/main/res/layout/gamedetail_item_custom_column.xml +++ b/app/src/main/res/layout/gamedetail_item_custom_column.xml @@ -57,7 +57,7 @@ android:visibility="gone" app:layout_constraintTop_toTopOf="parent" /> -