diff --git a/broker/src/main/java/io/moquette/imhandler/HandleFriendRequestHandler.java b/broker/src/main/java/io/moquette/imhandler/HandleFriendRequestHandler.java index 1e1fea5d..67927b9c 100644 --- a/broker/src/main/java/io/moquette/imhandler/HandleFriendRequestHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/HandleFriendRequestHandler.java @@ -28,7 +28,7 @@ public class HandleFriendRequestHandler extends IMHandler 0 && System.currentTimeMillis() - existRequest.getUpdateDt() > mFriendRequestExpiration) { return ErrorCode.ERROR_CODE_FRIEND_REQUEST_EXPIRED; } else { - existRequest = existRequest.toBuilder().setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Accepted).setUpdateDt(System.currentTimeMillis()).build(); + existRequest = existRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(System.currentTimeMillis()).build(); databaseStore.persistOrUpdateFriendRequest(existRequest); - MultiMap friendsMap = hzInstance.getMultiMap(USER_FRIENDS); + if(request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted){ + MultiMap friendsMap = hzInstance.getMultiMap(USER_FRIENDS); + FriendData friendData1 = new FriendData(userId, request.getTargetUid(), "", request.getStatus(), 0, System.currentTimeMillis()); + databaseStore.persistOrUpdateFriendData(friendData1); - FriendData friendData1 = new FriendData(userId, request.getTargetUid(), "", 0, 0, System.currentTimeMillis()); - databaseStore.persistOrUpdateFriendData(friendData1); + FriendData friendData2 = new FriendData(request.getTargetUid(), userId, "", request.getStatus(), 0, friendData1.getTimestamp()); + databaseStore.persistOrUpdateFriendData(friendData2); - FriendData friendData2 = new FriendData(request.getTargetUid(), userId, "", 0, 0, friendData1.getTimestamp()); - databaseStore.persistOrUpdateFriendData(friendData2); + requestMap.remove(userId); + requestMap.remove(request.getTargetUid()); + friendsMap.remove(userId); + friendsMap.remove(request.getTargetUid()); - requestMap.remove(userId); - requestMap.remove(request.getTargetUid()); - friendsMap.remove(userId); - friendsMap.remove(request.getTargetUid()); + heads[0] = friendData2.getTimestamp(); + heads[1] = friendData1.getTimestamp(); - heads[0] = friendData2.getTimestamp(); - heads[1] = friendData1.getTimestamp(); - - msgBuilder.setConversation(WFCMessage.Conversation.newBuilder().setTarget(userId).setLine(0).setType(ProtoConstants.ConversationType.ConversationType_Private).build()); - msgBuilder.setContent(WFCMessage.MessageContent.newBuilder().setType(1).setSearchableContent(existRequest.getReason()).build()); + msgBuilder.setConversation(WFCMessage.Conversation.newBuilder().setTarget(userId).setLine(0).setType(ProtoConstants.ConversationType.ConversationType_Private).build()); + msgBuilder.setContent(WFCMessage.MessageContent.newBuilder().setType(1).setSearchableContent(existRequest.getReason()).build()); + } return ErrorCode.ERROR_CODE_SUCCESS; } } else {