From c33b5de174f0464ef0e2062c17cabf4c1a3a57c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 1 Aug 2022 01:30:12 +0200 Subject: [PATCH] status/network: Simplify notification code There is only one case where we show a notification: When activating a connection failed. There is therefore no reason for a generic wrapper around the notification API. Likewise, tracking the source is a bit pointless, given that the notification is transient. In fact, as we destroy an existing notification *before* checking for the source, any previous source will be gone by that point. Part-of: --- js/ui/status/network.js | 50 ++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/js/ui/status/network.js b/js/ui/status/network.js index c31797a4a..db604be4d 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -1814,17 +1814,6 @@ class Indicator extends PanelMenu.SystemIndicator { this.menu.setSensitive(sensitive); } - _ensureSource() { - if (!this._source) { - this._source = new MessageTray.Source(_("Network Manager"), - 'network-transmit-receive'); - this._source.policy = new MessageTray.NotificationApplicationPolicy('gnome-network-panel'); - - this._source.connect('destroy', () => (this._source = null)); - Main.messageTray.add(this._source); - } - } - _readDevices() { let devices = this._client.get_devices() || []; for (let i = 0; i < devices.length; ++i) { @@ -1837,29 +1826,24 @@ class Indicator extends PanelMenu.SystemIndicator { this._syncDeviceNames(); } - _notify(iconName, title, text, urgency) { - if (this._notification) - this._notification.destroy(); - - this._ensureSource(); - - let gicon = new Gio.ThemedIcon({ name: iconName }); - this._notification = new MessageTray.Notification(this._source, title, text, { gicon }); - this._notification.setUrgency(urgency); - this._notification.setTransient(true); - this._notification.connect('destroy', () => { - this._notification = null; - }); - this._source.showNotification(this._notification); - } - _onActivationFailed() { - // XXX: nm-applet has no special text depending on reason - // but I'm not sure of this generic message - this._notify('network-error-symbolic', - _("Connection failed"), - _("Activation of network connection failed"), - MessageTray.Urgency.HIGH); + this._notification?.destroy(); + + const source = new MessageTray.Source( + _('Network Manager'), 'network-error-symbolic'); + source.policy = + new MessageTray.NotificationApplicationPolicy('gnome-network-panel'); + + this._notification = new MessageTray.Notification(source, + _('Connection failed'), + _('Activation of network connection failed')); + this._notification.setUrgency(MessageTray.Urgency.HIGH); + this._notification.setTransient(true); + this._notification.connect('destroy', + () => (this._notification = null)); + + Main.messageTray.add(source); + source.showNotification(this._notification); } _syncDeviceNames() {