1717import com .netease .im .session .extension .DefaultCustomAttachment ;
1818import com .netease .im .session .extension .RedPacketAttachement ;
1919import com .netease .im .session .extension .RedPacketOpenAttachement ;
20+ import com .netease .im .uikit .cache .NimUserInfoCache ;
2021import com .netease .im .uikit .cache .TeamDataCache ;
2122import com .netease .im .uikit .common .util .file .FileUtil ;
2223import com .netease .im .uikit .common .util .log .LogUtil ;
2930import com .netease .nimlib .sdk .AbortableFuture ;
3031import com .netease .nimlib .sdk .NIMClient ;
3132import com .netease .nimlib .sdk .Observer ;
33+ import com .netease .nimlib .sdk .RequestCallback ;
3234import com .netease .nimlib .sdk .RequestCallbackWrapper ;
3335import com .netease .nimlib .sdk .ResponseCode ;
3436import 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