From c63cc740280123b789985564713fade365996d61 Mon Sep 17 00:00:00 2001 From: imhao183 Date: Sat, 26 Dec 2020 16:18:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BC=9A=E8=AF=9D=E9=9D=99?= =?UTF-8?q?=E9=9F=B3=E8=AE=BE=E7=BD=AE=E7=BC=93=E5=AD=98=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/MemoryMessagesStore.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index ac7f23e8..ae6796f7 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -3020,9 +3020,20 @@ public class MemoryMessagesStore implements IMessagesStore { } userSettingMap.put(userId, settingEntry); - userGlobalSlientMap.remove(userId); - userConvSlientMap.remove(userId); - userPushHiddenDetail.remove(userId); + + if(request.getScope() == UserSettingScope.kUserSettingConversationSilent) { + int firstSplit = request.getKey().indexOf("-"); + int type = Integer.parseInt(request.getKey().substring(0, firstSplit)); + int secondSplit = request.getKey().indexOf("-", firstSplit+1); + int line = Integer.parseInt(request.getKey().substring(firstSplit+1, secondSplit)); + String target = request.getKey().substring(secondSplit+1); + String key = userId + "|" + type + "|" + target + "|" + line; + userConvSlientMap.remove(key); + } else if(request.getScope() == UserSettingScope.kUserSettingGlobalSilent) { + userGlobalSlientMap.remove(userId); + } else if(request.getScope() == UserSettingScope.kUserSettingHiddenNotificationDetail) { + userPushHiddenDetail.remove(userId); + } IMHandler.getPublisher().publishNotification(IMTopic.NotifyUserSettingTopic, userId, updateDt); return updateDt; } @@ -3077,7 +3088,7 @@ public class MemoryMessagesStore implements IMessagesStore { } else { slient = true; } - userConvSlientMap.put(userId, slient); + userConvSlientMap.put(key, slient); } return slient; }