Resolve crashing when trying to get the header letters for the contacts section of search.

This commit is contained in:
Alex Hart 2023-02-03 09:33:18 -04:00
parent 90695182f3
commit 25c96a6be6
3 changed files with 17 additions and 8 deletions

View file

@ -221,10 +221,18 @@ class ContactSearchPagedDataSource(
} }
private fun getNonGroupHeaderLetterMap(section: ContactSearchConfiguration.Section.Individuals, query: String?): Map<RecipientId, String> { private fun getNonGroupHeaderLetterMap(section: ContactSearchConfiguration.Section.Individuals, query: String?): Map<RecipientId, String> {
return when (section.transportType) { return contactSearchPagedDataSourceRepository.querySignalContactLetterHeaders(
ContactSearchConfiguration.TransportType.PUSH -> contactSearchPagedDataSourceRepository.querySignalContactLetterHeaders(query, section.includeSelf) query = query,
else -> error("This has only been implemented for push recipients.") includeSelf = section.includeSelf,
includePush = when (section.transportType) {
ContactSearchConfiguration.TransportType.PUSH, ContactSearchConfiguration.TransportType.ALL -> true
else -> false
},
includeSms = when (section.transportType) {
ContactSearchConfiguration.TransportType.SMS, ContactSearchConfiguration.TransportType.ALL -> true
else -> false
} }
)
} }
private fun getStoriesSearchIterator(query: String?): ContactSearchIterator<Cursor> { private fun getStoriesSearchIterator(query: String?): ContactSearchIterator<Cursor> {

View file

@ -38,8 +38,8 @@ open class ContactSearchPagedDataSourceRepository(
return contactRepository.querySignalContacts(query ?: "", includeSelf) return contactRepository.querySignalContacts(query ?: "", includeSelf)
} }
open fun querySignalContactLetterHeaders(query: String?, includeSelf: Boolean): Map<RecipientId, String> { open fun querySignalContactLetterHeaders(query: String?, includeSelf: Boolean, includePush: Boolean, includeSms: Boolean): Map<RecipientId, String> {
return SignalDatabase.recipients.querySignalContactLetterHeaders(query ?: "", includeSelf) return SignalDatabase.recipients.querySignalContactLetterHeaders(query ?: "", includeSelf, includePush, includeSms)
} }
open fun queryNonSignalContacts(query: String?): Cursor? { open fun queryNonSignalContacts(query: String?): Cursor? {

View file

@ -3078,9 +3078,10 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
return readableDatabase.query(TABLE_NAME, SEARCH_PROJECTION, selection, args, null, null, orderBy) return readableDatabase.query(TABLE_NAME, SEARCH_PROJECTION, selection, args, null, null, orderBy)
} }
fun querySignalContactLetterHeaders(inputQuery: String, includeSelf: Boolean): Map<RecipientId, String> { fun querySignalContactLetterHeaders(inputQuery: String, includeSelf: Boolean, includePush: Boolean, includeSms: Boolean): Map<RecipientId, String> {
val searchSelection = ContactSearchSelection.Builder() val searchSelection = ContactSearchSelection.Builder()
.withRegistered(true) .withRegistered(includePush)
.withNonRegistered(includeSms)
.withGroups(false) .withGroups(false)
.excludeId(if (includeSelf) null else Recipient.self().id) .excludeId(if (includeSelf) null else Recipient.self().id)
.withSearchQuery(inputQuery) .withSearchQuery(inputQuery)