From 0425b70d315ca5f1b4207bfb581b55c7a5c8825b Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 17 May 2024 16:40:46 -0400 Subject: [PATCH] Do not show unregistered contacts in search results. --- .../contacts/paged/ContactSearchPagedDataSource.kt | 10 ++-------- .../thoughtcrime/securesms/database/RecipientTable.kt | 4 ++-- .../contacts/paged/ContactSearchPagedDataSourceTest.kt | 1 + 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt index e13e486af6..8b0a332d68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt @@ -210,14 +210,8 @@ class ContactSearchPagedDataSource( } private fun getNonGroupSearchIterator(section: ContactSearchConfiguration.Section.Individuals, query: String?): ContactSearchIterator { - return when (section.transportType) { - ContactSearchConfiguration.TransportType.PUSH -> { - val searchQuery = RecipientTable.ContactSearchQuery(query ?: "", section.includeSelf, section.pushSearchResultsSortOrder) - CursorSearchIterator(wrapRecipientCursor(contactSearchPagedDataSourceRepository.querySignalContacts(searchQuery))) - } - ContactSearchConfiguration.TransportType.SMS -> CursorSearchIterator(wrapRecipientCursor(contactSearchPagedDataSourceRepository.queryNonSignalContacts(query))) - ContactSearchConfiguration.TransportType.ALL -> CursorSearchIterator(wrapRecipientCursor(contactSearchPagedDataSourceRepository.queryNonGroupContacts(query, section.includeSelf))) - } + val searchQuery = RecipientTable.ContactSearchQuery(query ?: "", section.includeSelf, section.pushSearchResultsSortOrder) + return CursorSearchIterator(wrapRecipientCursor(contactSearchPagedDataSourceRepository.querySignalContacts(searchQuery))) } private fun wrapRecipientCursor(cursor: Cursor?): Cursor? { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt index 71d043aac0..8a74c3a89d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt @@ -3497,7 +3497,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da //language=sql val subquery = """ SELECT ${SEARCH_PROJECTION.joinToString(", ")} FROM $TABLE_NAME - WHERE $BLOCKED = ? AND $HIDDEN = ? AND NOT EXISTS (SELECT 1 FROM ${ThreadTable.TABLE_NAME} WHERE ${ThreadTable.TABLE_NAME}.${ThreadTable.ACTIVE} = 1 AND ${ThreadTable.TABLE_NAME}.${ThreadTable.RECIPIENT_ID} = $TABLE_NAME.$ID LIMIT 1) + WHERE $BLOCKED = ? AND $HIDDEN = ? AND $REGISTERED != ? AND NOT EXISTS (SELECT 1 FROM ${ThreadTable.TABLE_NAME} WHERE ${ThreadTable.TABLE_NAME}.${ThreadTable.ACTIVE} = 1 AND ${ThreadTable.TABLE_NAME}.${ThreadTable.RECIPIENT_ID} = $TABLE_NAME.$ID LIMIT 1) AND ( $SORT_NAME GLOB ? OR $USERNAME GLOB ? OR @@ -3506,7 +3506,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da ) """ - return readableDatabase.query(subquery, SqlUtil.buildArgs(0, 0, query, query, query, query)) + return readableDatabase.query(subquery, SqlUtil.buildArgs(0, 0, RegisteredState.NOT_REGISTERED.id, query, query, query, query)) } @JvmOverloads diff --git a/app/src/test/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceTest.kt b/app/src/test/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceTest.kt index e18c8e4547..8ba04e8953 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceTest.kt @@ -203,6 +203,7 @@ class ContactSearchPagedDataSourceTest { whenever(repository.getRecents(recents)).thenReturn(cursor) whenever(repository.queryNonGroupContacts(isNull(), any())).thenReturn(cursor) + whenever(repository.querySignalContacts(any())).thenReturn(cursor) whenever(cursor.count).thenReturn(10) return ContactSearchPagedDataSource(configuration, repository)