Add an internal feature to search your contacts by ID/ACI/PNI.

This commit is contained in:
Greyson Parrelli
2023-05-25 11:27:36 -04:00
committed by Cody Henthorne
parent 7c28d8ad51
commit 7318e676f7
6 changed files with 272 additions and 0 deletions

View File

@@ -23,6 +23,7 @@ import org.signal.core.util.optionalInt
import org.signal.core.util.optionalLong
import org.signal.core.util.optionalString
import org.signal.core.util.or
import org.signal.core.util.readToList
import org.signal.core.util.readToSet
import org.signal.core.util.readToSingleBoolean
import org.signal.core.util.readToSingleLong
@@ -3140,6 +3141,21 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
}
}
fun queryByInternalFields(query: String): List<RecipientRecord> {
if (query.isBlank()) {
return emptyList()
}
return readableDatabase
.select()
.from(TABLE_NAME)
.where("$ID LIKE ? OR $SERVICE_ID LIKE ? OR $PNI_COLUMN LIKE ?", "%$query%", "%$query%", "%$query%")
.run()
.readToList { cursor ->
getRecord(context, cursor)
}
}
fun getSignalContacts(includeSelf: Boolean): Cursor? {
return getSignalContacts(includeSelf, "$SORT_NAME, $SYSTEM_JOINED_NAME, $SEARCH_PROFILE_NAME, $USERNAME, $PHONE")
}