Cleanup naming of RecipientDatabase GLOB search.

This commit is contained in:
Greyson Parrelli 2020-07-23 15:57:10 -04:00
parent ab76112f5f
commit 8ce5c4b885

View file

@ -56,7 +56,6 @@ import org.whispersystems.signalservice.api.storage.SignalContactRecord;
import org.whispersystems.signalservice.api.storage.SignalGroupV1Record; import org.whispersystems.signalservice.api.storage.SignalGroupV1Record;
import org.whispersystems.signalservice.api.storage.SignalGroupV2Record; import org.whispersystems.signalservice.api.storage.SignalGroupV2Record;
import org.whispersystems.signalservice.api.storage.StorageId; import org.whispersystems.signalservice.api.storage.StorageId;
import org.whispersystems.signalservice.api.util.OptionalUtil;
import org.whispersystems.signalservice.api.util.UuidUtil; import org.whispersystems.signalservice.api.util.UuidUtil;
import java.io.Closeable; import java.io.Closeable;
@ -1832,7 +1831,7 @@ public class RecipientDatabase extends Database {
} }
public @Nullable Cursor querySignalContacts(@NonNull String query, boolean includeSelf) { public @Nullable Cursor querySignalContacts(@NonNull String query, boolean includeSelf) {
query = buildGlobPattern(query); query = buildCaseInsensitiveGlobPattern(query);
String selection = BLOCKED + " = ? AND " + String selection = BLOCKED + " = ? AND " +
REGISTERED + " = ? AND " + REGISTERED + " = ? AND " +
@ -1870,7 +1869,7 @@ public class RecipientDatabase extends Database {
} }
public @Nullable Cursor queryNonSignalContacts(@NonNull String query) { public @Nullable Cursor queryNonSignalContacts(@NonNull String query) {
query = buildGlobPattern(query); query = buildCaseInsensitiveGlobPattern(query);
String selection = BLOCKED + " = ? AND " + String selection = BLOCKED + " = ? AND " +
REGISTERED + " != ? AND " + REGISTERED + " != ? AND " +
@ -1889,8 +1888,7 @@ public class RecipientDatabase extends Database {
} }
public @Nullable Cursor queryAllContacts(@NonNull String query) { public @Nullable Cursor queryAllContacts(@NonNull String query) {
query = buildGlobPattern(query); query = buildCaseInsensitiveGlobPattern(query);
query = "*" + query + "*";
String selection = BLOCKED + " = ? AND " + 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); 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)) { if (TextUtils.isEmpty(query)) {
return "*"; return "*";
} }