diff options
| author | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
|---|---|---|
| committer | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
| commit | 74aecd8b0986d07b50b7ce310d64e645b8b54e38 (patch) | |
| tree | 560e6434f183eb54cd779936f3a4c9575146a066 /plugins/omemo/src/ui/device_notification_populator.vala | |
| parent | 3d7e90d401da02d430a87db0ec7e1db3a6f1a68f (diff) | |
| parent | 4436001bb361ad4f9e4e05819214ecf0ea77c063 (diff) | |
Merge 'upstream/master'
Diffstat (limited to 'plugins/omemo/src/ui/device_notification_populator.vala')
| -rw-r--r-- | plugins/omemo/src/ui/device_notification_populator.vala | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/plugins/omemo/src/ui/device_notification_populator.vala b/plugins/omemo/src/ui/device_notification_populator.vala deleted file mode 100644 index 7829d89c..00000000 --- a/plugins/omemo/src/ui/device_notification_populator.vala +++ /dev/null @@ -1,90 +0,0 @@ -using Dino.Entities; -using Xmpp; -using Gtk; - -namespace Dino.Plugins.Omemo { - -public class DeviceNotificationPopulator : NotificationPopulator, Object { - - public string id { get { return "device_notification"; } } - - private StreamInteractor? stream_interactor; - private Plugin plugin; - private Conversation? current_conversation; - private NotificationCollection? notification_collection; - private ConversationNotification notification; - - public DeviceNotificationPopulator(Plugin plugin, StreamInteractor stream_interactor) { - this.stream_interactor = stream_interactor; - this.plugin = plugin; - - stream_interactor.account_added.connect(on_account_added); - } - - public void init(Conversation conversation, NotificationCollection notification_collection, Plugins.WidgetType type) { - current_conversation = conversation; - this.notification_collection = notification_collection; - if (plugin.has_new_devices(conversation.account, conversation.counterpart) && conversation.type_ == Conversation.Type.CHAT) { - display_notification(); - } - } - - public void close(Conversation conversation) { - notification = null; - } - - private void display_notification() { - if (notification == null) { - notification = new ConversationNotification(plugin, current_conversation); - notification.should_hide.connect(should_hide); - notification_collection.add_meta_notification(notification); - } - } - - public void should_hide() { - if (!plugin.has_new_devices(current_conversation.account, current_conversation.counterpart) && notification != null){ - notification_collection.remove_meta_notification(notification); - 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 (current_conversation != null && jid.equals(current_conversation.counterpart) && plugin.has_new_devices(current_conversation.account, current_conversation.counterpart)) { - display_notification(); - } - }); - } -} - -private class ConversationNotification : MetaConversationNotification { - private Widget widget; - private Plugin plugin; - private Jid jid; - private Account account; - public signal void should_hide(); - - public ConversationNotification(Plugin plugin, Conversation conversation) { - this.plugin = plugin; - this.jid = jid; - this.account = account; - - Box box = new Box(Orientation.HORIZONTAL, 5); - Button manage_button = new Button.with_label(_("Manage")); - manage_button.clicked.connect(() => { - manage_button.activate(); - - var variant = new Variant.tuple(new Variant[] {new Variant.int32(conversation.id), new Variant.string("encryption")}); - GLib.Application.get_default().activate_action("open-conversation-details", variant); - }); - box.append(new Label(_("This contact has new devices")) { margin_end=10 }); - box.append(manage_button); - widget = box; - } - - public override Object? get_widget(WidgetType type) { - return widget; - } -} - -} |
