Do not show unregistered contacts in search results.

This commit is contained in:
Greyson Parrelli 2024-05-17 16:40:46 -04:00 committed by Oscar Mira
parent 80609f89aa
commit 7fccf5d592
No known key found for this signature in database
GPG key ID: B371B98C5DC32237
3 changed files with 5 additions and 10 deletions

View file

@ -210,14 +210,8 @@ class ContactSearchPagedDataSource(
}
private fun getNonGroupSearchIterator(section: ContactSearchConfiguration.Section.Individuals, query: String?): ContactSearchIterator<Cursor> {
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? {

View file

@ -3439,7 +3439,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
@ -3448,7 +3448,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

View file

@ -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)