From 3bbfd676fb8b4e152c3330c01e3ab52046f8cc74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E7=A5=A5=E4=BF=8A?= Date: Thu, 11 Apr 2024 17:31:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=86=85=E5=AE=B9=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8F=90=E7=A4=BA=E5=BC=B9=E7=AA=97=E2=80=94?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=20https://jira.shanqu.cc/browse/GHZ?= =?UTF-8?q?S-4956?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gamedetail/GameDetailFragment.kt | 161 ++++++++++-------- .../gamedetail/GameDetailViewModel.kt | 6 +- .../gamedetail/entity/ContentCardEntity.kt | 12 +- 3 files changed, 103 insertions(+), 76 deletions(-) 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 85bb2d67d7..6531a58006 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -285,95 +285,114 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { linkType = contentCardEntity.type ?: "", linkId = contentCardEntity.id ) - val path = "游戏详情->内容卡片" - when (contentCardEntity.type) { - "func_server" -> { - if (contentCardEntity.server != null) { - requireContext().startActivity( - ServersCalendarActivity.getIntent( - requireContext(), - mViewModel.game!!, contentCardEntity.server!!, - mNewGameDetailEntity?.me - ) + + val dialog = contentCardEntity.dialog + if (dialog != null) {// 展示内容卡片提示弹窗 + DialogHelper.showDialog( + context = requireContext(), + title = dialog.title ?: "", + content = dialog.body ?: "", + confirmText = requireContext().getString(R.string.confirm), + cancelText = requireContext().getString(R.string.cancel), + confirmClickCallback = { + jumpToContentCardLink(contentCardEntity) + } + ) + } else { + jumpToContentCardLink(contentCardEntity) + } + } + + private fun jumpToContentCardLink(contentCardEntity: ContentCardEntity) { + val path = "游戏详情->内容卡片" + when (contentCardEntity.type) { + "func_server" -> { + if (contentCardEntity.server != null) { + requireContext().startActivity( + ServersCalendarActivity.getIntent( + requireContext(), + mViewModel.game!!, contentCardEntity.server!!, + mNewGameDetailEntity?.me ) - } + ) } + } - "func_libao" -> { - mBodyBinding.gamedetailVp.currentItem = 0 - mBodyBinding.gamedetailAppbar.setExpanded(false, true) - val fragment = mFragmentsList[0] - if (fragment is DescFragment && fragment.isAdded) { - fragment.scrollToLibao() - } + "func_libao" -> { + mBodyBinding.gamedetailVp.currentItem = 0 + mBodyBinding.gamedetailAppbar.setExpanded(false, true) + val fragment = mFragmentsList[0] + if (fragment is DescFragment && fragment.isAdded) { + fragment.scrollToLibao() } + } - "func_related_version" -> { - mBodyBinding.gamedetailVp.currentItem = 0 - mBodyBinding.gamedetailAppbar.setExpanded(false, true) - val fragment = mFragmentsList[0] - if (fragment is DescFragment && fragment.isAdded) { - fragment.scrollToRelatedVersion() - } + "func_related_version" -> { + mBodyBinding.gamedetailVp.currentItem = 0 + mBodyBinding.gamedetailAppbar.setExpanded(false, true) + val fragment = mFragmentsList[0] + if (fragment is DescFragment && fragment.isAdded) { + fragment.scrollToRelatedVersion() } + } - "func_zone" -> { - val gameDetailEntity = mViewModel.gameDetailLiveData.value?.data - if (contentCardEntity.zoneTab && gameDetailEntity?.zone != null && gameDetailEntity.zone!!.style == "link") { - requireContext().startActivity( - WebActivity.getIntent( - requireContext(), - gameDetailEntity.zone!!.link, - true - ) + "func_zone" -> { + val gameDetailEntity = mViewModel.gameDetailLiveData.value?.data + if (contentCardEntity.zoneTab && gameDetailEntity?.zone != null && gameDetailEntity.zone!!.style == "link") { + requireContext().startActivity( + WebActivity.getIntent( + requireContext(), + gameDetailEntity.zone!!.link, + true ) - } + ) } + } - "func_bbs" -> { - val funcBbs = contentCardEntity.funcBbs - funcBbs?.let { - DirectUtils.directForumDetail(requireContext(), it.link, path) - } + "func_bbs" -> { + val funcBbs = contentCardEntity.funcBbs + funcBbs?.let { + DirectUtils.directForumDetail(requireContext(), it.link, path) } + } - "func_tool_kit" -> { - if (contentCardEntity.toolkit.isNotEmpty()) { - contentCardEntity.toolkit.safelyGetInRelease(0)?.let { - val url = it.url - if (url != null && url.contains(Config.URL_ARTICLE)) { - val newsId = url.substring(url.lastIndexOf("/") + 1, url.length - 5) // 5: ".html" - val intent = NewsDetailActivity.getIntentById(requireContext(), newsId, path) - requireContext().startActivity(intent) - } else { - requireContext().startActivity( - WebActivity.getWebByCollectionTools( - requireContext(), - it, - false - ) + "func_tool_kit" -> { + if (contentCardEntity.toolkit.isNotEmpty()) { + contentCardEntity.toolkit.safelyGetInRelease(0)?.let { + val url = it.url + if (url != null && url.contains(Config.URL_ARTICLE)) { + val newsId = url.substring(url.lastIndexOf("/") + 1, url.length - 5) // 5: ".html" + val intent = NewsDetailActivity.getIntentById(requireContext(), newsId, path) + requireContext().startActivity(intent) + } else { + requireContext().startActivity( + WebActivity.getWebByCollectionTools( + requireContext(), + it, + false ) - } + ) } } } - - else -> DirectUtils.directToLinkPage( - requireContext(), - contentCardEntity.toLinkEntity(), - mEntrance, - path, - ExposureEvent.createEvent( - null, - listOf( - ExposureSource("游戏详情", mGameEntity?.id ?: ""), - ExposureSource("内容卡片", contentCardEntity.id) - ) - ), - "游戏详情页-内容卡片" - ) } + + else -> DirectUtils.directToLinkPage( + requireContext(), + contentCardEntity.toLinkEntity(), + mEntrance, + path, + ExposureEvent.createEvent( + null, + listOf( + ExposureSource("游戏详情", mGameEntity?.id ?: ""), + ExposureSource("内容卡片", contentCardEntity.id) + ) + ), + "游戏详情页-内容卡片" + ) } + } override fun getLayoutId(): Int = 0 override fun getInflatedLayout(): View { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt index a3e87d4089..f14b8eec35 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt @@ -15,6 +15,7 @@ import com.gh.common.util.CheckLoginUtils import com.gh.gamecenter.feature.utils.ConcernUtils import com.gh.common.util.LibaoUtils import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.livedata.NonStickyMutableLiveData import com.gh.gamecenter.common.mvvm.Resource import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.retrofit.Response @@ -30,10 +31,7 @@ import com.gh.gamecenter.feature.entity.LibaoStatusEntity import com.gh.gamecenter.feature.entity.SimpleGame import com.gh.gamecenter.feature.utils.ApkActiveUtils import com.gh.gamecenter.feature.utils.ContentBlockedHelper -import com.gh.gamecenter.gamedetail.entity.BigEvent -import com.gh.gamecenter.gamedetail.entity.CustomColumn -import com.gh.gamecenter.gamedetail.entity.DetailEntity -import com.gh.gamecenter.gamedetail.entity.NewGameDetailEntity +import com.gh.gamecenter.gamedetail.entity.* import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.retrofit.RetrofitManager import com.halo.assistant.HaloApp diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt index e14d74afe6..26681d33c3 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt @@ -54,8 +54,18 @@ class ContentCardEntity( var relatedVersion: Boolean = false, var toolkit: ArrayList = ArrayList(), @SerializedName("func_bbs") - val funcBbs: LinkEntity? = null + val funcBbs: LinkEntity? = null, + val dialog: Dialog? = null ) { + + @Keep + class Dialog( + @SerializedName("_id") + val id: String? = "", + val title: String? = "", + val body: String? = "" + ) + fun toLinkEntity(): LinkEntity { return LinkEntity( name = name,