diff --git a/app/src/main/java/com/yizhuan/erban/ui/im/avtivity/NimP2PMessageActivity.java b/app/src/main/java/com/yizhuan/erban/ui/im/avtivity/NimP2PMessageActivity.java index 0e01736e7..4842f7499 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/im/avtivity/NimP2PMessageActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/im/avtivity/NimP2PMessageActivity.java @@ -13,6 +13,7 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -77,33 +78,30 @@ public class NimP2PMessageActivity extends NewBaseMessageActivity { public static final String IS_BY_MATCH = "isByMatch"; private static final String TAG = "NimP2PMessageActivity"; - OnlineStateChangeObserver onlineStateChangeObserver = new OnlineStateChangeObserver() { - @Override - public void onlineStateChange(Set accounts) { - // 更新 toolbar - if (accounts.contains(sessionId)) { - // 按照交互来展示 - displayOnlineState(); - } + private final OnlineStateChangeObserver onlineStateChangeObserver = accounts -> { + // 更新 toolbar + if (accounts.contains(sessionId)) { + // 按照交互来展示 + displayOnlineState(); } }; private boolean isResume = false; /** * 命令消息接收观察者 */ - Observer commandObserver = new Observer() { - @Override - public void onEvent(CustomNotification message) { - if (!sessionId.equals(message.getSessionId()) || message.getSessionType() != SessionTypeEnum.P2P) { - return; - } - showCommandMessage(message); + private final Observer commandObserver = message -> { + if (!sessionId.equals(message.getSessionId()) || message.getSessionType() != SessionTypeEnum.P2P) { + return; } + showCommandMessage(message); }; private TextView ivAddBlackList; + private TextView tvTips; private View tipsLayout; private ImageView closeIcon; - ContactChangedObserver friendDataChangedObserver = new ContactChangedObserver() { + @Nullable + private UserInfo buddyUserInfo; + private final ContactChangedObserver friendDataChangedObserver = new ContactChangedObserver() { @Override public void onAddedOrUpdatedFriends(List accounts) { displayAntiFraudTips(); @@ -156,7 +154,6 @@ public class NimP2PMessageActivity extends NewBaseMessageActivity { intent.putExtra(Extras.EXTRA_CUSTOMIZATION, NimUIKitImpl.commonP2PSessionCustomization); intent.setClass(context, NimP2PMessageActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); - context.startActivity(intent); } @@ -164,6 +161,13 @@ public class NimP2PMessageActivity extends NewBaseMessageActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + tipsLayout = findViewById(R.id.rl_tips); + closeIcon = findViewById(R.id.iv_close_tips); + tvTips = findViewById(R.id.tv_tips); + closeIcon.setOnClickListener(view -> { + IMFriendModel.get().addCloseTipsAccount(sessionId); + tipsLayout.setVisibility(View.GONE); + }); // 单聊特例话数据,包括个人信息,黑名单 addBlackList(); requestBuddyInfo(); @@ -182,6 +186,7 @@ public class NimP2PMessageActivity extends NewBaseMessageActivity { //如果sessionId与之前的sessionId不是同一个,刷新数据 if (!TextUtils.isEmpty(this.sessionId) && !this.sessionId.equals(sessionId)) { this.sessionId = sessionId; + buddyUserInfo = null; requestBuddyInfo(); displayOnlineState(); displayAntiFraudTips(); @@ -190,14 +195,12 @@ public class NimP2PMessageActivity extends NewBaseMessageActivity { } private void displayAntiFraudTips() { - tipsLayout = findViewById(R.id.rl_tips); - closeIcon = findViewById(R.id.iv_close_tips); - if (shouldDisplayAntiFraudTips()) { + if (buddyUserInfo != null && buddyUserInfo.isBanAccount()) { tipsLayout.setVisibility(View.VISIBLE); - closeIcon.setOnClickListener(view -> { - IMFriendModel.get().addCloseTipsAccount(sessionId); - tipsLayout.setVisibility(View.GONE); - }); + tvTips.setText("温馨提醒:当前对方账号存在异常,请谨慎来往!"); + } else if (shouldDisplayAntiFraudTips()) { + tipsLayout.setVisibility(View.VISIBLE); + tvTips.setText("温馨提示:对方和您非好友关系,请注意隐私安全!"); } else { tipsLayout.setVisibility(View.GONE); } @@ -280,6 +283,8 @@ public class NimP2PMessageActivity extends NewBaseMessageActivity { if (AuthModel.get().getCurrentUid() != userInfo.getUid()) { PraiseModel.get().isPraised(AuthModel.get().getCurrentUid(), userInfo.getUid()).subscribe(); } + buddyUserInfo = userInfo; + displayAntiFraudTips(); } }); diff --git a/app/src/main/java/com/yizhuan/erban/ui/im/chat/MsgViewHolderChatHint.java b/app/src/main/java/com/yizhuan/erban/ui/im/chat/MsgViewHolderChatHint.java index afb494be7..da698d81b 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/im/chat/MsgViewHolderChatHint.java +++ b/app/src/main/java/com/yizhuan/erban/ui/im/chat/MsgViewHolderChatHint.java @@ -1,10 +1,21 @@ package com.yizhuan.erban.ui.im.chat; +import android.graphics.Color; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.view.View; import android.widget.TextView; +import androidx.annotation.NonNull; + import com.netease.nim.uikit.business.session.viewholder.MsgViewHolderBase; import com.netease.nim.uikit.common.ui.recyclerview.adapter.BaseMultiItemFetchLoadAdapter; import com.yizhuan.erban.R; +import com.yizhuan.erban.common.widget.OriginalDrawStatusClickSpan; +import com.yizhuan.erban.ui.webview.SimpleWebViewActivity; +import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_core.im.custom.bean.ChatHintAttachment; public class MsgViewHolderChatHint extends MsgViewHolderBase { @@ -44,7 +55,30 @@ public class MsgViewHolderChatHint extends MsgViewHolderBase { protected void bindContentView() { ChatHintAttachment attachment = (ChatHintAttachment) message.getAttachment(); if (attachment != null) { - tvContent.setText(attachment.getContent()); + String content = attachment.getContent(); + String restoreTitle = "《整治网络直播乱象》"; + if (TextUtils.isEmpty(content) || !content.contains(restoreTitle)) { + tvContent.setText(content); + } else { + SpannableString ss = new SpannableString(content); + int restoreTitleIndex = content.indexOf(restoreTitle); + ss.setSpan( + new ForegroundColorSpan(Color.parseColor("#FB486A")), + restoreTitleIndex, + restoreTitleIndex + restoreTitle.length(), + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + ss.setSpan( + new OriginalDrawStatusClickSpan() { + @Override + public void onClick(@NonNull View widget) { + SimpleWebViewActivity.start(context, UriProvider.getLiveAgreement()); + } + }, + restoreTitleIndex, + restoreTitleIndex + restoreTitle.length(), + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + tvContent.setText(ss); + } } } diff --git a/app/src/main/res/layout/activity_p2p_message.xml b/app/src/main/res/layout/activity_p2p_message.xml index 9caf66385..360b62341 100644 --- a/app/src/main/res/layout/activity_p2p_message.xml +++ b/app/src/main/res/layout/activity_p2p_message.xml @@ -105,6 +105,7 @@ android:background="@color/color_FEE4E4" /> + \ No newline at end of file diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java index 814789902..ad23255a0 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java @@ -478,4 +478,14 @@ public class UriProvider { public static String getLuckyGiftRule(int giftID) { return JAVA_WEB_URL.concat("/yinyou/modules/rule/luckyGiftRule.html?giftID=" + giftID); } + + /** + * 直播乱象 + * + * @return + */ + public static String getLiveAgreement() { + return JAVA_WEB_URL.concat("/yinyou/activity/activemodel/index.html?code=ZBGG"); + } + } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java index c6c26a885..0f45ab7d4 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java @@ -280,6 +280,10 @@ public class UserInfo implements Serializable { @Setter private long limitChargeEndTime; + @Getter + @Setter + private boolean banAccount; + public UserInfo() { } diff --git a/nim_uikit/res/drawable-xhdpi/nim_ic_failed.png b/nim_uikit/res/drawable-xhdpi/nim_ic_failed.png new file mode 100644 index 000000000..cf82b0e7e Binary files /dev/null and b/nim_uikit/res/drawable-xhdpi/nim_ic_failed.png differ diff --git a/nim_uikit/res/drawable-xhdpi/nim_ic_failed.webp b/nim_uikit/res/drawable-xhdpi/nim_ic_failed.webp deleted file mode 100644 index b742e361e..000000000 Binary files a/nim_uikit/res/drawable-xhdpi/nim_ic_failed.webp and /dev/null differ diff --git a/nim_uikit/res/layout/nim_message_item.xml b/nim_uikit/res/layout/nim_message_item.xml index 3d1f67cc2..05bad8156 100644 --- a/nim_uikit/res/layout/nim_message_item.xml +++ b/nim_uikit/res/layout/nim_message_item.xml @@ -104,8 +104,8 @@ { - public MsgViewHolderBase(BaseMultiItemFetchLoadAdapter adapter) { - super(adapter); - this.adapter = adapter; - } - + public ImageView nameIconView; // basic protected View view; protected Context context; @@ -56,15 +53,16 @@ public abstract class MsgViewHolderBase extends RecyclerViewHolder