Skip to content

Commit 07b7e92

Browse files
authored
perf: improve mark as read performance (#584)
Refs: #574
1 parent 893fb3c commit 07b7e92

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
## [Unreleased]
88

99
### Changed
10-
1110
- Compatibility updates for Android 15 & 16
1211
- Calling now works directly without launching dialpad ([#562])
1312

13+
### Fixed
14+
- Fixed freezing when sending messages ([#574])
15+
1416
## [1.5.0] - 2025-10-18
1517
### Added
1618
- Unread badge count for conversations ([#177])
@@ -194,6 +196,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
194196
[#461]: https://github.com/FossifyOrg/Messages/issues/461
195197
[#561]: https://github.com/FossifyOrg/Messages/pull/561
196198
[#562]: https://github.com/FossifyOrg/Messages/issues/562
199+
[#574]: https://github.com/FossifyOrg/Messages/issues/574
197200

198201
[Unreleased]: https://github.com/FossifyOrg/Messages/compare/1.5.0...HEAD
199202
[1.5.0]: https://github.com/FossifyOrg/Messages/compare/1.4.0...1.5.0

app/src/main/kotlin/org/fossify/messages/extensions/Context.kt

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -994,15 +994,24 @@ fun Context.markMessageRead(id: Long, isMMS: Boolean) {
994994
}
995995

996996
fun Context.markThreadMessagesRead(threadId: Long) {
997-
arrayOf(Sms.CONTENT_URI, Mms.CONTENT_URI).forEach { uri ->
998-
val contentValues = ContentValues().apply {
999-
put(Sms.READ, 1)
1000-
put(Sms.SEEN, 1)
1001-
}
1002-
val selection = "${Sms.THREAD_ID} = ?"
1003-
val selectionArgs = arrayOf(threadId.toString())
1004-
contentResolver.update(uri, contentValues, selection, selectionArgs)
997+
val id = threadId.toString()
998+
999+
val smsValues = ContentValues().apply {
1000+
put(Sms.READ, 1)
1001+
put(Sms.SEEN, 1)
10051002
}
1003+
val smsSelection = "${Sms.THREAD_ID}=? AND ${Sms.TYPE}=? AND (${Sms.READ}=? OR ${Sms.SEEN}=?)"
1004+
val smsArgs = arrayOf(id, Sms.MESSAGE_TYPE_INBOX.toString(), "0", "0")
1005+
contentResolver.update(Sms.CONTENT_URI, smsValues, smsSelection, smsArgs)
1006+
1007+
val mmsValues = ContentValues().apply {
1008+
put(Mms.READ, 1)
1009+
put(Mms.SEEN, 1)
1010+
}
1011+
val mmsSelection = "${Mms.THREAD_ID}=? AND ${Mms.MESSAGE_BOX}=? AND (${Mms.READ}=? OR ${Mms.SEEN}=?)"
1012+
val mmsArgs = arrayOf(id, Mms.MESSAGE_BOX_INBOX.toString(), "0", "0")
1013+
contentResolver.update(Mms.CONTENT_URI, mmsValues, mmsSelection, mmsArgs)
1014+
10061015
messagesDB.markThreadRead(threadId)
10071016
conversationsDB.markRead(threadId)
10081017
}

0 commit comments

Comments
 (0)