From 8f2ee5d323bbc9f0ec3b6d2d5415fdb0644e9be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Fri, 11 Aug 2023 14:29:20 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B5=8B=E8=AF=95=EF=BC=9A=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E5=85=A5=E5=8F=A3=E7=9A=84=E6=9C=AA=E8=AF=BB?= =?UTF-8?q?=E4=B8=8E=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4=20https://jira.shanqu.cc/browse/GHZS-3208=20fix:=20?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E4=BC=98=E5=8C=96=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=EF=BC=9A=E4=BC=9A=E8=AF=9D=E6=B6=88=E6=81=AF=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=85=8D=E6=89=93=E6=89=B0=E6=88=96=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=85=8D=E6=89=93=E6=89=B0=E6=97=B6=EF=BC=8C=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E7=AB=8B=E5=8D=B3=E5=93=8D=E5=BA=94=20https:?= =?UTF-8?q?//jira.shanqu.cc/browse/GHZS-3209?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/SearchToolbarFragment.java | 11 +++++++---- .../gamecenter/personal/HaloPersonalFragment.kt | 16 ++++++++++------ .../message/view/MessageWrapperActivity.kt | 2 +- .../view/message/MessageItemViewHolder.java | 5 +++-- .../message/view/message/MessageListAdapter.kt | 8 ++++---- .../view/message/SortedMessageListAdapter.kt | 4 ++-- .../view/message/SortedMessageListViewModel.kt | 4 +++- 7 files changed, 30 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java index 31d3397e88..9e62e98bf3 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java @@ -206,11 +206,14 @@ public class SearchToolbarFragment extends BaseLazyFragment implements View.OnCl mUnreadViewModel = ViewModelProviders.of(this, new MessageUnreadViewModel.Factory(HaloApp.getInstance().getApplication())).get(MessageUnreadViewModel.class); - mUnreadViewModel.getLiveData().observe(this, unreadEntity -> { + mUnreadViewModel.getMessageUnreadCountLiveData().observe(this, unreadEntity -> { if (unreadEntity != null) { - int count = unreadEntity.getTotal() - unreadEntity.getFans(); - mMessageUnread.setVisibility(count > 0 ? View.VISIBLE : View.GONE); - BindingAdapters.setMessageUnread(mMessageUnread, count); + mMessageUnread.setVisibility(unreadEntity.getMessage() == 0 ? View.GONE : View.VISIBLE); + if (unreadEntity.getMessage() == -1) { + mMessageUnread.setText(""); + } else { + BindingAdapters.setMessageUnread(mMessageUnread, unreadEntity.getMessage()); + } } else { mMessageUnread.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt index 6e68f1d908..44bc7425b3 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt @@ -10,6 +10,7 @@ import android.view.View import androidx.appcompat.content.res.AppCompatResources import androidx.constraintlayout.widget.ConstraintSet import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager @@ -35,6 +36,7 @@ import com.gh.gamecenter.databinding.FragmentHaloPersonalBinding import com.gh.gamecenter.databinding.FragmentPersonalStubBinding import com.gh.gamecenter.entity.BadgeEntity import com.gh.gamecenter.feature.entity.Badge +import com.gh.gamecenter.feature.entity.MessageUnreadCount import com.gh.gamecenter.feature.entity.MessageUnreadEntity import com.gh.gamecenter.feature.eventbus.EBConcernChanged import com.gh.gamecenter.fragment.MainWrapperFragment @@ -419,12 +421,14 @@ class HaloPersonalFragment : BaseLazyFragment() { } } - mUnreadViewModel.liveData.observe(this) { messageUnread: MessageUnreadEntity? -> - if (messageUnread != null && messageUnread.total > 0) { - val count = messageUnread.total - messageUnread.fans - mStubBinding.loginMessageHint.visibility = - if (count > 0) View.VISIBLE else View.GONE - BindingAdapters.setMessageUnread(mStubBinding.loginMessageHint, count) + mUnreadViewModel.messageUnreadCountLiveData.observe(this) { messageUnread: MessageUnreadCount? -> + if (messageUnread != null) { + mStubBinding.loginMessageHint.goneIf(messageUnread.message == 0) + if (messageUnread.message == -1) { + mStubBinding.loginMessageHint.text = "" + } else { + BindingAdapters.setMessageUnread(mStubBinding.loginMessageHint, messageUnread.message) + } } else { mStubBinding.loginMessageHint.visibility = View.GONE EventBus.getDefault() diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt index eca0842224..63d13ea014 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt @@ -156,7 +156,7 @@ class MessageWrapperActivity : BaseActivity_TabLayout() { } else if (tabTitle?.text == TAB_MESSAGE) { ovalHint?.isVisible = mUnreadCount != null && mUnreadCount!!.message == -1 hintTv?.isVisible = mUnreadCount != null && mUnreadCount!!.message > 0 - hintTv?.text = mUnreadCount?.message.toString() + hintTv?.text = if ((mUnreadCount?.message ?: 0) < 100) mUnreadCount?.message.toString() else "99+" } } diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java index 45834d055b..04b930cb21 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java @@ -793,9 +793,10 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); ARouter.getInstance().build(RouteConsts.activity.articleDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) - .withString(EntranceConsts.KEY_COMMUNITY_ID, entity.getArticle().getId()) + .withString(EntranceConsts.KEY_COMMUNITY_ARTICLE_ID, entity.getArticle().getId()) .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getComment().getId()) .withParcelable(EntranceConsts.KEY_COMMUNITY_DATA, community) + .withBoolean(EntranceConsts.KEY_SCROLL_TO_COMMENT_AREA, true) .withString(EntranceConsts.KEY_PATH, path) .navigation(); break; @@ -889,7 +890,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder exposureSourceList.add(exposureSource); ARouter.getInstance().build(RouteConsts.activity.ratingReplyActivity) .withString(EntranceConsts.KEY_GAMEID, entity.getGame().getId()) - .withString(EntranceConsts.KEY_COMMENTID, entity.getGame().getId()) + .withString(EntranceConsts.KEY_COMMENTID, entity.getReply().getCommentId()) .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getReply().getId()) .withString(EntranceConsts.KEY_EXPOSURE_SOURCE, GsonUtils.toJson(exposureSourceList)) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt index d259f808f1..14f7fa9dc0 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt @@ -99,6 +99,8 @@ class MessageListAdapter( override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { mEntityList.safelyGetInRelease(position)?.let { if (holder is MessageItemViewHolder && it.normalMessage != null) { + val entity = it.normalMessage + entity?.read = true holder.setMessageItem(it.normalMessage, mContext, mEntrance) } if (holder is KeFuViewHolder) { @@ -424,10 +426,8 @@ class MessageListAdapter( "问题" -> if (!TextUtils.isEmpty(data.id)) { ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) .withString(EntranceConsts.KEY_QUESTIONS_ID, data.id) - .withString( - EntranceConsts.KEY_ENTRANCE, - BaseActivity.mergeEntranceAndPath(mEntrance, "(消息-客服)") - ) + .withString(EntranceConsts.KEY_ENTRANCE, mEntrance) + .withString(EntranceConsts.KEY_PATH, "(消息-客服)") .navigation() } diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt index 7912a3905a..0de7c8c066 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt @@ -41,7 +41,7 @@ class SortedMessageListAdapter( } override fun areContentsTheSame(oldItem: SortedMessageEntity?, newItem: SortedMessageEntity?): Boolean { - return (oldItem?.id == newItem?.id) && (oldItem?.unreadCount == newItem?.unreadCount) + return (oldItem?.id == newItem?.id) && (oldItem?.unreadCount == newItem?.unreadCount) && (oldItem?.setting == newItem?.setting) } override fun getItemViewType(position: Int): Int { @@ -83,7 +83,7 @@ class SortedMessageListAdapter( timeTv.text = commentUtils?.getCommentTime(entity.latestContent?.time ?: 0) contentTv.text = entity.latestContent?.text hintTv.isVisible = entity.setting.doNotDisturb == false && entity.unreadCount > 0 - hintTv.text = entity.unreadCount.toString() + hintTv.text = if (entity.unreadCount < 100) entity.unreadCount.toString() else "99+" hintTv.typeface = Typeface.createFromAsset(mContext.assets, "fonts/d_din_bold_only_number.ttf") ovalHint.isVisible = entity.setting.doNotDisturb == true && entity.unreadCount > 0 ConstraintSet().apply { diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt index f65b745f5f..089fb2fbe2 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt @@ -121,9 +121,11 @@ class SortedMessageListViewModel(application: Application) : patchSortedMessageSetting(id, mapOf("do_not_disturb" to doNotDisturb).toRequestBody()) { mListLiveData.value?.let { val messageEntityList = ArrayList(it) - messageEntityList[position].setting.doNotDisturb = doNotDisturb + messageEntityList[position] = + messageEntityList[position].copy(setting = messageEntityList[position].setting.copy(doNotDisturb = doNotDisturb)) mListLiveData.postValue(messageEntityList) } + loadMessageUnreadData() } } From ad3301e0a8f0350017fabc3a82e6d54b3b92991b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Fri, 11 Aug 2023 14:54:05 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E8=AE=A2=E9=98=85&=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E4=BD=93=E7=B3=BB=E4=BC=98=E5=8C=96-=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E4=B8=AD=E5=BF=83=E4=BC=98=E5=8C=96=E2=80=940811UI?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=20https://jira.shanqu.cc/browse/GHZS-3213?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/gamecenter/message/view/MessageWrapperActivity.kt | 2 ++ .../message/view/message/SortedMessageListAdapter.kt | 3 +++ module_message/src/main/res/layout/item_sorted_message.xml | 6 ++++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt index 63d13ea014..ba45f51add 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt @@ -149,6 +149,8 @@ class MessageWrapperActivity : BaseActivity_TabLayout() { tabTitle?.typeface = if (isChecked) Typeface.DEFAULT_BOLD else Typeface.DEFAULT tabTitle?.setTextColor(if (isChecked) R.color.text_title.toColor(this) else R.color.text_subtitle.toColor(this)) + hintTv?.background = R.drawable.message_unread_hint.toDrawable(this) + ovalHint?.background = R.drawable.oval_message_hint_bg.toDrawable(this) if (tabTitle?.text == TAB_CONCERN) { ovalHint?.isVisible = mConcernUnread diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt index 0de7c8c066..13e87aca3e 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt @@ -67,6 +67,9 @@ class SortedMessageListAdapter( divider.setBackgroundColor(R.color.divider.toColor(mContext)) titleTv.setTextColor(R.color.text_title.toColor(mContext)) contentTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) + timeTv.setTextColor(R.color.text_neutral.toColor(mContext)) + hintTv.background = R.drawable.message_unread_hint.toDrawable(mContext) + ovalHint.background = R.drawable.oval_message_hint_bg.toDrawable(mContext) titleTv.text = entity.title if (mMessageTypeMap.getOrDefault(entity.type, null) != null && entity.icon.isEmpty()) { diff --git a/module_message/src/main/res/layout/item_sorted_message.xml b/module_message/src/main/res/layout/item_sorted_message.xml index c036472ad1..a96a6af57f 100644 --- a/module_message/src/main/res/layout/item_sorted_message.xml +++ b/module_message/src/main/res/layout/item_sorted_message.xml @@ -7,13 +7,15 @@ + app:layout_constraintTop_toTopOf="parent" + app:roundedCornerRadius="12dp" /> Date: Fri, 11 Aug 2023 15:46:42 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B5=8B=E8=AF=95=EF=BC=9A=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=8F=90=E9=97=AE=E5=B8=96=E9=82=80=E8=AF=B7=E6=B6=88=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E5=8F=91=E7=8E=B0=E8=83=BD=E6=94=B6=E5=88=B0=E6=B6=88?= =?UTF-8?q?=E6=81=AF=EF=BC=8C=E4=BD=86=E4=BC=9A=E8=AF=9D=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=B2=A1=E6=9C=89=E6=B6=88=E6=81=AF=20https:?= =?UTF-8?q?//jira.shanqu.cc/browse/GHZS-3205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/gamecenter/message/view/message/MessageListViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListViewModel.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListViewModel.kt index cb67d96e56..090ce6919d 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListViewModel.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListViewModel.kt @@ -53,7 +53,7 @@ class MessageListViewModel(application: Application, private val mType: String, } private fun getNormalMessageList(page: Int, observableEmitter: ObservableEmitter>) { - mApi.getMessage(UserManager.getInstance().userId, null, Utils.getTime(getApplication()), page) + mApi.getMessage(UserManager.getInstance().userId, "all", Utils.getTime(getApplication()), page) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Response>() { From f6558e1e13857d9cc60a53425a9757ff46de6ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Fri, 11 Aug 2023 16:10:51 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E8=AE=A2=E9=98=85&=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E4=BD=93=E7=B3=BB=E4=BC=98=E5=8C=96-=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E4=B8=AD=E5=BF=83=E4=BC=98=E5=8C=96=E2=80=940811UI?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=20https://jira.shanqu.cc/browse/GHZS-3213?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/view/message/SortedMessageListAdapter.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt index 13e87aca3e..f1e4719d09 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt @@ -2,6 +2,7 @@ package com.gh.gamecenter.message.view.message import android.content.Context import android.graphics.Typeface +import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.constraintlayout.widget.ConstraintSet @@ -79,6 +80,8 @@ class SortedMessageListAdapter( } if (entity.type == TYPE_GAME && entity.game != null) { GameItemViewHolder.initGameSubtitleAndAdLabel(entity.game!!.toGameEntity(), gameSubtitleTv) + } else { + gameSubtitleTv.visibility = View.GONE } val commentUtils = ARouter.getInstance().build(RouteConsts.provider.commentUtils)