From 354fa13a35d50816e399cdc9cac316726876da24 Mon Sep 17 00:00:00 2001 From: jack <1484288157@qq.com> Date: Mon, 7 Jun 2021 16:02:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BA=E5=9D=9B=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/base/BaseRichEditorViewModel.kt | 26 ++++++++++-- .../gh/gamecenter/entity/ForumDetailEntity.kt | 21 +++++----- .../forum/detail/ForumDetailFragment.kt | 10 +++-- .../forum/home/CommunityHomeFragment.kt | 2 +- .../forum/home/ForumHomeFragment.kt | 2 +- .../main/java/com/gh/gamecenter/qa/BbsType.kt | 7 +++- .../qa/answer/edit/AnswerEditViewModel.kt | 3 ++ .../detail/ArticleDetailContentViewHolder.kt | 12 +++--- .../article/detail/ArticleDetailFragment.kt | 6 ++- .../qa/article/edit/ArticleEditActivity.kt | 20 ++++++---- .../qa/article/edit/ArticleEditViewModel.kt | 3 ++ .../qa/questions/edit/QuestionEditActivity.kt | 30 ++++++++------ .../questions/edit/QuestionEditViewModel.kt | 3 ++ .../newdetail/NewQuestionDetailFragment.kt | 11 +++-- .../newdetail/NewQuestionDetailViewModel.kt | 14 +++++-- .../QuestionDetailContentViewHolder.kt | 11 +++-- .../qa/video/publish/VideoPublishActivity.kt | 4 +- .../qa/video/publish/VideoPublishFragment.kt | 40 ++++++++++++------- .../qa/video/publish/VideoPublishViewModel.kt | 1 + .../retrofit/service/ApiService.java | 2 +- 20 files changed, 151 insertions(+), 77 deletions(-) diff --git a/app/src/main/java/com/gh/base/BaseRichEditorViewModel.kt b/app/src/main/java/com/gh/base/BaseRichEditorViewModel.kt index e2c28f5d69..feb6e726aa 100644 --- a/app/src/main/java/com/gh/base/BaseRichEditorViewModel.kt +++ b/app/src/main/java/com/gh/base/BaseRichEditorViewModel.kt @@ -45,7 +45,7 @@ abstract class BaseRichEditorViewModel(application: Application) : AndroidViewMo val localVideoList = ArrayList() val uploadVideoErrorList = ArrayList() var currentUploadingVideo: LocalVideoEntity? = null - var type: String = ""//游戏论坛:game_bbs 官方论坛:official_bbs + var type: String = "" //游戏论坛:game_bbs 官方论坛:official_bbs private var mUploadVideoListener: UploadVideoListener? = null val TITLE_MIN_LENGTH = 6 val MIN_TEXT_LENGTH = 6 @@ -235,8 +235,20 @@ abstract class BaseRichEditorViewModel(application: Application) : AndroidViewMo private fun getVideoType(): String { return when (type) { - BbsType.GAME_BBS.value -> BbsType.GAME_BBS_INSERT.value - BbsType.OFFICIAL_BBS.value -> BbsType.OFFICIAL_BBS_INSERT.value + BbsType.GAME_BBS.value -> { + when (getRichType()) { + RichType.ARTICLE -> BbsType.GAME_BBS_ARTICLE_INSERT.value + RichType.QUESTION -> BbsType.GAME_BBS_QUESTION_INSERT.value + else -> "" + } + } + BbsType.OFFICIAL_BBS.value -> { + when (getRichType()) { + RichType.ARTICLE -> BbsType.OFFICIAL_BBS_ARTICLE_INSERT.value + RichType.QUESTION -> BbsType.OFFICIAL_BBS_QUESTION_INSERT.value + else -> "" + } + } else -> "" } } @@ -299,6 +311,8 @@ abstract class BaseRichEditorViewModel(application: Application) : AndroidViewMo } return true } + + abstract fun getRichType(): RichType } interface UploadVideoListener { @@ -326,4 +340,10 @@ interface UploadVideoListener { * 上传失败 */ fun videoUploadFailed(id: String) +} + +enum class RichType { + ARTICLE, + QUESTION, + ANSWER } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt index b55b09d948..3fa58061b2 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt @@ -14,15 +14,16 @@ data class ForumDetailEntity( var topLink: ArrayList = arrayListOf(), @SerializedName("zone_tab") var zone: ZoneEntity? = null, - var me: MeEntity = MeEntity() + var me: MeEntity = MeEntity(), + var type: String = "" //game_bbs/official_bbs ) { - fun convertForumDetailEntityToForumEntity(): ForumEntity { - val forumEntity = ForumEntity() - forumEntity.id = id - forumEntity.name = name - forumEntity.game = game - forumEntity.orderTag = System.currentTimeMillis() - forumEntity.unread = false - return forumEntity - } + fun convertForumDetailEntityToForumEntity(): ForumEntity { + val forumEntity = ForumEntity() + forumEntity.id = id + forumEntity.name = name + forumEntity.game = game + forumEntity.orderTag = System.currentTimeMillis() + forumEntity.unread = false + return forumEntity + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt index 2f53d68b22..9bdce63024 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt @@ -427,14 +427,14 @@ class ForumDetailFragment : BaseLazyTabFragment() { window?.setWindowAnimations(R.style.community_publication_animation) dialog.setContentView(contentView, params) dialog.show() - val bbsType = if (mForumDetail?.game == null) BbsType.OFFICIAL_BBS else BbsType.GAME_BBS contentView.findViewById(R.id.community_edit_article_container).setOnClickListener { context?.ifLogin("论坛详情", action = { checkStoragePermissionBeforeAction { MtaHelper.onEvent("论坛详情", "发布", "发帖子") startActivity(ArticleEditActivity.getIntent(requireContext(), CommunityEntity(mForumDetail?.id ?: "", mForumDetail?.name - ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript), bbsType)) + ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript), mForumDetail?.type + ?: "")) dialog.dismiss() } }) @@ -445,7 +445,8 @@ class ForumDetailFragment : BaseLazyTabFragment() { MtaHelper.onEvent("论坛详情", "发布", "提问") startActivity(QuestionEditActivity.getIntent(requireContext(), CommunityEntity(mForumDetail?.id ?: "", mForumDetail?.name - ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript), bbsType)) + ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript), mForumDetail?.type + ?: "")) dialog.dismiss() } }) @@ -457,7 +458,8 @@ class ForumDetailFragment : BaseLazyTabFragment() { val communityEntity = CommunityEntity(mForumDetail?.id ?: "", mForumDetail?.name ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript) - startActivity(VideoPublishActivity.getIntent(requireContext(), communityEntity, bbsType, mEntrance, "论坛详情")) + startActivity(VideoPublishActivity.getIntent(requireContext(), communityEntity, mForumDetail?.type + ?: "", mEntrance, "论坛详情")) dialog.dismiss() } }) diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt index 648896e781..d9e821ce6c 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt @@ -210,7 +210,7 @@ class CommunityHomeFragment : LazyFragment() { checkStoragePermissionBeforeAction { showRegulationTestDialogIfNeeded { MtaHelper.onEvent("论坛首页", "发布", "发视频") - startActivity(VideoPublishActivity.getIntent(requireContext(), null, BbsType.GAME_BBS, mEntrance, "论坛首页")) + startActivity(VideoPublishActivity.getIntent(requireContext(), null, "", mEntrance, "论坛首页")) dialog.dismiss() } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeFragment.kt index e824d85155..117fb3026f 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeFragment.kt @@ -358,7 +358,7 @@ class ForumHomeFragment : BaseLazyTabFragment() { checkStoragePermissionBeforeAction { showRegulationTestDialogIfNeeded { MtaHelper.onEvent("论坛首页", "发布", "发视频") - startActivity(VideoPublishActivity.getIntent(requireContext(), null, BbsType.GAME_BBS, mEntrance, "论坛首页")) + startActivity(VideoPublishActivity.getIntent(requireContext(), null, "", mEntrance, "论坛首页")) dialog.dismiss() } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/BbsType.kt b/app/src/main/java/com/gh/gamecenter/qa/BbsType.kt index 1430c25b11..82c46b65c4 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/BbsType.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/BbsType.kt @@ -3,6 +3,9 @@ package com.gh.gamecenter.qa enum class BbsType(val value: String) { GAME_BBS("game_bbs"),//游戏论坛 OFFICIAL_BBS("official_bbs"),//官方论坛 - GAME_BBS_INSERT("game_bbs_insert"),//游戏论坛视频插入 - OFFICIAL_BBS_INSERT("official_bbs_insert")//官方论坛视频插入 + + GAME_BBS_QUESTION_INSERT("game_bbs_question_insert"),//游戏论坛提问视频插入 + GAME_BBS_ARTICLE_INSERT("game_bbs_article_insert"),//游戏论坛帖子视频插入 + OFFICIAL_BBS_QUESTION_INSERT("official_bbs_question_insert"),//官方论坛提问视频插入 + OFFICIAL_BBS_ARTICLE_INSERT("official_bbs_article_insert")//官方论坛帖子视频插入 } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt index f0c7511103..0f43a17765 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt @@ -13,6 +13,7 @@ import com.gh.gamecenter.eventbus.EBReuse import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.mvvm.Resource import com.gh.base.BaseRichEditorViewModel +import com.gh.base.RichType import com.gh.gamecenter.qa.entity.AnswerDraftEntity import com.gh.gamecenter.qa.entity.Questions import com.gh.gamecenter.retrofit.Response @@ -189,6 +190,8 @@ class AnswerEditViewModel(application: Application, }) } + override fun getRichType(): RichType = RichType.ANSWER + class Factory(private val mApplication: Application, private val answerId: String?, private val answerContent: String?, diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt index f5ce199add..9275b9da8e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt @@ -91,12 +91,14 @@ class ArticleDetailContentViewHolder(var binding: ItemArticleDetailContentBindin releaseTimeTv.text = String.format("发布于%s 最后编辑于%s", NewsUtils.getFormattedTime(article.time.create), NewsUtils.getFormattedTime(article.time.edit)) } richEditor.visibility = View.VISIBLE - viewModel.detailEntity?.community?.game?.let { - gameName.text = viewModel.detailEntity?.community?.name - forumIconView.displayGameIcon(it.getIcon(), it.iconSubscript) + article.community.let { entity -> + gameName.text = entity.name + val icon = if (!entity.icon.isNullOrEmpty()) entity.icon else entity.game?.getIcon() + val iconSubscript = if (!entity.iconSubscript.isNullOrEmpty()) entity.iconSubscript else entity.game?.iconSubscript + forumIconView.displayGameIcon(icon, iconSubscript) forumContainer.setOnClickListener { - DirectUtils.directForumDetail(forumContainer.context, viewModel.detailEntity?.communityId, "帖子详情") - LogUtils.uploadAccessToBbs(viewModel.detailEntity?.communityId, "文章内所属论坛") + DirectUtils.directForumDetail(forumContainer.context, entity.id, "帖子详情") + LogUtils.uploadAccessToBbs(entity.id, "文章内所属论坛") } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailFragment.kt index 39b04582fc..e528f74d0e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailFragment.kt @@ -499,8 +499,10 @@ class ArticleDetailFragment : BaseCommentFragment(), Keyb } } else if (requestCode == ChooseForumActivity.CHOOSE_FORUM_REQUEST) { val community = data.getParcelableExtra(EntranceUtils.KEY_COMMUNITY_DATA) + mViewModel.type = community?.type ?: "" mViewModel.mSelectCommunityData = community + if (mViewModel.type == BbsType.GAME_BBS.value) { + mViewModel.gameEntity = null + } setGameName() } else if (requestCode == VideoPublishFragment.REQUEST_GAME_CODE) { val game = data.getParcelableExtra(GameEntity::class.java.simpleName) @@ -253,8 +257,10 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb mViewModel.type = intent?.getStringExtra(BbsType::class.java.simpleName) ?: "" if (mViewModel.mSelectCommunityData != null) { setGameName() - mGameName.isEnabled = false - mGameName.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null) + if (mViewModel.type == BbsType.GAME_BBS.value) { + mGameName.isEnabled = false + mGameName.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null) + } } mEditTitle.requestFocus() } @@ -436,10 +442,10 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb } private fun showSelectGameDialog() { - if (mViewModel.type == BbsType.GAME_BBS.value) { - ChooseForumActivity.startChooseForumActivity(this) - } else if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { + if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { startActivityForResult(GameActivity.getIntent(this, GameActivity.SELECT_GAME_TITLE), VideoPublishFragment.REQUEST_GAME_CODE) + } else { + ChooseForumActivity.startChooseForumActivity(this) } } @@ -540,9 +546,9 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb } @JvmStatic - fun getIntent(context: Context, community: CommunityEntity?, type: BbsType = BbsType.GAME_BBS): Intent { + fun getIntent(context: Context, community: CommunityEntity?, type: String = ""): Intent { val intent = Intent(context, ArticleEditActivity::class.java) - intent.putExtra(BbsType::class.java.simpleName, type.value) + intent.putExtra(BbsType::class.java.simpleName, type) intent.putExtra(CommunityEntity::class.java.simpleName, community) return intent } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt index 69a8ecafa6..7e237f3b43 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt @@ -12,6 +12,7 @@ import com.gh.gamecenter.entity.CommunityEntity import com.gh.gamecenter.eventbus.EBReuse import com.gh.gamecenter.manager.UserManager import com.gh.base.BaseRichEditorViewModel +import com.gh.base.RichType import com.gh.gamecenter.entity.ActivityLabelEntity import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.qa.BbsType @@ -282,4 +283,6 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a } }) } + + override fun getRichType(): RichType = RichType.ARTICLE } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt index 4fb671acbd..1b2121a1db 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt @@ -81,10 +81,14 @@ class QuestionEditActivity : BaseRichEditorActivity(), Ke } else if (requestCode == ChooseForumActivity.CHOOSE_FORUM_REQUEST) { val community = data.getParcelableExtra(EntranceUtils.KEY_COMMUNITY_DATA) mViewModel.communityEntity = community + mViewModel.type = community?.type ?: "" if (mViewModel.questionEntity != null) { mViewModel.questionEntity?.community?.id = community?.id ?: "" mViewModel.questionEntity?.community?.name = community?.name ?: "" } + if (mViewModel.type == BbsType.GAME_BBS.value) { + mViewModel.gameEntity = null + } setForumName() mBinding.vm = mViewModel } else if (requestCode == VideoPublishFragment.REQUEST_GAME_CODE) { @@ -212,15 +216,16 @@ class QuestionEditActivity : BaseRichEditorActivity(), Ke mViewModel.isFromSearch = intent.getBooleanExtra(QuestionEditViewModel.QUESTION_FORM_SEARCH, false) mViewModel.type = intent?.getStringExtra(BbsType::class.java.simpleName) ?: "" mBaseHandler.sendEmptyMessageDelayed(1, SAVE_DRAFTS_INTERVAL_TIME.toLong()) + if (communityEntity != null) { + mViewModel.communityEntity = communityEntity + setForumName() + if (mViewModel.type == BbsType.GAME_BBS.value) { + mBinding.chooseForumTv.isEnabled = false + mBinding.chooseForumTv.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null) + } + } } } - - if (communityEntity != null) { - mViewModel.communityEntity = communityEntity - setForumName() - mBinding.chooseForumTv.isEnabled = false - mBinding.chooseForumTv.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null) - } } observeData() } @@ -265,6 +270,7 @@ class QuestionEditActivity : BaseRichEditorActivity(), Ke mViewModel.communityEntity = draftEntity.bbs mViewModel.communityEntity?.icon = draftEntity.bbs?.game?.getIcon() mViewModel.communityEntity?.iconSubscript = draftEntity.bbs?.game?.iconSubscript + mViewModel.type = draftEntity.type if (draftEntity.tagActivityId.isNotEmpty() && draftEntity.tagActivityName.isNotEmpty()) { mViewModel.selectActivityLabelEntity = ActivityLabelEntity(draftEntity.tagActivityId, draftEntity.tagActivityName) mBinding.activityTitle.text = draftEntity.tagActivityName @@ -438,10 +444,10 @@ class QuestionEditActivity : BaseRichEditorActivity(), Ke } private fun showSelectGameDialog() { - if (mViewModel.type == BbsType.GAME_BBS.value) { - ChooseForumActivity.startChooseForumActivity(this) - } else if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { + if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { startActivityForResult(GameActivity.getIntent(this, GameActivity.SELECT_GAME_TITLE), VideoPublishFragment.REQUEST_GAME_CODE) + } else { + ChooseForumActivity.startChooseForumActivity(this) } } @@ -646,10 +652,10 @@ class QuestionEditActivity : BaseRichEditorActivity(), Ke return intent } - fun getIntent(context: Context, communityEntity: CommunityEntity, type: BbsType = BbsType.GAME_BBS): Intent { + fun getIntent(context: Context, communityEntity: CommunityEntity, type: String = ""): Intent { val intent = Intent(context, QuestionEditActivity::class.java) intent.putExtra(CommunityEntity::class.java.simpleName, communityEntity) - intent.putExtra(BbsType::class.java.simpleName, type.value) + intent.putExtra(BbsType::class.java.simpleName, type) return intent } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt index d2de201516..e224e24623 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt @@ -7,6 +7,7 @@ import android.view.Gravity import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.MutableLiveData import com.gh.base.BaseRichEditorViewModel +import com.gh.base.RichType import com.gh.base.fragment.WaitingDialogFragment import com.gh.common.util.* import com.gh.gamecenter.R @@ -350,6 +351,8 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel( }) } + override fun getRichType(): RichType = RichType.QUESTION + companion object { const val QUESTION_TAG_MAX_COUNT = 5 const val QUESTION_TITLE_MAX_LENGTH = 50 diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt index 707958fa00..75307d0b78 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt @@ -188,7 +188,7 @@ class NewQuestionDetailFragment : BaseCommentFragment(EntranceUtils.KEY_COMMUNITY_DATA)?.id - ?: "")) + ?: "", + arguments?.getString(EntranceUtils.KEY_ANSWER_ID) ?: "")) } override fun provideListAdapter(): ListAdapter<*> { diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailViewModel.kt index 275f5fb50e..ee7f076ad1 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailViewModel.kt @@ -28,7 +28,7 @@ import okhttp3.ResponseBody import org.json.JSONObject import retrofit2.HttpException -class NewQuestionDetailViewModel(application: Application, questionId: String = "", communityId: String = "") : +class NewQuestionDetailViewModel(application: Application, questionId: String = "", communityId: String = "", val answerId: String = "") : BaseCommentViewModel(application, articleId = "", communityId = communityId, videoId = "", questionId = questionId) { var questionRenderedLiveData = MutableLiveData() var questionPageFinishedLiveData = MutableLiveData() @@ -63,7 +63,11 @@ class NewQuestionDetailViewModel(application: Application, questionId: String = } override fun provideDataObservable(page: Int): Observable>? { - return mApi.getQuestionComment(questionId, currentSortType.value, page) + val map = hashMapOf() + if (answerId.isNotEmpty()) { + map["top_comment_id"] = answerId + } + return mApi.getQuestionComment(questionId, currentSortType.value, page, map) } override fun mergeResultLiveData() { @@ -167,13 +171,15 @@ class NewQuestionDetailViewModel(application: Application, questionId: String = class Factory(private val application: Application, private val questionId: String = "", - private val communityId: String = "") : ViewModelProvider.NewInstanceFactory() { + private val communityId: String = "", + private val answerId: String = "") : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return NewQuestionDetailViewModel( application = application, questionId = questionId, - communityId = communityId) as T + communityId = communityId, + answerId = answerId) as T } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt index 83098ecc14..a3b94a56db 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/QuestionDetailContentViewHolder.kt @@ -79,11 +79,14 @@ class QuestionDetailContentViewHolder(var binding: ItemArticleDetailContentBindi releaseTimeTv.text = String.format("发布于%s 最后编辑于%s", NewsUtils.getFormattedTime(question.time.create), NewsUtils.getFormattedTime(question.time.edit)) } richEditor.visibility = View.VISIBLE - question.community.game?.let { - gameName.text = question.community.name - forumIconView.displayGameIcon(it.getIcon(), it.iconSubscript) + question.community.let { entity -> + gameName.text = entity.name + val icon = if (!entity.icon.isNullOrEmpty()) entity.icon else entity.game?.getIcon() + val iconSubscript = if (!entity.iconSubscript.isNullOrEmpty()) entity.iconSubscript else entity.game?.iconSubscript + forumIconView.displayGameIcon(icon, iconSubscript) forumContainer.setOnClickListener { - DirectUtils.directForumDetail(forumContainer.context, question.community.id, "帖子详情") + DirectUtils.directForumDetail(forumContainer.context, entity.id, "问题详情") + LogUtils.uploadAccessToBbs(entity.id, "文章内所属论坛") } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt index 078bc921bc..e4220611aa 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt @@ -24,10 +24,10 @@ class VideoPublishActivity : NormalActivity() { companion object { @JvmStatic - fun getIntent(context: Context, communityEntity: CommunityEntity?, type: BbsType, entrance: String, path: String): Intent { + fun getIntent(context: Context, communityEntity: CommunityEntity?, type: String, entrance: String, path: String): Intent { val bundle = Bundle() bundle.putParcelable(CommunityEntity::class.java.simpleName, communityEntity) - bundle.putString(BbsType::class.java.simpleName, type.value) + bundle.putString(BbsType::class.java.simpleName, type) bundle.putString(EntranceUtils.KEY_ENTRANCE, ToolBarActivity.mergeEntranceAndPath(entrance, path)) bundle.putString(EntranceUtils.KEY_PATH, path) return getTargetIntent(context, VideoPublishActivity::class.java, VideoPublishFragment::class.java, bundle) diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt index 52803ae1f1..d48ee116bc 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishFragment.kt @@ -50,7 +50,6 @@ class VideoPublishFragment : NormalFragment() { private lateinit var mMenuPost: MenuItem private var mUpdatedPosterPath = "" private var mProcessingDialog: WaitingDialogFragment? = null - private var mType = "" override fun getLayoutId(): Int = 0 @@ -69,7 +68,7 @@ class VideoPublishFragment : NormalFragment() { mViewModel.videoDraft = arguments?.getParcelable(VideoDraftEntity::class.java.simpleName) mViewModel.videoPatch = arguments?.getParcelable(ForumVideoEntity::class.java.simpleName) mViewModel.communityEntity = arguments?.getParcelable(CommunityEntity::class.java.simpleName) - mType = arguments?.getString(BbsType::class.java.simpleName) ?: "" + mViewModel.type = arguments?.getString(BbsType::class.java.simpleName) ?: "" initData() observeData() checkPostButtonEnable() @@ -101,10 +100,10 @@ class VideoPublishFragment : NormalFragment() { } mBinding.videoPosterPatchHint.setOnClickListener { startMediaStore() } mBinding.forumContainer.setOnClickListener { - if (mType == BbsType.GAME_BBS.value) { - ChooseForumActivity.startChooseForumActivity(requireActivity()) - } else if (mType == BbsType.OFFICIAL_BBS.value) { + if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { startActivityForResult(GameActivity.getIntent(requireContext(), GameActivity.SELECT_GAME_TITLE), REQUEST_GAME_CODE) + } else { + ChooseForumActivity.startChooseForumActivity(requireActivity()) } } mBinding.chooseActivityContainer.setOnClickListener { @@ -136,6 +135,13 @@ class VideoPublishFragment : NormalFragment() { } else -> { setNavigationTitle("发视频") + if (mViewModel.communityEntity != null) { + setForumName() + if (mViewModel.type == BbsType.GAME_BBS.value) { + mBinding.forumContainer.isEnabled = false + mBinding.chooseForumTv.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null) + } + } PermissionHelper.checkStoragePermissionBeforeAction(requireActivity(), object : EmptyCallback { override fun onCallback() { startActivityForResult(LocalMediaActivity.getIntent(requireContext(), LocalMediaActivity.ChooseType.VIDEO, 1), BaseRichEditorActivity.INSERT_VIDEO_CODE) @@ -143,7 +149,6 @@ class VideoPublishFragment : NormalFragment() { }) } } - setForumName() } private fun observeData() { @@ -203,6 +208,10 @@ class VideoPublishFragment : NormalFragment() { } else if (requestCode == ChooseForumActivity.CHOOSE_FORUM_REQUEST) { val community = data.getParcelableExtra(EntranceUtils.KEY_COMMUNITY_DATA) mViewModel.communityEntity = community + mViewModel.type = community?.type ?: "" + if (mViewModel.type == BbsType.GAME_BBS.value) { + mViewModel.gameEntity = null + } setForumName() } else if (requestCode == REQUEST_GAME_CODE) { val game = data.getParcelableExtra(GameEntity::class.java.simpleName) @@ -221,7 +230,7 @@ class VideoPublishFragment : NormalFragment() { private fun setVideoPatch(videoPatch: ForumVideoEntity) { mMenuDraft.isVisible = false - mType = videoPatch.type + mViewModel.type = videoPatch.type mViewModel.gameEntity = videoPatch.game mViewModel.communityEntity = videoPatch.bbs mViewModel.communityEntity?.icon = mViewModel.gameEntity?.icon @@ -235,6 +244,7 @@ class VideoPublishFragment : NormalFragment() { ImageUtils.display(mBinding.videoPoster, videoPatch.poster) handleUploadSuccess(videoPatch.url) mBinding.deleteVideoIv.visibility = View.GONE + setForumName() } private fun setVideoDraft() { @@ -245,7 +255,7 @@ class VideoPublishFragment : NormalFragment() { mViewModel.gameEntity = it.game } mViewModel.gameEntity = it.game - mType = it.type + mViewModel.type = it.type mBinding.title.setText(it.title) mBinding.videoDes.setText(it.des) if (it.tagActivityId.isNotEmpty() && it.tagActivityName.isNotEmpty()) { @@ -389,11 +399,11 @@ class VideoPublishFragment : NormalFragment() { private fun setForumName() { if (mViewModel.communityEntity != null) { - if (mType == BbsType.GAME_BBS.value) { + if (mViewModel.type == BbsType.GAME_BBS.value) { mBinding.chooseForumTv.text = mViewModel.communityEntity?.name mBinding.forumIconView.displayGameIcon(mViewModel.communityEntity?.icon, mViewModel.communityEntity?.iconSubscript) setForumUI() - } else if (mType == BbsType.OFFICIAL_BBS.value) { + } else if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { if (mViewModel.gameEntity == null) { mBinding.chooseForumTv.text = "选择游戏" } else { @@ -403,9 +413,9 @@ class VideoPublishFragment : NormalFragment() { } } } else { - if (mType == BbsType.GAME_BBS.value) { + if (mViewModel.type == BbsType.GAME_BBS.value) { mBinding.chooseForumTv.text = "选择论坛" - } else if (mType == BbsType.OFFICIAL_BBS.value) { + } else if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { mBinding.chooseForumTv.text = "选择游戏" } } @@ -431,7 +441,7 @@ class VideoPublishFragment : NormalFragment() { val des = mBinding.videoDes.text.toString() if (mVideoFileEntity?.url.isNullOrEmpty()) return false if (mViewModel.communityEntity == null) return false - if (mType == BbsType.OFFICIAL_BBS.value && mViewModel.gameEntity == null) return false + if (mViewModel.type == BbsType.OFFICIAL_BBS.value && mViewModel.gameEntity == null) return false if (title.isEmpty()) return false if (des.isEmpty()) return false if (mViewModel.videoPatch != null && mViewModel.videoPatch?.title == title && mViewModel.videoPatch?.des == des) return false @@ -540,7 +550,7 @@ class VideoPublishFragment : NormalFragment() { toast("请选择论坛") return } - if (!isDraft && mType == BbsType.OFFICIAL_BBS.value && mViewModel.gameEntity == null) { + if (!isDraft && mViewModel.type == BbsType.OFFICIAL_BBS.value && mViewModel.gameEntity == null) { toast("请选择游戏") return } @@ -567,7 +577,7 @@ class VideoPublishFragment : NormalFragment() { length = mVideoFileEntity?.length ?: 0, poster = mViewModel.videoDraft?.poster ?: "", bbsId = mViewModel.communityEntity?.id ?: "", - type = mType, + type = mViewModel.type, gameId = mViewModel.gameEntity?.id ?: mViewModel.communityEntity?.game?.id ?: "", tagActivityId = mViewModel.selectActivityLabelEntity?.id ?: "", diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt index 4e89003da6..cd49b7a1d5 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt @@ -27,6 +27,7 @@ import java.io.File class VideoPublishViewModel(application: Application) : AndroidViewModel(application) { private val mApi = RetrofitManager.getInstance(getApplication()).api + var type: String = "" var communityEntity: CommunityEntity? = null var selectActivityLabelEntity: ActivityLabelEntity? = null var videoPatch: ForumVideoEntity? = null diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index 7e0a938d6d..41a2f9cc1f 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -3074,7 +3074,7 @@ public interface ApiService { * 问题评论(回答)列表 */ @GET("bbses/questions/{question_id}/comments") - Observable> getQuestionComment(@Path("question_id") String questionId, @Query("sort") String type, @Query("page") int page); + Observable> getQuestionComment(@Path("question_id") String questionId, @Query("sort") String type, @Query("page") int page, @QueryMap Map params); /** * 对社区问题发布评论(回答)