diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index aa20866511..53d3a835fa 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -264,6 +264,7 @@ public class EntranceUtils { public static final String KEY_GAME_COLLECTION_ID = "game_collection_id";//游戏单ID public static final String KEY_ASSIST_RES = "assist_res"; public static final String KEY_LAST_SELECTED_POSITION = "last_selected_position"; + public static final String KEY_RECOMMEND_ID = "recommend_id"; public static void jumpActivity(Context context, Bundle bundle) { bundle.putBoolean(KEY_REQUIRE_REDIRECT, true); diff --git a/app/src/main/java/com/gh/common/util/NewLogUtils.kt b/app/src/main/java/com/gh/common/util/NewLogUtils.kt index ee96a7dd05..d2f687476c 100644 --- a/app/src/main/java/com/gh/common/util/NewLogUtils.kt +++ b/app/src/main/java/com/gh/common/util/NewLogUtils.kt @@ -51,15 +51,17 @@ object NewLogUtils { } @SuppressLint("CheckResult") - fun logForumContentBrowser(contentId: String, contentType: String) { - val requestBody = hashMapOf( - Pair("content_id", contentId), - Pair("content_type", contentType) - ).createRequestBody() + fun logForumContentBrowser(contentId: String, contentType: String, recommendId: String) { + val requestMap = hashMapOf() + requestMap["content_id"] = contentId + requestMap["content_type"] = contentType + if (recommendId.isNotBlank()) { + requestMap["recommend_id"] = recommendId + } RetrofitManager.getInstance() .api - .postBrowses(requestBody) + .postBrowses(requestMap.toRequestBody()) .subscribeOn(Schedulers.io()) .subscribe(EmptyResponse()) } diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt index bc30312738..f00124a04f 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt @@ -118,20 +118,91 @@ class ForumArticleListAdapter(context: Context, when (articleEntity.type) { "community_article" -> { - MtaHelper.onEvent("论坛首页", viewHolder.getKey(BaseActivity.mergeEntranceAndPath(mEntrance, path)), "${articleEntity.title}(${articleEntity.id})") - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, articleEntity.community, articleEntity.id, "", path)) + MtaHelper.onEvent( + "论坛首页", + viewHolder.getKey( + BaseActivity.mergeEntranceAndPath( + mEntrance, + path + ) + ), + "${articleEntity.title}(${articleEntity.id})" + ) + mContext.startActivity( + ArticleDetailActivity.getRecommendIntent( + mContext, + articleEntity.community, + articleEntity.id, + articleEntity.recommendId, + "", + path + ) + ) } "video" -> { - MtaHelper.onEvent("论坛首页", viewHolder.getKey(BaseActivity.mergeEntranceAndPath(mEntrance, path)), "${articleEntity.title}(${articleEntity.id})") - mContext.startActivity(ForumVideoDetailActivity.getIntent(mContext, articleEntity.id ?:"", articleEntity.community.id)) + MtaHelper.onEvent( + "论坛首页", + viewHolder.getKey( + BaseActivity.mergeEntranceAndPath( + mEntrance, + path + ) + ), + "${articleEntity.title}(${articleEntity.id})" + ) + mContext.startActivity( + ForumVideoDetailActivity.getRecommendIntent( + mContext, + articleEntity.id, + articleEntity.community.id, + articleEntity.recommendId + ) + ) } "question" -> { - MtaHelper.onEvent("论坛首页", viewHolder.getKey(BaseActivity.mergeEntranceAndPath(mEntrance, path)), "${articleEntity.title}(${articleEntity.id})") - mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, articleEntity.id, mEntrance, path)) + MtaHelper.onEvent( + "论坛首页", + viewHolder.getKey( + BaseActivity.mergeEntranceAndPath( + mEntrance, + path + ) + ), + "${articleEntity.title}(${articleEntity.id})" + ) + mContext.startActivity( + NewQuestionDetailActivity.getRecommendIntent( + mContext, + articleEntity.id, + "", + articleEntity.recommendId, + mEntrance, + path + ) + ) } "answer" -> { - MtaHelper.onEvent("论坛首页", viewHolder.getKey(BaseActivity.mergeEntranceAndPath(mEntrance, path)), "${articleEntity.title}(${articleEntity.id})") - mContext.startActivity(NewQuestionDetailActivity.getCommentIntent(mContext, articleEntity.questions.id, articleEntity.id, mEntrance, path)) + MtaHelper.onEvent( + "论坛首页", + viewHolder.getKey( + BaseActivity.mergeEntranceAndPath( + mEntrance, + path + ) + ), + "${articleEntity.title}(${articleEntity.id})" + ) + mContext.startActivity( + NewQuestionDetailActivity.getRecommendIntent( + mContext, + articleEntity.questions.id, + articleEntity.id, + articleEntity.recommendId, + mEntrance, + path, + true + ) + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt index 1108429cb6..7c36df7aea 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt @@ -38,7 +38,14 @@ class ArticleDetailActivity : NormalActivity() { const val ARTICLE_PATCH_REQUEST = 123 @JvmStatic - fun getIntent(context: Context, community: CommunityEntity, articleId: String, entrance: String, path: String, specialColumn: SpecialColumn? = null): Intent { + fun getIntent( + context: Context, + community: CommunityEntity, + articleId: String, + entrance: String, + path: String, + specialColumn: SpecialColumn? = null + ): Intent { val intent = Intent(context, ArticleDetailActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_COMMUNITY_ARTICLE_ID, articleId) @@ -52,7 +59,13 @@ class ArticleDetailActivity : NormalActivity() { * 自动滚动到评论区域 */ @JvmStatic - fun getCommentIntent(context: Context, community: CommunityEntity, articleId: String, entrance: String, path: String): Intent { + fun getCommentIntent( + context: Context, + community: CommunityEntity, + articleId: String, + entrance: String, + path: String + ): Intent { val intent = Intent(context, ArticleDetailActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_COMMUNITY_ARTICLE_ID, articleId) @@ -63,12 +76,19 @@ class ArticleDetailActivity : NormalActivity() { } @JvmStatic - fun getRecommendsIntent(context: Context, community: CommunityEntity, articleId: String, entrance: String, path: String): Intent { + fun getRecommendIntent( + context: Context, + community: CommunityEntity, + articleId: String, + recommendId: String, + entrance: String, + path: String, + ): Intent { val intent = Intent(context, ArticleDetailActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_COMMUNITY_ARTICLE_ID, articleId) + intent.putExtra(EntranceUtils.KEY_RECOMMEND_ID, recommendId) intent.putExtra(EntranceUtils.KEY_COMMUNITY_DATA, community) - intent.putExtra(EntranceUtils.KEY_RECOMMENDS_CONTENTS, true) intent.putExtra(EntranceUtils.KEY_PATH, path) return intent } 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 6899869e19..3547a8b9d0 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 @@ -183,8 +183,8 @@ class ArticleDetailFragment : BaseCommentFragment(EntranceUtils.KEY_COMMUNITY_DATA)?.id - ?: "" + arguments?.getParcelable(EntranceUtils.KEY_COMMUNITY_DATA)?.id ?: "", + arguments?.getString(EntranceUtils.KEY_RECOMMEND_ID) ?: "" ) ) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt index 205f501a4b..99fccca807 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt @@ -29,7 +29,8 @@ import retrofit2.HttpException class ArticleDetailViewModel( application: Application, articleId: String = "", - communityId: String = "" + communityId: String = "", + val recommendId: String = "" ) : BaseCommentViewModel( application, articleId = articleId, @@ -80,7 +81,7 @@ class ArticleDetailViewModel( loadResultLiveData.postValue(LoadResult.SUCCESS) mergeListData(mListLiveData.value, displayFloor = true) - NewLogUtils.logForumContentBrowser(articleId, "bbs_article") + NewLogUtils.logForumContentBrowser(articleId, "bbs_article", recommendId) } override fun onFailure(e: HttpException?) { @@ -403,14 +404,16 @@ class ArticleDetailViewModel( class Factory( private val application: Application, private val articleId: String = "", - private val communityId: String = "" + private val communityId: String = "", + private val recommendId: String = "" ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return ArticleDetailViewModel( application = application, articleId = articleId, - communityId = communityId + communityId = communityId, + recommendId = recommendId ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleEntity.kt index 22d141b2cc..aa7d9d534b 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleEntity.kt @@ -62,7 +62,10 @@ data class ArticleEntity( @SyncIgnore // questions里的vote当前entity的vote冲突 @TypeConverters(QuestionsConverter::class) @SerializedName("question") - var questions: Questions = Questions() + var questions: Questions = Questions(), + @Ignore + @SerializedName("recommend_id") + var recommendId: String = "" ) : Parcelable { fun getPassVideos(): List { diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt index 6099ca64a3..bcff3faa07 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt @@ -37,7 +37,12 @@ class NewQuestionDetailActivity : NormalActivity() { companion object { @JvmStatic - fun getIntent(context: Context, questionId: String, entrance: String, path: String): Intent { + fun getIntent( + context: Context, + questionId: String, + entrance: String, + path: String + ): Intent { val intent = Intent(context, NewQuestionDetailActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_QUESTIONS_ID, questionId) @@ -49,7 +54,12 @@ class NewQuestionDetailActivity : NormalActivity() { * 自动滚动到评论区域 */ @JvmStatic - fun getCommentIntent(context: Context, questionId: String, entrance: String, path: String): Intent { + fun getCommentIntent( + context: Context, + questionId: String, + entrance: String, + path: String + ): Intent { val intent = Intent(context, NewQuestionDetailActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_QUESTIONS_ID, questionId) @@ -59,7 +69,13 @@ class NewQuestionDetailActivity : NormalActivity() { } @JvmStatic - fun getCommentIntent(context: Context, questionId: String, answerId: String, entrance: String, path: String): Intent { + fun getCommentIntent( + context: Context, + questionId: String, + answerId: String, + entrance: String, + path: String + ): Intent { val intent = Intent(context, NewQuestionDetailActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_QUESTIONS_ID, questionId) @@ -68,5 +84,25 @@ class NewQuestionDetailActivity : NormalActivity() { intent.putExtra(EntranceUtils.KEY_PATH, path) return intent } + + @JvmStatic + fun getRecommendIntent( + context: Context, + questionId: String, + answerId: String, + recommendId: String, + entrance: String, + path: String, + scrollToComment: Boolean = false + ): Intent { + val intent = Intent(context, NewQuestionDetailActivity::class.java) + intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) + intent.putExtra(EntranceUtils.KEY_QUESTIONS_ID, questionId) + intent.putExtra(EntranceUtils.KEY_ANSWER_ID, answerId) + intent.putExtra(EntranceUtils.KEY_RECOMMEND_ID, recommendId) + intent.putExtra(EntranceUtils.KEY_SCROLL_TO_COMMENT_AREA, scrollToComment) + intent.putExtra(EntranceUtils.KEY_PATH, path) + return intent + } } } \ No newline at end of file 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 9ef907e688..62f528c8bd 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 @@ -445,7 +445,8 @@ class NewQuestionDetailFragment : arguments?.getString(EntranceUtils.KEY_QUESTIONS_ID) ?: "", arguments?.getParcelable(EntranceUtils.KEY_COMMUNITY_DATA)?.id ?: "", - arguments?.getString(EntranceUtils.KEY_ANSWER_ID) ?: "" + arguments?.getString(EntranceUtils.KEY_ANSWER_ID) ?: "", + arguments?.getString(EntranceUtils.KEY_RECOMMEND_ID) ?: "" ) ) } 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 79340dc3d5..0ff014acbb 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 @@ -35,7 +35,8 @@ class NewQuestionDetailViewModel( application: Application, questionId: String = "", communityId: String = "", - val answerId: String = "" + val answerId: String = "", + val recommendId: String = "", ) : BaseCommentViewModel( application, @@ -65,7 +66,7 @@ class NewQuestionDetailViewModel( loadResultLiveData.postValue(LoadResult.SUCCESS) mergeListData(mListLiveData.value, displayFloor = true) - NewLogUtils.logForumContentBrowser(questionId, "bbs_question") + NewLogUtils.logForumContentBrowser(questionId, "bbs_question", recommendId) } override fun onFailure(e: HttpException?) { @@ -216,7 +217,8 @@ class NewQuestionDetailViewModel( private val application: Application, private val questionId: String = "", private val communityId: String = "", - private val answerId: String = "" + private val answerId: String = "", + private val recommendId: String = "" ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { @@ -224,7 +226,8 @@ class NewQuestionDetailViewModel( application = application, questionId = questionId, communityId = communityId, - answerId = answerId + answerId = answerId, + recommendId = recommendId ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt index 3bb98439f0..dee4cfa70f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt @@ -39,14 +39,42 @@ class ForumVideoDetailActivity : BaseActivity() { companion object { const val VIDEO_PATCH_REQUEST = 100 - fun getIntent(context: Context, videoId: String, bbsId: String): Intent { - return getIntent(context, videoId, bbsId, false) + fun getIntent( + context: Context, + videoId: String, bbsId: String + ): Intent { + return getIntent(context, videoId, bbsId, "", false) } - fun getIntent(context: Context, videoId: String, bbsId: String, scrollToComment: Boolean = false): Intent { + fun getIntent( + context: Context, + videoId: String, + bbsId: String, + scrollToComment: Boolean = false + ): Intent { + return getIntent(context, videoId, bbsId, "", scrollToComment) + } + + fun getRecommendIntent( + context: Context, + videoId: String, + bbsId: String, + recommendId: String + ): Intent { + return getIntent(context, videoId, bbsId, recommendId, false) + } + + fun getIntent( + context: Context, + videoId: String, + bbsId: String, + recommendId: String = "", + scrollToComment: Boolean = false + ): Intent { val intent = Intent(context, ForumVideoDetailActivity::class.java) intent.putExtra(EntranceUtils.KEY_VIDEO_ID, videoId) intent.putExtra(EntranceUtils.KEY_BBS_ID, bbsId) + intent.putExtra(EntranceUtils.KEY_RECOMMEND_ID, recommendId) if (scrollToComment) { intent.putExtra(PAGE_INDEX, 1) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt index 4c9f0a025c..aba85eb19f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt @@ -120,7 +120,12 @@ class ForumVideoDetailFragment : BaseFragment_TabLayout() { insets.systemWindowInsetTop insets.consumeSystemWindowInsets() } - mViewModel = viewModelProviderFromParent(ForumVideoDetailViewModel.Factory(mVideoId)) + mViewModel = viewModelProviderFromParent( + ForumVideoDetailViewModel.Factory( + mVideoId, + arguments?.getString(EntranceUtils.KEY_RECOMMEND_ID) ?: "" + ) + ) mBinding.root.setBackgroundColor(Color.WHITE) mSkeleton = Skeleton.bind(mBinding.skeleton) .shimmer(true) diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailViewModel.kt index 664441b9b1..91299c38a8 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailViewModel.kt @@ -23,7 +23,11 @@ import okhttp3.ResponseBody import retrofit2.HttpException import tv.danmaku.ijk.media.exo2.ExoSourceManager -class ForumVideoDetailViewModel(application: Application, val videoId: String) : +class ForumVideoDetailViewModel( + application: Application, + val videoId: String, + val recommendId: String +) : AndroidViewModel(application) { private val mApi = RetrofitManager.getInstance().api var videoIsMuted = SPUtils.getBoolean(Constants.SP_VIDEO_PLAY_MUTE, true) @@ -49,7 +53,7 @@ class ForumVideoDetailViewModel(application: Application, val videoId: String) : if (response != null) { detailLiveData.postValue(Resource.success(response)) - NewLogUtils.logForumContentBrowser(videoId, "bbs_video") + NewLogUtils.logForumContentBrowser(videoId, "bbs_video", recommendId) } } @@ -202,9 +206,14 @@ class ForumVideoDetailViewModel(application: Application, val videoId: String) : } } - class Factory(private val videoId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val videoId: String, private val recommendId: String) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { - return ForumVideoDetailViewModel(HaloApp.getInstance().application, videoId) as T + return ForumVideoDetailViewModel( + HaloApp.getInstance().application, + videoId, + recommendId + ) as T } } } \ No newline at end of file