fix: improve handling of joined rooms and event notifications in MatrixSyncService

This commit is contained in:
2026-04-07 20:45:44 +10:00
parent 77d4071728
commit da52ec84b7

View File

@@ -143,10 +143,11 @@ class MatrixSyncService : Service() {
val nm = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val nm = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
ensureMessageChannel(nm) ensureMessageChannel(nm)
joinedRooms.keys().forEach { roomId -> val roomIds = joinedRooms.keys().asSequence().toList()
for (roomId in roomIds) {
val timeline = joinedRooms.optJSONObject(roomId) val timeline = joinedRooms.optJSONObject(roomId)
?.optJSONObject("timeline") ?: return@forEach ?.optJSONObject("timeline") ?: continue
val events = timeline.optJSONArray("events") ?: return@forEach val events = timeline.optJSONArray("events") ?: continue
for (i in 0 until events.length()) { for (i in 0 until events.length()) {
val event = events.optJSONObject(i) ?: continue val event = events.optJSONObject(i) ?: continue
@@ -157,7 +158,7 @@ class MatrixSyncService : Service() {
if (eventId.isNotBlank() && !shownEventIds.add(eventId)) continue if (eventId.isNotBlank() && !shownEventIds.add(eventId)) continue
val content = event.optJSONObject("content") ?: continue val content = event.optJSONObject("content") ?: continue
val body = content.optString("body").ifBlank { continue } val body = content.optString("body").takeIf { it.isNotBlank() } ?: continue
val sender = event.optString("sender") val sender = event.optString("sender")
val senderName = sender.substringAfter("@").substringBefore(":") val senderName = sender.substringAfter("@").substringBefore(":")