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> {
return when (section.transportType) {
ContactSearchConfiguration.TransportType.PUSH -> contactSearchPagedDataSourceRepository.querySignalContactLetterHeaders(query, section.includeSelf)
else -> error("This has only been implemented for push recipients.")
return contactSearchPagedDataSourceRepository.querySignalContactLetterHeaders(
query = query,
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> {

View file

@ -38,8 +38,8 @@ open class ContactSearchPagedDataSourceRepository(
return contactRepository.querySignalContacts(query ?: "", includeSelf)
}
open fun querySignalContactLetterHeaders(query: String?, includeSelf: Boolean): Map<RecipientId, String> {
return SignalDatabase.recipients.querySignalContactLetterHeaders(query ?: "", includeSelf)
open fun querySignalContactLetterHeaders(query: String?, includeSelf: Boolean, includePush: Boolean, includeSms: Boolean): Map<RecipientId, String> {
return SignalDatabase.recipients.querySignalContactLetterHeaders(query ?: "", includeSelf, includePush, includeSms)
}
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)
}
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()
.withRegistered(true)
.withRegistered(includePush)
.withNonRegistered(includeSms)
.withGroups(false)
.excludeId(if (includeSelf) null else Recipient.self().id)
.withSearchQuery(inputQuery)