From dcddea6fb89246d63be91a1f1151ce2dbd255a12 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Mon, 13 Apr 2020 16:22:30 +0200 Subject: Fix reply not closing fixes #124 --- src/notifications/ManagerLinux.cpp | 36 ++++++++++++++++++------------------ src/notifications/ManagerWin.cpp | 1 - 2 files changed, 18 insertions(+), 19 deletions(-) (limited to 'src/notifications') diff --git a/src/notifications/ManagerLinux.cpp b/src/notifications/ManagerLinux.cpp index 8b7b41bb..b9eca1a8 100644 --- a/src/notifications/ManagerLinux.cpp +++ b/src/notifications/ManagerLinux.cpp @@ -97,24 +97,24 @@ NotificationsManager::closeNotification(uint id) void NotificationsManager::removeNotification(const QString &roomId, const QString &eventId) - - roomEventId reId = {roomId, eventId}; -for (auto elem = notificationIds.begin(); elem != notificationIds.end(); ++elem) { - if (elem.value().roomId != roomId) - continue; - - // close all notifications matching the eventId or having a lower - // notificationId - // This relies on the notificationId not wrapping around. This allows for - // approximately 2,147,483,647 notifications, so it is a bit unlikely. - // Otherwise we would need to store a 64bit counter instead. - closeNotification(elem.key()); - - // FIXME: compare index of event id of the read receipt and the notification instead of just - // the id to prevent read receipts of events without notification clearing all notifications - // in that room! - if (elem.value() == reId) - break; +{ + roomEventId reId = {roomId, eventId}; + for (auto elem = notificationIds.begin(); elem != notificationIds.end(); ++elem) { + if (elem.value().roomId != roomId) + continue; + + // close all notifications matching the eventId or having a lower + // notificationId + // This relies on the notificationId not wrapping around. This allows for + // approximately 2,147,483,647 notifications, so it is a bit unlikely. + // Otherwise we would need to store a 64bit counter instead. + closeNotification(elem.key()); + + // FIXME: compare index of event id of the read receipt and the notification instead + // of just the id to prevent read receipts of events without notification clearing + // all notifications in that room! + if (elem.value() == reId) + break; } } diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp index b00bac2e..5e209ee6 100644 --- a/src/notifications/ManagerWin.cpp +++ b/src/notifications/ManagerWin.cpp @@ -67,4 +67,3 @@ void NotificationsManager::notificationClosed(uint, uint) {} void NotificationsManager::removeNotification(const QString &roomId, const QString &eventId) {} - -- cgit 1.5.1