From a91d7d2471ca6a98a65402bc6801d479b0d824f3 Mon Sep 17 00:00:00 2001 From: huangjian Date: Fri, 3 Feb 2023 17:33:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=89=93=E6=8B=9B=E5=91=BC:U?= =?UTF-8?q?I=E7=BB=86=E8=8A=82=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mango/moshen/ui/im/ImInitHelper.java | 1 + .../ui/im/adpter/SayHelloListAdapter.kt | 2 +- .../ui/im/avtivity/SayHelloListActivity.kt | 9 ++- .../moshen/ui/im/recent/RecentListFragment.kt | 64 +++++++++++++------ .../recent/holder/CommonRecentViewHolder.java | 29 ++++----- .../res/drawable/shape_97ef30_8dp_round.xml | 8 +++ .../main/res/layout/fragment_recent_list.xml | 18 ++++-- .../main/res/layout/item_say_hello_list.xml | 11 ++++ .../java/com/mango/core/user/IUserModel.java | 2 + .../java/com/mango/core/user/UserModel.java | 17 +++++ .../com/mango/core/user/bean/HelloUserInfo.kt | 1 + .../com/mango/core/user/bean/SayHelloCount.kt | 6 ++ .../{ShowMeEvent.kt => ClickSayHelloEvent.kt} | 2 +- .../nim_recent_contact_sticky_selecter.xml | 4 +- nim_uikit/res/values/colors.xml | 1 + 15 files changed, 129 insertions(+), 46 deletions(-) create mode 100644 app/src/main/res/drawable/shape_97ef30_8dp_round.xml create mode 100644 core/src/main/java/com/mango/core/user/bean/SayHelloCount.kt rename core/src/main/java/com/mango/core/user/event/{ShowMeEvent.kt => ClickSayHelloEvent.kt} (58%) diff --git a/app/src/main/java/com/mango/moshen/ui/im/ImInitHelper.java b/app/src/main/java/com/mango/moshen/ui/im/ImInitHelper.java index a48bc85f3..e627158d9 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/ImInitHelper.java +++ b/app/src/main/java/com/mango/moshen/ui/im/ImInitHelper.java @@ -6,6 +6,7 @@ import com.mango.core.im.custom.bean.UserCardAttachment; import com.mango.moshen.ui.im.chat.MsgViewHolderUserCard; import com.netease.nim.uikit.api.NimUIKit; import com.netease.nim.uikit.api.model.contact.ContactEventListener; +import com.netease.nim.uikit.api.model.main.OnlineStateContentProvider; import com.netease.nim.uikit.api.model.session.SessionCustomization; import com.netease.nim.uikit.api.model.session.SessionEventListener; import com.netease.nim.uikit.api.wrapper.NimMessageRevokeObserver; diff --git a/app/src/main/java/com/mango/moshen/ui/im/adpter/SayHelloListAdapter.kt b/app/src/main/java/com/mango/moshen/ui/im/adpter/SayHelloListAdapter.kt index 33ad52bb1..61359fbd2 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/adpter/SayHelloListAdapter.kt +++ b/app/src/main/java/com/mango/moshen/ui/im/adpter/SayHelloListAdapter.kt @@ -24,7 +24,7 @@ class SayHelloListAdapter : helper.setText(R.id.tv_nickname, item.name) helper.setText(R.id.tv_send_text,item.content) helper.setText(R.id.tv_online_desc,item.onlineDesc) - + helper.setVisible(R.id.view_online,item.online) val ivUserCharm = helper.getView(R.id.iv_user_charm) val ivUserLevel = helper.getView(R.id.iv_user_level) ivUserCharm.visibility = View.GONE diff --git a/app/src/main/java/com/mango/moshen/ui/im/avtivity/SayHelloListActivity.kt b/app/src/main/java/com/mango/moshen/ui/im/avtivity/SayHelloListActivity.kt index 61d825fb9..e04258e71 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/avtivity/SayHelloListActivity.kt +++ b/app/src/main/java/com/mango/moshen/ui/im/avtivity/SayHelloListActivity.kt @@ -7,6 +7,7 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager import com.mango.core.user.UserModel import com.mango.core.user.bean.HelloUserInfo +import com.mango.core.user.event.ClickSayHelloEvent import com.mango.core.utils.toast import com.mango.moshen.R import com.mango.moshen.base.BaseViewBindingActivity @@ -20,6 +21,7 @@ import com.mango.moshen.ui.utils.RVDelegate import com.mango.xchat_android_library.annatation.ActLayoutRes import com.mango.xchat_android_library.widget.IOSSwitchView.OnSwitchStateChangeListener import com.netease.nim.uikit.StatusBarUtil +import org.greenrobot.eventbus.EventBus import java.util.* @ActLayoutRes(R.layout.activity_say_hello_list) @@ -57,7 +59,12 @@ class SayHelloListActivity : BaseViewBindingActivity() ) } } - val isClicked = SharedPreferenceUtils.get(share_pref_is_newbie_clicked, false) as Boolean - binding.tvRedPointFindNew.visibility = if (isClicked) View.GONE else View.VISIBLE - // 等级限制 - setFindNewbieView() - - HallDataManager.get().registerHallExist(this) { - if (it == true && HallDataManager.get().roleType != RoleType.OWNER) { - binding.llSayHello.isVisible = true - UserModel.get().sayHelloInfo - .compose(bindToLifecycle()) - .subscribe({ helloInfo -> - binding.tvSayHelloNum.text = "有${helloInfo.helloCount}人想和你认识" - }, { throwable -> - throwable.printStackTrace() - }) - } else { - binding.llSayHello.isVisible = false - } - } binding.llSayHello.setOnClickListener { SayHelloListActivity.start(mContext) } + val isClicked = SharedPreferenceUtils.get(share_pref_is_newbie_clicked, false) as Boolean + binding.tvRedPointFindNew.visibility = if (isClicked) View.GONE else View.VISIBLE + // 等级限制 + setFindNewbieView() + loadSayHello() + } + @SuppressLint("CheckResult") + private fun loadSayHello() { + UserModel.get().sayHelloCount + .compose(bindToLifecycle()) + .subscribe({ + binding.llSayHello.isVisible = it.visible + binding.viewHelloLine.isVisible = it.visible + binding.tvSayHelloNum.isVisible = it.helloCount != 0 + binding.tvSayHelloNum.text = + SpannableBuilder() + .append( + "有", + ForegroundColorSpan("#8A8CAB".toColorInt()) + ) + .append( + "${it.helloCount}", + ForegroundColorSpan("#FFA027".toColorInt()) + ) + .append( + "人想和你认识", + ForegroundColorSpan("#8A8CAB".toColorInt()) + ) + .build() + }, { + binding.llSayHello.isVisible = false + binding.viewHelloLine.isVisible = false + it.printStackTrace() + }) } @SuppressLint("CheckResult") @@ -241,6 +261,12 @@ class RecentListFragment : BaseViewBindingFragment() //登录成功刷新消息页萌新 setFindNewbieView() loadAttentionList() + loadSayHello() + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onClickSayHelloEvent(event: ClickSayHelloEvent?) { + loadSayHello() } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/main/java/com/mango/moshen/ui/im/recent/holder/CommonRecentViewHolder.java b/app/src/main/java/com/mango/moshen/ui/im/recent/holder/CommonRecentViewHolder.java index 0050bef87..a8f6db374 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/recent/holder/CommonRecentViewHolder.java +++ b/app/src/main/java/com/mango/moshen/ui/im/recent/holder/CommonRecentViewHolder.java @@ -114,22 +114,15 @@ public class CommonRecentViewHolder extends RecentViewHolder { if (o instanceof String && o.equals("0")) { imgUnreadExplosion.setImageResource(R.drawable.explosion); imgUnreadExplosion.setVisibility(VISIBLE); - new Handler().post(new Runnable() { - @Override - public void run() { - ((AnimationDrawable) imgUnreadExplosion.getDrawable()).start(); - // 解决部分手机动画无法播放的问题(例如华为荣耀) - getAdapter().notifyItemChanged(getAdapter().getViewHolderPosition(position)); - } + new Handler().post(() -> { + ((AnimationDrawable) imgUnreadExplosion.getDrawable()).start(); + // 解决部分手机动画无法播放的问题(例如华为荣耀) + getAdapter().notifyItemChanged(getAdapter().getViewHolderPosition(position)); }); } } else { imgUnreadExplosion.setVisibility(GONE); } - -// if (getAdapter().isLastDataItem(position)) { -// topLine.setVisibility(GONE); -// } } @SuppressLint("CheckResult") @@ -137,16 +130,19 @@ public class CommonRecentViewHolder extends RecentViewHolder { mIvNobleHeadWear.setVisibility(INVISIBLE); mIvNobleLevel.setVisibility(GONE); mIvNobleBadge.setVisibility(GONE); + ivUserGender.setVisibility(GONE); + ivVipIcon.setVisibility(GONE); if (recent == null) return; String contactId = recent.getContactId(); //去除小秘书,系统消息 - if (SystemUidUtil.isSystemUid(contactId) ) { + if (SystemUidUtil.isSystemUid(contactId)) { return; } UserModel.get() - .getUserInfo(Long.valueOf(contactId)) + .getUserInfo(Long.parseLong(contactId)) .subscribe(userInfo -> { + if (userInfo.getUid() != Long.parseLong(contactId)) return; UserLevelVo userLevelVo = userInfo.getUserLevelVo(); if (userLevelVo != null && !TextUtils.isEmpty(userLevelVo.getExperUrl())) { mIvNobleLevel.setVisibility(VISIBLE); @@ -156,14 +152,15 @@ public class CommonRecentViewHolder extends RecentViewHolder { ivCharmLevel.setVisibility(VISIBLE); ImageLoadUtils.loadImage(ivCharmLevel.getContext(), userLevelVo.getCharmUrl(), ivCharmLevel); } + ivUserGender.setVisibility(VISIBLE); + ivVipIcon.setVisibility(VISIBLE); if (userInfo.getGender() == 1) { ivUserGender.setImageResource(R.drawable.ic_gender_male); } else { ivUserGender.setImageResource(R.drawable.ic_gender_female); } - - VipHelper.loadVipIcon(ivVipIcon,userInfo.getUserVipInfoVO()); - VipHelper.loadVipNickColor(tvNickname, userInfo.getUserVipInfoVO(),"#FF333333"); + VipHelper.loadVipIcon(ivVipIcon, userInfo.getUserVipInfoVO()); + VipHelper.loadVipNickColor(tvNickname, userInfo.getUserVipInfoVO(), "#FF333333"); }); } diff --git a/app/src/main/res/drawable/shape_97ef30_8dp_round.xml b/app/src/main/res/drawable/shape_97ef30_8dp_round.xml new file mode 100644 index 000000000..8e80e839c --- /dev/null +++ b/app/src/main/res/drawable/shape_97ef30_8dp_round.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_recent_list.xml b/app/src/main/res/layout/fragment_recent_list.xml index b0cf220ff..169133261 100644 --- a/app/src/main/res/layout/fragment_recent_list.xml +++ b/app/src/main/res/layout/fragment_recent_list.xml @@ -214,7 +214,9 @@ android:layout_height="wrap_content" android:layout_marginStart="15dp" android:gravity="center" - android:orientation="vertical"> + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + + - - diff --git a/app/src/main/res/layout/item_say_hello_list.xml b/app/src/main/res/layout/item_say_hello_list.xml index 0ee0e0484..f5e697c20 100644 --- a/app/src/main/res/layout/item_say_hello_list.xml +++ b/app/src/main/res/layout/item_say_hello_list.xml @@ -81,6 +81,17 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/iv_avatar" /> + + clickSayHelloChat(long toUserUid); + Single getSayHelloCount(); } diff --git a/core/src/main/java/com/mango/core/user/UserModel.java b/core/src/main/java/com/mango/core/user/UserModel.java index b0de2d0bf..e1b04056a 100644 --- a/core/src/main/java/com/mango/core/user/UserModel.java +++ b/core/src/main/java/com/mango/core/user/UserModel.java @@ -25,6 +25,7 @@ import com.mango.core.user.bean.GiftWallInfo; import com.mango.core.user.bean.HelloUserInfo; import com.mango.core.user.bean.NewUserInfo; import com.mango.core.user.bean.ProtocolInfo; +import com.mango.core.user.bean.SayHelloCount; import com.mango.core.user.bean.SayHelloInfo; import com.mango.core.user.bean.UserDetailInfo; import com.mango.core.user.bean.UserGameInfo; @@ -838,6 +839,14 @@ public final class UserModel extends BaseModel implements IUserModel { .compose(RxHelper.handleSchedulers()); } + @Override + public Single getSayHelloCount() { + return api.getSayHelloCount() + .compose(RxHelper.handleBeanData()) + .compose(RxHelper.handleSchedulers()); + } + + private interface Api { /** * 获取某个用户的用户信息 @@ -1098,6 +1107,14 @@ public final class UserModel extends BaseModel implements IUserModel { @POST("shunt/click_chat") Single> clickSayHelloChat(@Field("toUserId") long toUserUid); + /** + * 打招呼人数 + * + * @return - + */ + @POST("shunt/hello_count") + Single> getSayHelloCount(); + } private static final class Helper { diff --git a/core/src/main/java/com/mango/core/user/bean/HelloUserInfo.kt b/core/src/main/java/com/mango/core/user/bean/HelloUserInfo.kt index 6a8b3ff99..19899346b 100644 --- a/core/src/main/java/com/mango/core/user/bean/HelloUserInfo.kt +++ b/core/src/main/java/com/mango/core/user/bean/HelloUserInfo.kt @@ -8,6 +8,7 @@ data class HelloUserInfo( val gender: Int = 0, val name: String = "", val onlineDesc: String = "", + val online: Boolean = false, val uid: Long = 0, val userLevelVo: UserLevelVo? = null ) \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/user/bean/SayHelloCount.kt b/core/src/main/java/com/mango/core/user/bean/SayHelloCount.kt new file mode 100644 index 000000000..4cae6a6c4 --- /dev/null +++ b/core/src/main/java/com/mango/core/user/bean/SayHelloCount.kt @@ -0,0 +1,6 @@ +package com.mango.core.user.bean + +data class SayHelloCount( + val helloCount: Int = 0, + val visible: Boolean = false +) \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/user/event/ShowMeEvent.kt b/core/src/main/java/com/mango/core/user/event/ClickSayHelloEvent.kt similarity index 58% rename from core/src/main/java/com/mango/core/user/event/ShowMeEvent.kt rename to core/src/main/java/com/mango/core/user/event/ClickSayHelloEvent.kt index dbb6ea5a6..34b982a62 100644 --- a/core/src/main/java/com/mango/core/user/event/ShowMeEvent.kt +++ b/core/src/main/java/com/mango/core/user/event/ClickSayHelloEvent.kt @@ -1,3 +1,3 @@ package com.mango.core.user.event -class ShowMeEvent +class ClickSayHelloEvent diff --git a/nim_uikit/res/drawable/nim_recent_contact_sticky_selecter.xml b/nim_uikit/res/drawable/nim_recent_contact_sticky_selecter.xml index e83ab8d88..3fa98252d 100644 --- a/nim_uikit/res/drawable/nim_recent_contact_sticky_selecter.xml +++ b/nim_uikit/res/drawable/nim_recent_contact_sticky_selecter.xml @@ -2,7 +2,7 @@ - - + + \ No newline at end of file diff --git a/nim_uikit/res/values/colors.xml b/nim_uikit/res/values/colors.xml index e5901e899..71460ba80 100644 --- a/nim_uikit/res/values/colors.xml +++ b/nim_uikit/res/values/colors.xml @@ -77,5 +77,6 @@ #ff333333 #B3333333 #FFF3F5FA + #E5EFFC \ No newline at end of file