perf: improve mark as read performance (#584)

Refs: https://github.com/FossifyOrg/Messages/issues/574
This commit is contained in:
Naveen Singh 2025-10-28 18:55:36 +05:30 committed by GitHub
parent 893fb3c2f9
commit 07b7e92d82
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 9 deletions

View file

@ -994,15 +994,24 @@ fun Context.markMessageRead(id: Long, isMMS: Boolean) {
}
fun Context.markThreadMessagesRead(threadId: Long) {
arrayOf(Sms.CONTENT_URI, Mms.CONTENT_URI).forEach { uri ->
val contentValues = ContentValues().apply {
put(Sms.READ, 1)
put(Sms.SEEN, 1)
}
val selection = "${Sms.THREAD_ID} = ?"
val selectionArgs = arrayOf(threadId.toString())
contentResolver.update(uri, contentValues, selection, selectionArgs)
val id = threadId.toString()
val smsValues = ContentValues().apply {
put(Sms.READ, 1)
put(Sms.SEEN, 1)
}
val smsSelection = "${Sms.THREAD_ID}=? AND ${Sms.TYPE}=? AND (${Sms.READ}=? OR ${Sms.SEEN}=?)"
val smsArgs = arrayOf(id, Sms.MESSAGE_TYPE_INBOX.toString(), "0", "0")
contentResolver.update(Sms.CONTENT_URI, smsValues, smsSelection, smsArgs)
val mmsValues = ContentValues().apply {
put(Mms.READ, 1)
put(Mms.SEEN, 1)
}
val mmsSelection = "${Mms.THREAD_ID}=? AND ${Mms.MESSAGE_BOX}=? AND (${Mms.READ}=? OR ${Mms.SEEN}=?)"
val mmsArgs = arrayOf(id, Mms.MESSAGE_BOX_INBOX.toString(), "0", "0")
contentResolver.update(Mms.CONTENT_URI, mmsValues, mmsSelection, mmsArgs)
messagesDB.markThreadRead(threadId)
conversationsDB.markRead(threadId)
}