From ce840cf33e5a0bdaddae9efc63d5985dca4e916f Mon Sep 17 00:00:00 2001 From: liuyirong Date: Wed, 7 Sep 2022 17:41:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E3=80=90=E5=85=89=E7=8E=AF=E5=8A=A9?= =?UTF-8?q?=E6=89=8B=E3=80=91=E5=9B=BD=E9=99=85=E6=9C=8D=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E5=90=88=E8=A7=84=E8=B0=83=E6=95=B4=E6=96=B9=E6=A1=88(?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8F=98=E5=8A=A8)=20https://git.shanqu.cc/p?= =?UTF-8?q?m/halo/halo-app-issues/-/issues/2047#note=5F169012?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/filter/RegionSetting.kt | 12 ++++--- .../gh/common/filter/RegionSettingHelper.kt | 11 +++---- .../gh/common/util/DetailDownloadUtils.java | 2 +- .../com/gh/common/util/DownloadItemUtils.kt | 31 +++++++++++++------ .../adapter/viewholder/DetailViewHolder.java | 18 ++++++----- 5 files changed, 44 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/gh/common/filter/RegionSetting.kt b/app/src/main/java/com/gh/common/filter/RegionSetting.kt index b538e9972f..e59bef8148 100644 --- a/app/src/main/java/com/gh/common/filter/RegionSetting.kt +++ b/app/src/main/java/com/gh/common/filter/RegionSetting.kt @@ -12,7 +12,7 @@ data class RegionSetting( @SerializedName("channel_control") var channelControl: ChannelControl, @SerializedName("game_special_download") - var gameSpecialDownload: List + var gameSpecialDownloadInfoList: List ) { @Keep @@ -24,12 +24,14 @@ data class RegionSetting( ) @Keep - data class GameSpecialDownload( + data class GameSpecialDownloadInfo( @SerializedName("game_id") - var gameId: String, + var gameId: String = "", @SerializedName("bbs_id") - var bbsId: String, + var bbsId: String = "", @SerializedName("top_id") - var topId: String + var topId: String = "", + @SerializedName("hint_text") + var hintText: String = "" ) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt b/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt index d85618fb66..2080cc8639 100644 --- a/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt +++ b/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt @@ -19,7 +19,7 @@ object RegionSettingHelper { private var mChannelControl: RegionSetting.ChannelControl? = null private var mFilterGameIdSet: HashSet? = hashSetOf() private var mDisplayMirrorIfoGameIdSet: HashSet? = hashSetOf() - private var mGameSpecialDownloadList: List? = listOf() + private var mGameSpecialDownloadInfoList: List? = listOf() private const val SP_SETTING = "region_setting" @@ -32,13 +32,10 @@ object RegionSettingHelper { return mFilterGameIdSet?.contains(gameId) ?: false } - fun shouldThisGameShowSpecialDownload(gameId: String) = mGameSpecialDownloadList?.any { it.gameId == gameId } ?: false + fun shouldThisGameShowSpecialDownload(gameId: String) = mGameSpecialDownloadInfoList?.any { it.gameId == gameId } ?: false @JvmStatic - fun getGameSpecialDownloadBbsId(gameId: String) = mGameSpecialDownloadList?.find { it.gameId == gameId }?.bbsId ?: "" - - @JvmStatic - fun getGameSpecialDownloadTopId(gameId: String) = mGameSpecialDownloadList?.find { it.gameId == gameId }?.topId ?: "" + fun getGameSpecialDownloadInfo(gameId: String) = mGameSpecialDownloadInfoList?.find { it.gameId == gameId } @JvmStatic fun filterGame(list: List?): ArrayList { @@ -95,7 +92,7 @@ object RegionSettingHelper { mFilterGameIdSet = data.filterGameIdSet mDisplayMirrorIfoGameIdSet = data.mirrorGameIdSet mChannelControl = data.channelControl - mGameSpecialDownloadList = data.gameSpecialDownload + mGameSpecialDownloadInfoList = data.gameSpecialDownloadInfoList } /** diff --git a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java index 0daf6f33ff..ceec3a579d 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -49,7 +49,7 @@ public class DetailDownloadUtils { } if (viewHolder.gameEntity.isSpecialDownload()) { - viewHolder.mDownloadPb.setText("前往论坛讨论"); + viewHolder.mDownloadPb.setText("查看下载资源"); viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.SPECIAL_DOWNLOAD); return; } diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt index af64b340be..b6a9f1c569 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt @@ -548,16 +548,29 @@ object DownloadItemUtils { return } if (gameEntity.isSpecialDownload()) { - val bbsId = RegionSettingHelper.getGameSpecialDownloadBbsId(gameEntity.id) - val topId = RegionSettingHelper.getGameSpecialDownloadTopId(gameEntity.id) + val info = RegionSettingHelper.getGameSpecialDownloadInfo(gameEntity.id) ?: return downloadBtn.setOnClickListener { - if (bbsId.isNotBlank()) { - if (topId.isNotBlank()) { - val data = hashMapOf(EntranceConsts.KEY_TOP_ID to topId) - PageSwitchDataHelper.pushCurrentPageData(data) - } - DirectUtils.directForumDetail(context, bbsId, entrance) - } + DialogHelper.showDialog( + context, + "提示", + info.hintText, + "前往论坛", + "", + { + if (info.bbsId.isNotBlank()) { + if (info.topId.isNotBlank()) { + val data = hashMapOf(EntranceConsts.KEY_TOP_ID to info.topId) + PageSwitchDataHelper.pushCurrentPageData(data) + } + DirectUtils.directForumDetail(context, info.bbsId, entrance) + } + }, + {}, + DialogHelper.Config( + centerTitle = true, + centerContent = true + ) + ) } return } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java index 342ffa2817..e7e4dd0746 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java @@ -11,6 +11,7 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentActivity; +import com.gh.common.filter.RegionSetting; import com.gh.common.filter.RegionSettingHelper; import com.gh.common.util.DirectUtils; import com.gh.gamecenter.common.constant.Constants; @@ -357,15 +358,16 @@ public class DetailViewHolder { ); break; case SPECIAL_DOWNLOAD: - String bbsId = RegionSettingHelper.getGameSpecialDownloadBbsId(mGameEntity.getId()); - String topId = RegionSettingHelper.getGameSpecialDownloadTopId(mGameEntity.getId()); - if (!TextUtils.isEmpty(bbsId)) { - if (!TextUtils.isEmpty(topId)) { - HashMap map = new HashMap<>(); - map.put(EntranceConsts.KEY_TOP_ID, topId); - PageSwitchDataHelper.pushCurrentPageData(map); + RegionSetting.GameSpecialDownloadInfo info = RegionSettingHelper.getGameSpecialDownloadInfo(mGameEntity.getId()); + if (info != null) { + if (!TextUtils.isEmpty(info.getBbsId())) { + if (!TextUtils.isEmpty(info.getTopId())) { + HashMap map = new HashMap<>(); + map.put(EntranceConsts.KEY_TOP_ID, info.getTopId()); + PageSwitchDataHelper.pushCurrentPageData(map); + } + DirectUtils.directForumDetail(mViewHolder.context, info.getBbsId(), mEntrance); } - DirectUtils.directForumDetail(mViewHolder.context, bbsId, mEntrance); } break; default: