diff --git a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java index 4baf1f96..b24fc5b4 100644 --- a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java +++ b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java @@ -188,7 +188,7 @@ public class DatabaseStore { sql += " where `_mobile` = ? "; } else if(searchType == SearchUserType_UserId) { sql += " where `_uid` = ? "; - } else if(searchType == SearchUserType_Name_Mobile) { + } else if(searchType == SearchUserType_Name_Mobile || searchType == SearchUserType_Name_Mobile_DisplayName) { sqlParaCount = 2; sql += " where (`_name` = ? or `_mobile` = ?) "; } else { @@ -200,7 +200,7 @@ public class DatabaseStore { if(searchType == SearchUserType_Name || searchType == SearchUserType_Mobile || searchType == SearchUserType_UserId) { sql += " limit 1"; - } else if(searchType == SearchUserType_Name_Mobile) { + } else if(searchType == SearchUserType_Name_Mobile || searchType == SearchUserType_Name_Mobile_DisplayName) { sql += " limit 2"; } else { sql += " limit 3"; @@ -291,7 +291,7 @@ public class DatabaseStore { if (searchType == SearchUserType_Name) { filter.add(user); continue; - } else if(searchType == SearchUserType_Name_Mobile) { + } else if(searchType == SearchUserType_Name_Mobile || searchType == SearchUserType_Name_Mobile_DisplayName) { if(keyword.equals(user.getName())) { if(!keyword.equals(user.getMobile())) { filter.add(user); @@ -331,7 +331,7 @@ public class DatabaseStore { if (searchType == SearchUserType_Mobile) { filter.add(user); continue; - } else if(searchType == SearchUserType_Name_Mobile) { + } else if(searchType == SearchUserType_Name_Mobile || searchType == SearchUserType_Name_Mobile_DisplayName) { if(keyword.equals(user.getMobile())) { if(!keyword.equals(user.getName())) { filter.add(user); @@ -517,7 +517,7 @@ public class DatabaseStore { out.addAll(nameOrIdMatched); } - if(searchType == SearchUserType_General) { + if(searchType == SearchUserType_General || searchType == SearchUserType_Name_Mobile_DisplayName) { List general = searchUserByDisplayName(keyword, page, nameOrIdMatched); general.removeAll(nameOrIdMatched); out.addAll(general); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 251581ee..713d6ba2 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -2877,10 +2877,18 @@ public class MemoryMessagesStore implements IMessagesStore { searchType = ProtoConstants.SearchUserType.SearchUserType_Name_Mobile_UserId; } - if(mDisableUserIdSearch && (searchType == ProtoConstants.SearchUserType.SearchUserType_General || searchType == ProtoConstants.SearchUserType.SearchUserType_Name_Mobile_UserId)) { + if(mDisableUserIdSearch && searchType == ProtoConstants.SearchUserType.SearchUserType_Name_Mobile_UserId) { searchType = ProtoConstants.SearchUserType.SearchUserType_Name_Mobile; } + if(mDisableUserIdSearch && searchType == ProtoConstants.SearchUserType.SearchUserType_General) { + searchType = ProtoConstants.SearchUserType.SearchUserType_Name_Mobile_DisplayName; + } + + if(mDisableUserIdSearch && searchType == ProtoConstants.SearchUserType.SearchUserType_UserId) { + return new ArrayList<>(); + } + return databaseStore.searchUserFromDB(keyword, searchType, page); } diff --git a/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java b/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java index dbf9fad5..aa02adab 100644 --- a/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java +++ b/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java @@ -220,6 +220,7 @@ public class ProtoConstants { int SearchUserType_Mobile = 3; int SearchUserType_UserId = 4; int SearchUserType_Name_Mobile_UserId = 5; + int SearchUserType_Name_Mobile_DisplayName = 100; } public interface DisableSearchMask {