Skip to content

Commit 65e7c48

Browse files
committed
add 黑名单提示,不是好友提示
1 parent 0dde09a commit 65e7c48

File tree

2 files changed

+45
-9
lines changed

2 files changed

+45
-9
lines changed

android/src/main/java/com/netease/im/ReactCache.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,7 @@ public static Object createUserInfo(NimUserInfo userInfo) {
456456
if (userInfo != null) {
457457

458458
writableMap.putString("isMyFriend", boolean2String(FriendDataCache.getInstance().isMyFriend(userInfo.getAccount())));
459+
// writableMap.putString("isMyFriend", boolean2String(NIMClient.getService(FriendService.class).isMyFriend(userInfo.getAccount())));
459460
writableMap.putString("isMe", boolean2String(userInfo.getAccount() != null && userInfo.getAccount().equals(LoginService.getInstance().getAccount())));
460461
writableMap.putString("isInBlackList", boolean2String(NIMClient.getService(FriendService.class).isInBlackList(userInfo.getAccount())));
461462
writableMap.putString("mute", boolean2String(NIMClient.getService(FriendService.class).isNeedMessageNotify(userInfo.getAccount())));

android/src/main/java/com/netease/im/session/SessionService.java

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.netease.im.session.extension.DefaultCustomAttachment;
1818
import com.netease.im.session.extension.RedPacketAttachement;
1919
import com.netease.im.session.extension.RedPacketOpenAttachement;
20+
import com.netease.im.uikit.cache.NimUserInfoCache;
2021
import com.netease.im.uikit.cache.TeamDataCache;
2122
import com.netease.im.uikit.common.util.file.FileUtil;
2223
import com.netease.im.uikit.common.util.log.LogUtil;
@@ -29,6 +30,7 @@
2930
import com.netease.nimlib.sdk.AbortableFuture;
3031
import com.netease.nimlib.sdk.NIMClient;
3132
import com.netease.nimlib.sdk.Observer;
33+
import com.netease.nimlib.sdk.RequestCallback;
3234
import com.netease.nimlib.sdk.RequestCallbackWrapper;
3335
import com.netease.nimlib.sdk.ResponseCode;
3436
import com.netease.nimlib.sdk.friend.FriendService;
@@ -87,8 +89,8 @@ public class SessionService {
8789
private Handler handler;
8890
private boolean mute = false;
8991

92+
private String sessionName = "";
9093
private boolean isFriend = true;
91-
private boolean isInBlackList = false;
9294

9395
private SessionService() {
9496
}
@@ -558,8 +560,8 @@ public void startSession(Handler handler, String sessionId, String type) {
558560
sessionTypeEnum = SessionUtil.getSessionType(type);
559561

560562
if (sessionTypeEnum == SessionTypeEnum.P2P) {
563+
sessionName = NimUserInfoCache.getInstance().getUserName(sessionId);
561564
isFriend = NIMClient.getService(FriendService.class).isMyFriend(sessionId);
562-
isInBlackList = NIMClient.getService(FriendService.class).isInBlackList(sessionId);
563565

564566
this.mute = !NIMClient.getService(FriendService.class).isNeedMessageNotify(sessionId);
565567
} else {
@@ -637,6 +639,10 @@ public void sendTextMessage(String content, List<String> selectedMembers, OnSend
637639
* @param content
638640
*/
639641
public void sendTipMessage(String content, OnSendMessageListener onSendMessageListener) {
642+
sendTipMessage(content, onSendMessageListener, false);
643+
}
644+
645+
public void sendTipMessage(String content, OnSendMessageListener onSendMessageListener, boolean local) {
640646
CustomMessageConfig config = new CustomMessageConfig();
641647
config.enablePush = false; // 不推送
642648
IMMessage message = MessageBuilder.createTipMessage(sessionId, sessionTypeEnum);
@@ -651,7 +657,12 @@ public void sendTipMessage(String content, OnSendMessageListener onSendMessageLi
651657

652658
message.setContent(content);
653659
message.setConfig(config);
654-
sendMessageSelf(message, onSendMessageListener, false);
660+
if (local) {
661+
message.setStatus(MsgStatusEnum.success);
662+
getMsgService().saveMessageToLocal(message, true);
663+
} else {
664+
sendMessageSelf(message, onSendMessageListener, false);
665+
}
655666
}
656667
}
657668

@@ -843,18 +854,42 @@ public void updateMessage(final IMMessage message, MsgStatusEnum statusEnum) {
843854
getMsgService().updateIMMessageStatus(message);
844855
}
845856

846-
public void sendMessageSelf(final IMMessage message, final OnSendMessageListener onSendMessageListener, boolean send) {
857+
public void sendMessageSelf(final IMMessage message, final OnSendMessageListener onSendMessageListener, boolean resend) {
847858

848859

849860
appendPushConfig(message);
850-
if(isInBlackList){
861+
if (sessionTypeEnum == SessionTypeEnum.P2P) {
862+
sessionName = NimUserInfoCache.getInstance().getUserName(sessionId);
851863

852-
}
853-
if(!isFriend){
854864

865+
isFriend = NIMClient.getService(FriendService.class).isMyFriend(sessionId);
866+
LogUtil.w(TAG, "isFriend:" + isFriend);
867+
if (!isFriend) {
868+
sendTipMessage(sessionName + "开启了朋友验证,你还不是他(她)朋友。请先发送朋友验证请求,对方验证后,才能聊天。发送朋友验证", null, true);
869+
message.setStatus(MsgStatusEnum.fail);
870+
getMsgService().saveMessageToLocal(message, true);
871+
return;
872+
}
855873
}
874+
getMsgService().sendMessage(message, resend).setCallback(new RequestCallback<Void>() {
875+
@Override
876+
public void onSuccess(Void aVoid) {
856877

857-
getMsgService().sendMessage(message, send);
878+
}
879+
880+
@Override
881+
public void onFailed(int code) {
882+
LogUtil.w(TAG, "code:" + code);
883+
if (code == ResponseCode.RES_IN_BLACK_LIST) {
884+
sendTipMessage("消息已发出,但被对方拒收了。", null, true);
885+
}
886+
}
887+
888+
@Override
889+
public void onException(Throwable throwable) {
890+
// LogUtil.w(TAG, "throwable:" + throwable.getLocalizedMessage());
891+
}
892+
});
858893
onMessageStatusChange(message, true);
859894

860895
}
@@ -868,7 +903,7 @@ private void appendPushConfig(IMMessage message) {
868903
Map<String, Object> payload = new HashMap<>();
869904
Map<String, Object> body = new HashMap<>();
870905

871-
body.put("sessionType", message.getSessionType().getValue());
906+
body.put("sessionType", String.valueOf(message.getSessionType().getValue()));
872907
if (message.getSessionType() == SessionTypeEnum.P2P) {
873908
body.put("sessionId", LoginService.getInstance().getAccount());
874909
} else if (message.getSessionType() == SessionTypeEnum.Team) {

0 commit comments

Comments
 (0)