Fix subscription notification clearing

This commit is contained in:
fiaxh 2023-09-07 21:30:47 +02:00
parent bc5a1d35cb
commit 2fba24ccae
2 changed files with 23 additions and 12 deletions

View file

@ -606,6 +606,12 @@ public class ConversationView : Widget, Plugins.ConversationItemCollection, Plug
widget.dispose(); widget.dispose();
} }
widgets.clear(); widgets.clear();
Widget? notification = notifications.get_first_child();
while (notification != null) {
notifications.remove(notification);
notification = notifications.get_first_child();
}
} }
private void clear_notifications() { private void clear_notifications() {

View file

@ -273,23 +273,28 @@ public class Dino.Ui.FreeDesktopNotifier : NotificationProvider, Object {
} }
public async void retract_content_item_notifications() { public async void retract_content_item_notifications() {
if (content_notifications != null) { foreach (uint32 id in content_notifications.values) {
foreach (uint32 id in content_notifications.values) { try {
try { dbus_notifications.close_notification.begin(id);
dbus_notifications.close_notification.begin(id); } catch (Error e) { }
} catch (Error e) { }
}
content_notifications.clear();
} }
content_notifications.clear();
} }
public async void retract_conversation_notifications(Conversation conversation) { public async void retract_conversation_notifications(Conversation conversation) {
if (content_notifications.has_key(conversation)) { try {
try { if (content_notifications.has_key(conversation)) {
dbus_notifications.close_notification.begin(content_notifications[conversation]); dbus_notifications.close_notification.begin(content_notifications[conversation]);
} catch (Error e) { } content_notifications.unset(conversation);
} }
content_notifications.unset(conversation);
if (conversation_notifications.has_key(conversation)) {
foreach (var notification_id in conversation_notifications[conversation]) {
dbus_notifications.close_notification.begin(notification_id);
}
conversation_notifications.unset(conversation);
}
} catch (Error e) { }
} }
private async Variant get_conversation_icon(Conversation conversation) { private async Variant get_conversation_icon(Conversation conversation) {