From 8f74e54c88e57af9fdf4ca3629854868c492ca00 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Mon, 23 Feb 2026 11:50:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=94=81=E5=AE=9APC=E7=9A=84?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=EF=BC=8C=E5=BD=93=E7=A6=BB=E7=BA=BF=E6=97=B6?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=A7=A3=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/persistence/MemoryMessagesStore.java | 10 ++++++++-- .../io/moquette/persistence/MemorySessionStore.java | 9 +++++++++ .../src/main/java/win/liyufan/im/UserSettingScope.java | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 0d0d9c81..e48d07b6 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -78,8 +78,7 @@ import static io.moquette.BrokerConstants.*; import static io.moquette.server.Constants.MAX_CHATROOM_MESSAGE_QUEUE; import static io.moquette.server.Constants.MAX_MESSAGE_QUEUE; import static cn.wildfirechat.pojos.MyInfoType.*; -import static win.liyufan.im.UserSettingScope.kUserSettingAddFriendStrategy; -import static win.liyufan.im.UserSettingScope.kUserSettingPCOnline; +import static win.liyufan.im.UserSettingScope.*; public class MemoryMessagesStore implements IMessagesStore { private static final String MESSAGES_MAP = "messages_map"; @@ -3025,6 +3024,13 @@ public class MemoryMessagesStore implements IMessagesStore { return; } + if(!online && (session.isPcClient()) || session.isPadClient()) { + WFCMessage.UserSettingEntry lockSetting = getUserSetting(session.getUsername(), UserSettingScopeLockPC, session.getClientID()); + if(lockSetting != null && "1".equals(lockSetting.getValue())) { + updateUserSettings(session.getUsername(), WFCMessage.ModifyUserSettingReq.newBuilder().setScope(UserSettingScopeLockPC).setKey(session.getClientID()).setValue("0").build(), null); + } + } + String pcValue = null; String padValue = null; for (MemorySessionStore.Session s : m_Server.getStore().sessionsStore().sessionForUser(session.username)) { diff --git a/broker/src/main/java/io/moquette/persistence/MemorySessionStore.java b/broker/src/main/java/io/moquette/persistence/MemorySessionStore.java index 39dad7b8..69572724 100755 --- a/broker/src/main/java/io/moquette/persistence/MemorySessionStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemorySessionStore.java @@ -93,6 +93,15 @@ public class MemorySessionStore implements ISessionsStore { return unReceivedMsgs; } + public boolean isPcClient() { + return platform == ProtoConstants.Platform.Platform_Windows || platform == ProtoConstants.Platform.Platform_OSX || platform == ProtoConstants.Platform.Platform_LINUX; + } + + public boolean isPadClient() { + return platform == ProtoConstants.Platform.Platform_iPad || platform == ProtoConstants.Platform.Platform_APad || platform == ProtoConstants.Platform.Platform_HarmonyPad; + } + + public int getPushType() { return pushType; } diff --git a/broker/src/main/java/win/liyufan/im/UserSettingScope.java b/broker/src/main/java/win/liyufan/im/UserSettingScope.java index 66668ff0..3f1b8d7b 100644 --- a/broker/src/main/java/win/liyufan/im/UserSettingScope.java +++ b/broker/src/main/java/win/liyufan/im/UserSettingScope.java @@ -22,4 +22,5 @@ public interface UserSettingScope { int kUserSettingPrivacySearchable = 27; int kUserSettingAddFriendStrategy = 28; int kUserSettingScopeSyncBadge = 29; + int UserSettingScopeLockPC = 30; }