From 7f479dd9e56ba308372eaabf0e11e0e1b327807b Mon Sep 17 00:00:00 2001 From: imhao183 Date: Thu, 3 Sep 2020 15:36:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93A=E3=80=81B=E9=83=BD=E5=90=91=E5=AF=B9?= =?UTF-8?q?=E6=96=B9=E5=8F=91=E5=87=BA=E5=A5=BD=E5=8F=8B=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=90=8E=EF=BC=8CA=E6=8E=A5=E5=8F=97=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E9=82=80=E8=AF=B7=EF=BC=8CA=E5=8F=91=E9=80=81=E7=BB=99B?= =?UTF-8?q?=E7=9A=84=E5=A5=BD=E5=8F=8B=E9=82=80=E8=AF=B7=E4=B9=9F=E8=A6=81?= =?UTF-8?q?=E5=8F=98=E6=88=90=E6=8E=A5=E5=8F=97=E7=8A=B6=E6=80=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit a8d076a9ac7faa1a556caeaad239bb393824bd8b) --- .../persistence/MemoryMessagesStore.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index c6eeba83..59745ccf 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -2301,6 +2301,27 @@ public class MemoryMessagesStore implements IMessagesStore { } else { existRequest = existRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(System.currentTimeMillis()).build(); databaseStore.persistOrUpdateFriendRequest(existRequest); + + if (request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted) { + Collection targetRequests = requestMap.get(request.getTargetUid()); + if (targetRequests == null || targetRequests.size() == 0) { + targetRequests = loadFriendRequest(requestMap, request.getTargetUid()); + } + + WFCMessage.FriendRequest existTargetRequest = null; + for (WFCMessage.FriendRequest tmpRequest : targetRequests) { + if (tmpRequest.getFromUid().equals(userId)) { + existTargetRequest = tmpRequest; + break; + } + } + + if (existTargetRequest != null && existTargetRequest.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Sent) { + existTargetRequest = existTargetRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(existRequest.getUpdateDt()).build(); + databaseStore.persistOrUpdateFriendRequest(existTargetRequest); + } + } + if(request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted){ MultiMap friendsMap = hzInstance.getMultiMap(USER_FRIENDS); FriendData friendData1 = new FriendData(userId, request.getTargetUid(), "", request.getExtra(), 0, 0, System.currentTimeMillis());