From c082079f4320935f7cc2d68e7a217b717b7b4445 Mon Sep 17 00:00:00 2001 From: huangjian Date: Wed, 10 Aug 2022 11:23:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=81=E8=81=8A=E8=BF=9D=E8=A7=84=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/im/avtivity/NimP2PMessageActivity.java | 53 ++++++++++-------- .../ui/im/chat/MsgViewHolderChatHint.java | 36 +++++++++++- .../main/res/layout/activity_p2p_message.xml | 1 + .../layout_msg_view_holder_chat_hint.xml | 1 + .../xchat_android_core/UriProvider.java | 10 ++++ .../user/bean/UserInfo.java | 4 ++ .../res/drawable-xhdpi/nim_ic_failed.png | Bin 0 -> 1253 bytes .../res/drawable-xhdpi/nim_ic_failed.webp | Bin 828 -> 0 bytes nim_uikit/res/layout/nim_message_item.xml | 4 +- .../session/viewholder/MsgViewHolderBase.java | 23 ++++---- 10 files changed, 94 insertions(+), 38 deletions(-) create mode 100644 nim_uikit/res/drawable-xhdpi/nim_ic_failed.png delete mode 100644 nim_uikit/res/drawable-xhdpi/nim_ic_failed.webp 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 0000000000000000000000000000000000000000..cf82b0e7eb6c595b7b62f2b072e066455b4e7f2e GIT binary patch literal 1253 zcmVPx(pGibPRA@upT1#wOMHD@EX5v6Y5|WniSs*ABq#{_bBOp*!K(;B_6eK>Pv@9Ul z>Vl70pf-yXu|RwlRZU<)OA#Ld-Gt%<(W(eRmMlQ61cicF01a(IQc{|DW-gld{7jsW zWBWZDy^i#}u-@Ez&z<|9M+muoyZ7-`m(Plew2;>bU?YQXVxk*}c@2mQPMqmHF9$9Jzz;PG2CSU@B z@=~>BY51ixwUDYB!12`f*0p4|3Wy;mt#;aua4GL(+^O0A6D;?w8`(Wu4f(17aI*g@ z1M!v=a)Ys^W^Gp^hDcIb+(6P$^xKMdDn-L<~5XxaM z>4Mt-LYc67%MRer$uIz1f;{pw$<+K1TL!?SGfxP}A#F|FjJ%CK-B54uDhKfBPGEc@ z6kR1GEKI-5=iUeil>oR53w?Il*q{Ii!K*<4{5&B5wW=e?*d+iuo!u{)9*HEwHVA-I zsms`g_#Ktsvn5D=aD|xxea*n?5PJV_YXbokg+498x4Ht*JAt`m<|zVRi7a6?7(g-0 zJd+sBy+*E{@6qaG0;NJlp7}@DU;wVvVDQMe()SVH-QQz`_yIs?WR*^X0Tdl~N?Lmz z6_VLolxi8%y8a}y$Zr}9z;kAmfYyaxGRf=?A>}S@igimAUfc`-Qo$OtlXNokp%mhN zZ6j<@ngKuv7;8VGLMnSy0_#nbwSE%-NFo^Em^*=!1nP+(|28cTI7V(zz~FJxsq8ss zZjHk9OEj8r0$xHRnmrEy#NC9>2Pckq7>#`*i+w54kYcX818VOekZAEE>s$eP+W;^z z9Z9q7>@ar7f^DFZ_Z>Z>}Ya+Pe2fby2oy&P#%?+CiF;$>@mIsQ21j~63YOE&f1DMUF| z5d!o;60+|O-v@@j0Dtfq5VB;iI9Bl(MK##EbT!nz!7_d8tpmWx)1l6w;$X{Bj%2jx z?0)@Ps8^pY2k`XEz_Al`4R{?PFY>H3TJ#+{g5mDP?U1?WL0ugl2%emV$-D^sRnzrX znF6XB?v{c_1mktO_DayUJ|Do|VepT?)}{U89YOWu^#DZZ3l10eXN!}L)`XuIYFu?+ za4Y~3&nu?+<`mmYz7mKyU$X`vVtvs)-}hqsslmbk65EeG76SRdKezc8-R%X2r&748 P00000NkvXXu0mjfe40fb literal 0 HcmV?d00001 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 b742e361e31f73ba6d637782509bb16a3c066876..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmV-C1H=4MNk&FA0{{S5MM6+kP&il$0000G0000b001KZ06|PpNErbD00GD1xRE49 z+Ng$wgV*_Q?HLgfc|a-z@;0i!6<496)9|Xo__aj#dfZlZYGdQ1ApQVBl4R3XKYssb z=?ry7bGvyZNtZqr|@Yf>bwR9t`lb`_Kf<)G= zT7J$Xw*Ri~`%a<<&uY9U65lo`z0HX;tyCt~qg~E@kNf}@I!FN6>mUQ*s)HPWjSi9k#ya={(A0qkK#Ff|0^sIrLONuN$oz55%rcfK zQw;J!p1x556^^YF%GRE^YY1vz2BL0psDEmS*?vH)F>?^mb3ve^anUe~86no5AKeu; z&9E7awm>|SO@4Yz&{jW>Ht~h{FH?{``83XB%&M?Q@P??WknVhubCJrhfy&7kX4tGfhd$;2epmU-S*DXy#Yd~&Kk z(IP`fI(fskyktgOdX%sJe)1oj7-ZU-K9SI|Y7e*GSuQQo82Mn_0evWm#si;lMH@=* zf$`3>>oh<9SF}%|*w&^qvYg`&kW;kEs=dAWamrZ9J}@H06(f5eB@H>ZN33uUa~xgJ z<$h`Xeg#xqCC*@7yp;S%(~_boux~4xL3=v(($?B{^(6oNgj5vWPltu}Fxomjb^8Cr zKC(3<<(R;o46HxkN^`xd_DPO9*}G&=lsDvSG2->!q^N^O5Lq0gx6S(Lhhv`U^644H zu(NxW@#Lppi}Cb{#`>Vl92L(9Kb2s{4CLQUdHpi^^`**xt%mUxOdnS9{^9&(U210` G0000Nrk(2m 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