From 8ce5c4b885f9a6cd6f06ca896b736d759f39eada Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 23 Jul 2020 15:57:10 -0400 Subject: [PATCH] Cleanup naming of RecipientDatabase GLOB search. --- .../securesms/database/RecipientDatabase.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java index 0b72a2538..d1cf7cca3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java @@ -56,7 +56,6 @@ import org.whispersystems.signalservice.api.storage.SignalContactRecord; import org.whispersystems.signalservice.api.storage.SignalGroupV1Record; import org.whispersystems.signalservice.api.storage.SignalGroupV2Record; import org.whispersystems.signalservice.api.storage.StorageId; -import org.whispersystems.signalservice.api.util.OptionalUtil; import org.whispersystems.signalservice.api.util.UuidUtil; import java.io.Closeable; @@ -1832,7 +1831,7 @@ public class RecipientDatabase extends Database { } public @Nullable Cursor querySignalContacts(@NonNull String query, boolean includeSelf) { - query = buildGlobPattern(query); + query = buildCaseInsensitiveGlobPattern(query); String selection = BLOCKED + " = ? AND " + REGISTERED + " = ? AND " + @@ -1870,7 +1869,7 @@ public class RecipientDatabase extends Database { } public @Nullable Cursor queryNonSignalContacts(@NonNull String query) { - query = buildGlobPattern(query); + query = buildCaseInsensitiveGlobPattern(query); String selection = BLOCKED + " = ? AND " + REGISTERED + " != ? AND " + @@ -1889,8 +1888,7 @@ public class RecipientDatabase extends Database { } public @Nullable Cursor queryAllContacts(@NonNull String query) { - query = buildGlobPattern(query); - query = "*" + query + "*"; + query = buildCaseInsensitiveGlobPattern(query); String selection = BLOCKED + " = ? AND " + "(" + @@ -1904,7 +1902,14 @@ public class RecipientDatabase extends Database { return databaseHelper.getReadableDatabase().query(TABLE_NAME, SEARCH_PROJECTION, selection, args, null, null, null); } - private static String buildGlobPattern(@NonNull String query) { + /** + * Builds a case-insensitive GLOB pattern for fuzzy text queries. Works with all unicode + * characters. + * + * Ex: + * cat -> [cC][aA][tT] + */ + private static String buildCaseInsensitiveGlobPattern(@NonNull String query) { if (TextUtils.isEmpty(query)) { return "*"; }