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 fe2fe91258..ac2ea8ffc3 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -106,6 +106,7 @@ public class EntranceUtils { public static final String KEY_COMMUNITY_ARTICLE_ID = "communityArticleId"; public static final String KEY_ARTICLE_COMMENT_ID = "articleCommentId"; public static final String KEY_DEVICE_NAME = "deviceName"; + public static final String KEY_SHOW_ARTICLE_COMMENT = "showArticleComment"; public static void jumpActivity(Context context, Bundle bundle) { diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/MessageEntity.kt index cd2f2ee5f7..010a31d769 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/MessageEntity.kt @@ -31,6 +31,8 @@ class MessageEntity { @SerializedName("user") var userEntity: UserEntity = UserEntity() + var game: Game = Game() + class Article() : Parcelable { @SerializedName("_id") @@ -40,16 +42,25 @@ class MessageEntity { var thumb: String? = null + @SerializedName("community_id") + var communityId: String? = null + + var images: List = ArrayList() + constructor(parcel: Parcel) : this() { id = parcel.readString() title = parcel.readString() thumb = parcel.readString() + communityId = parcel.readString() + images = parcel.createStringArrayList() } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(id) parcel.writeString(title) parcel.writeString(thumb) + parcel.writeString(communityId) + parcel.writeStringList(images) } override fun describeContents(): Int { @@ -151,4 +162,15 @@ class MessageEntity { var content: String? = null } + + class Game { + @SerializedName("_id") + var id: String? = null + + var icon: String? = null + + var name: String? = null + } + + } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt index 589bda97a5..445465b9b1 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt @@ -109,9 +109,12 @@ class RatingAdapter(context: Context, private fun setCommentClick(binding: RatingCommentItemBinding, comment: RatingComment) { binding.run { vote.setOnClickListener { - mListViewModel.voteComment(ratingData?.comment?.id!!, callback = { - vote.isChecked = true - }) + CheckLoginUtils.checkLogin(mContext) { + mListViewModel.voteComment(comment.id, callback = { + vote.text = (comment.vote + 1).toString() + vote.isChecked = true + }) + } } commentItem.setOnClickListener { CommentUtils.showGameCommentOptions(mContext, comment, mListViewModel.gameId) diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java index 8c396678b3..339b9ccd7d 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java @@ -10,13 +10,16 @@ import com.gh.common.util.ImageUtils; import com.gh.common.util.LogUtils; import com.gh.common.util.NewsUtils; import com.gh.gamecenter.CommentDetailActivity; +import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.MessageDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.PersonalHomeActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.databinding.MessageItemBinding; +import com.gh.gamecenter.entity.CommunityEntity; import com.gh.gamecenter.entity.MessageEntity; import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity; +import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity; import com.gh.gamecenter.qa.entity.Questions; import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity; @@ -164,6 +167,65 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageAskIcon.setVisibility(View.VISIBLE); mBinding.messageArticleIcon.setVisibility(View.GONE); break; + case "community_article_vote": + mBinding.messageCommand.setText("赞了你的评论"); + mBinding.messageContent.setVisibility(View.GONE); + mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle()); + mBinding.messageArticleIcon.setVisibility(View.GONE); + mBinding.messageAskIcon.setVisibility(View.VISIBLE); + images = messageEntity.getArticle().getImages(); + if (images.size() > 0) { + targetUrl = images.get(0); + } + ImageUtils.display(mBinding.messageAskIcon, targetUrl); + break; + case "community_article_comment": + mBinding.messageCommand.setText("评论了你"); + mBinding.messageContent.setVisibility(View.VISIBLE); + mBinding.messageContent.setMaxLines(Integer.MAX_VALUE); + mBinding.messageContent.setText(messageEntity.getComment().getContent()); + mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle()); + images = messageEntity.getAnswer().getImages(); + if (images.size() > 0) { + targetUrl = images.get(0); + } + ImageUtils.displayIcon(mBinding.messageAskIcon, targetUrl); + mBinding.messageAskIcon.setVisibility(View.VISIBLE); + mBinding.messageArticleIcon.setVisibility(View.GONE); + break; + case "community_article_comment_vote": + mBinding.messageCommand.setText("赞了你的评论"); + mBinding.messageContent.setVisibility(View.GONE); + mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle()); + images = messageEntity.getAnswer().getImages(); + if (images.size() > 0) { + targetUrl = images.get(0); + } + ImageUtils.displayIcon(mBinding.messageAskIcon, targetUrl); + mBinding.messageAskIcon.setVisibility(View.VISIBLE); + mBinding.messageArticleIcon.setVisibility(View.GONE); + break; + case "reply_community_article_comment": + mBinding.messageCommand.setText("回复了你"); + mBinding.messageContent.setVisibility(View.VISIBLE); + mBinding.messageContent.setMaxLines(Integer.MAX_VALUE); + mBinding.messageContent.setText(messageEntity.getDialogue().getFrom().getContent()); + mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle()); + images = messageEntity.getArticle().getImages(); + if (images.size() > 0) { + ImageUtils.displayIcon(mBinding.messageAskIcon, images.get(0)); + mBinding.messageAskIcon.setVisibility(View.VISIBLE); + mBinding.messageArticleIcon.setVisibility(View.GONE); + } + break; + case "game_comment_vote": + mBinding.messageCommand.setText("赞了你的评论"); + mBinding.messageContent.setVisibility(View.GONE); + mBinding.messageOriginalTitle.setText(messageEntity.getGame().getName()); + ImageUtils.displayIcon(mBinding.messageAskIcon, messageEntity.getGame().getIcon()); + mBinding.messageAskIcon.setVisibility(View.VISIBLE); + mBinding.messageArticleIcon.setVisibility(View.GONE); + break; } mBinding.messageUserIcon.setOnClickListener(v -> { @@ -177,6 +239,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder public static void messageItemClickSkip(View view, MessageEntity entity, String tracers) { if (view == null || entity == null) return; Context context = view.getContext(); + CommunityEntity community; switch (entity.getType()) { case "comment_vote": if (view.getId() == R.id.message_original) { @@ -240,11 +303,40 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder case "answer_comment": if (view.getId() == R.id.message_original) { context.startActivity(AnswerDetailActivity.getIntent(context, entity.getAnswer().getId(), tracers, "消息中心")); - } else if (view.getId() == R.id.message_item) { - // 打开评论管理 + } else if (view.getId() == R.id.message_item) { // 打开评论管理 context.startActivity(AnswerDetailActivity.getIntent(context, entity.getAnswer().getId(), tracers, "消息中心", true)); } break; + case "community_article_comment_vote": + case "community_article_comment": + community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); + if (view.getId() == R.id.message_original) { + context.startActivity(ArticleDetailActivity.getIntent(context, community, entity.getArticle().getId())); + } else if (view.getId() == R.id.message_item) { // 打开评论管理 + context.startActivity(ArticleDetailActivity.getOpenCommentIntent(context, community, entity.getArticle().getId())); + } + break; + case "community_article_vote": + if (view.getId() == R.id.message_original || view.getId() == R.id.message_item) { + community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); + context.startActivity(ArticleDetailActivity.getIntent(context, community, entity.getArticle().getId())); + } + break; + case "reply_community_article_comment": + if (view.getId() == R.id.message_original) { + community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); + context.startActivity(ArticleDetailActivity.getIntent(context, community, entity.getArticle().getId())); + } else if (view.getId() == R.id.message_item) { + Intent intent = CommentDetailActivity.getCommunityArticleCommentIntent(context, entity.getArticle().getId(), + entity.getDialogue().getFrom().getId(), entity.getArticle().getCommunityId()); + context.startActivity(intent); + } + break; + case "game_comment_vote": + if (view.getId() == R.id.message_original || view.getId() == R.id.message_item) { + GameDetailActivity.startGameDetailActivity(context, entity.getGame().getId(), tracers); + } + break; } } } 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 6ea6e1bd37..4b138a651d 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 @@ -46,6 +46,8 @@ class ArticleDetailActivity : BaseActivity() { private val mArticleImgs = ArrayList() + private var mIsShowCommentManager: Boolean = false + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == ARTICLE_PATCH_REQUEST && resultCode == Activity.RESULT_OK) { @@ -79,6 +81,8 @@ class ArticleDetailActivity : BaseActivity() { setToolbarMenu(R.menu.menu_answer) setNavigationTitle(getString(R.string.community_article_detail_title)) + mIsShowCommentManager = intent.getBooleanExtra(EntranceUtils.KEY_SHOW_ARTICLE_COMMENT, false) + mBinding = ActivityArticleDetailBinding.bind(mContentView) mBinding?.articleDetailRd?.setInputEnabled(false) mViewModel = ViewModelProviders.of(this).get(ArticleDetailViewModel::class.java) @@ -100,6 +104,9 @@ class ArticleDetailActivity : BaseActivity() { }) mBinding?.articleDetailRd?.addJavascriptInterface(JsInterface(), "imagelistener") + + if (mIsShowCommentManager) + mBaseHandler.postDelayed({ mBinding?.articleDetailCommentCountContainer?.performClick() }, 500) } override fun onMenuItemClick(item: MenuItem?): Boolean { @@ -311,5 +318,14 @@ class ArticleDetailActivity : BaseActivity() { intent.putExtra(EntranceUtils.KEY_COMMUNITY_DATA, community) return intent } + + @JvmStatic + fun getOpenCommentIntent(context: Context, community: CommunityEntity, articleId: String): Intent { + val intent = Intent(context, ArticleDetailActivity::class.java) + intent.putExtra(EntranceUtils.KEY_COMMUNITY_ARTICLE_ID, articleId) + intent.putExtra(EntranceUtils.KEY_COMMUNITY_DATA, community) + intent.putExtra(EntranceUtils.KEY_SHOW_ARTICLE_COMMENT, true) + return intent + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/rating_comment_item.xml b/app/src/main/res/layout/rating_comment_item.xml index 8b610c249d..a2dd8c6a1c 100644 --- a/app/src/main/res/layout/rating_comment_item.xml +++ b/app/src/main/res/layout/rating_comment_item.xml @@ -21,7 +21,7 @@ android:background = "@android:color/white" android:paddingBottom = "12dp" android:paddingLeft = "20dp" - android:paddingRight = "20dp" > + android:paddingRight = "10dp" > @@ -108,17 +108,22 @@ android:checked = "@{data.me.isVoted}" android:drawablePadding = "7dp" android:drawableRight = "@drawable/rating_comment_vote_style" + android:paddingBottom = "10dp" + android:paddingRight = "10dp" + android:paddingTop = "10dp" + android:text = "@{data.vote > 0? data.vote + ``: ``}" android:textColor = "@color/vote_selector" android:textSize = "13sp" app:layout_constraintBottom_toBottomOf = "@id/user_icon_container" app:layout_constraintRight_toRightOf = "parent" - app:layout_constraintTop_toBottomOf = "@id/user_name" + app:layout_constraintTop_toTopOf = "@id/user_icon_container" tools:text = "1" />