From a49326979140750cc22cf483182274638568e43d Mon Sep 17 00:00:00 2001 From: fiaxh Date: Thu, 14 Mar 2019 22:53:47 +0100 Subject: Fix OMEMO new device notifications appearing in wrong context --- plugins/omemo/src/device_notification_populator.vala | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/omemo/src/device_notification_populator.vala b/plugins/omemo/src/device_notification_populator.vala index 900cac96..bcb99f11 100644 --- a/plugins/omemo/src/device_notification_populator.vala +++ b/plugins/omemo/src/device_notification_populator.vala @@ -17,6 +17,8 @@ public class DeviceNotificationPopulator : NotificationPopulator, Object { public DeviceNotificationPopulator(Plugin plugin, StreamInteractor stream_interactor) { this.stream_interactor = stream_interactor; this.plugin = plugin; + + stream_interactor.account_added.connect(on_account_added); } public bool has_new_devices(Jid jid) { @@ -28,11 +30,6 @@ public class DeviceNotificationPopulator : NotificationPopulator, Object { public void init(Conversation conversation, NotificationCollection notification_collection, Plugins.WidgetType type) { current_conversation = conversation; this.notification_collection = notification_collection; - stream_interactor.module_manager.get_module(conversation.account, StreamModule.IDENTITY).bundle_fetched.connect_after((jid, device_id, bundle) => { - if (jid.equals(conversation.counterpart) && has_new_devices(conversation.counterpart) && conversation.type_ == Conversation.Type.CHAT) { - display_notification(); - } - }); if (has_new_devices(conversation.counterpart) && conversation.type_ == Conversation.Type.CHAT) { display_notification(); } @@ -43,7 +40,7 @@ public class DeviceNotificationPopulator : NotificationPopulator, Object { } private void display_notification() { - if(notification == null) { + if (notification == null) { notification = new ConversationNotification(plugin, current_conversation.account, current_conversation.counterpart); notification.should_hide.connect(should_hide); notification_collection.add_meta_notification(notification); @@ -56,6 +53,14 @@ public class DeviceNotificationPopulator : NotificationPopulator, Object { notification = null; } } + + private void on_account_added(Account account) { + stream_interactor.module_manager.get_module(account, StreamModule.IDENTITY).bundle_fetched.connect_after((jid, device_id, bundle) => { + if (jid.equals(current_conversation.counterpart) && has_new_devices(current_conversation.counterpart)) { + display_notification(); + } + }); + } } private class ConversationNotification : MetaConversationNotification { -- cgit v1.2.3-70-g09d2