diff --git a/changelog.d/4862.bugfix b/changelog.d/4862.bugfix new file mode 100644 index 0000000000..8fbcb22681 --- /dev/null +++ b/changelog.d/4862.bugfix @@ -0,0 +1 @@ +Fix some notifications not clearing when read diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotifiableEventResolver.kt b/vector/src/main/java/im/vector/app/features/notifications/NotifiableEventResolver.kt index b9d9261abe..acc4e5945b 100644 --- a/vector/src/main/java/im/vector/app/features/notifications/NotifiableEventResolver.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotifiableEventResolver.kt @@ -151,7 +151,7 @@ class NotifiableEventResolver @Inject constructor( senderName = senderDisplayName, senderId = event.root.senderId, body = body.toString(), - imageUri = event.fetchImageIfPresent(session), + imageUriString = event.fetchImageIfPresent(session)?.toString(), roomId = event.root.roomId!!, roomName = roomName, matrixID = session.myUserId @@ -176,7 +176,7 @@ class NotifiableEventResolver @Inject constructor( senderName = senderDisplayName, senderId = event.root.senderId, body = body, - imageUri = event.fetchImageIfPresent(session), + imageUriString = event.fetchImageIfPresent(session)?.toString(), roomId = event.root.roomId!!, roomName = roomName, roomIsDirect = room.roomSummary()?.isDirect ?: false, diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotifiableMessageEvent.kt b/vector/src/main/java/im/vector/app/features/notifications/NotifiableMessageEvent.kt index d13e41daa8..68268739a0 100644 --- a/vector/src/main/java/im/vector/app/features/notifications/NotifiableMessageEvent.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotifiableMessageEvent.kt @@ -27,7 +27,9 @@ data class NotifiableMessageEvent( val senderName: String?, val senderId: String?, val body: String?, - val imageUri: Uri?, + // We cannot use Uri? type here, as that could trigger a + // NotSerializableException when persisting this to storage + val imageUriString: String?, val roomId: String, val roomName: String?, val roomIsDirect: Boolean = false, @@ -45,4 +47,7 @@ data class NotifiableMessageEvent( val type: String = EventType.MESSAGE val description: String = body ?: "" val title: String = senderName ?: "" + + val imageUri: Uri? + get() = imageUriString?.let { Uri.parse(it) } } diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt index a4022f75c8..736b501772 100644 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt @@ -145,7 +145,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { ?: context?.getString(R.string.notification_sender_me), senderId = session.myUserId, body = message, - imageUri = null, + imageUriString = null, roomId = room.roomId, roomName = room.roomSummary()?.displayName ?: room.roomId, roomIsDirect = room.roomSummary()?.isDirect == true, diff --git a/vector/src/test/java/im/vector/app/test/fixtures/NotifiableEventFixture.kt b/vector/src/test/java/im/vector/app/test/fixtures/NotifiableEventFixture.kt index 53d38aa228..397ca80f84 100644 --- a/vector/src/test/java/im/vector/app/test/fixtures/NotifiableEventFixture.kt +++ b/vector/src/test/java/im/vector/app/test/fixtures/NotifiableEventFixture.kt @@ -77,5 +77,5 @@ fun aNotifiableMessageEvent( roomIsDirect = false, canBeReplaced = false, isRedacted = isRedacted, - imageUri = null + imageUriString = null )