Browse Source

Notification: fix issue: clear event only for the matching session.

We do not have multi session so the bug is not visible yet.
pull/1666/head
Benoit Marty 11 months ago
parent
commit
3482452011
  1. 4
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt
  2. 2
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiver.kt
  3. 4
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueue.kt

4
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt

@ -195,9 +195,9 @@ class DefaultNotificationDrawerManager @Inject constructor( @@ -195,9 +195,9 @@ class DefaultNotificationDrawerManager @Inject constructor(
/**
* Clear the notifications for a single event.
*/
fun clearEvent(eventId: EventId, doRender: Boolean) {
fun clearEvent(sessionId: SessionId, eventId: EventId, doRender: Boolean) {
updateEvents(doRender = doRender) {
it.clearEvent(eventId)
it.clearEvent(sessionId, eventId)
}
}

2
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiver.kt

@ -56,7 +56,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { @@ -56,7 +56,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() {
defaultNotificationDrawerManager.clearMembershipNotificationForRoom(sessionId, roomId, doRender = false)
}
actionIds.dismissEvent -> if (eventId != null) {
defaultNotificationDrawerManager.clearEvent(eventId, doRender = false)
defaultNotificationDrawerManager.clearEvent(sessionId, eventId, doRender = false)
}
actionIds.markRoomRead -> if (roomId != null) {
defaultNotificationDrawerManager.clearMessagesForRoom(sessionId, roomId, doRender = true)

4
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationEventQueue.kt

@ -135,8 +135,8 @@ data class NotificationEventQueue constructor( @@ -135,8 +135,8 @@ data class NotificationEventQueue constructor(
)
}
fun clearEvent(eventId: EventId) {
queue.removeAll { it.eventId == eventId }
fun clearEvent(sessionId: SessionId, eventId: EventId) {
queue.removeAll { it.sessionId == sessionId && it.eventId == eventId }
}
fun clearMembershipNotificationForSession(sessionId: SessionId) {

Loading…
Cancel
Save