[polari] mainWindow: Use :reachable for offline warning



commit 9975b349698e286a766fd974e7f10102236aa96f
Author: Florian Müllner <fmuellner gnome org>
Date:   Sun May 12 14:44:09 2019 +0200

    mainWindow: Use :reachable for offline warning
    
    Similar to the previous commit, the new offline message doesn't
    reliably pop up when offline due to GNetworkMonitor's broad
    definition of "network availability".
    
    Instead, show it if none of the visible accounts can be reached.
    
    https://gitlab.gnome.org/GNOME/polari/merge_requests/120

 src/mainWindow.js | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)
---
diff --git a/src/mainWindow.js b/src/mainWindow.js
index b35d310..0dc6142 100644
--- a/src/mainWindow.js
+++ b/src/mainWindow.js
@@ -140,12 +140,6 @@ var MainWindow = GObject.registerClass({
         if (GLib.get_application_name().toLowerCase().includes('snapshot'))
             this.get_style_context().add_class('snapshot');
 
-        this._networkMonitor = Gio.NetworkMonitor.get_default();
-        this._networkChangedId = this._networkMonitor.connect(
-            'network-changed',
-            this._onNetworkChanged.bind(this));
-        this._onNetworkChanged();
-
         this._roomStack.connect('size-allocate', () => {
             this.notify('view-height');
         });
@@ -171,6 +165,10 @@ var MainWindow = GObject.registerClass({
             'accounts-changed', this._onAccountsChanged.bind(this));
         this._onAccountsChanged(this._accountsMonitor);
 
+        this._accountReachableId = this._accountsMonitor.connect(
+            'account-reachable-changed', this._onAccountsReachableChanged.bind(this));
+        this._onAccountsReachableChanged();
+
         this._roomManager = RoomManager.getDefault();
         this._roomsLoadedId = this._roomManager.connect('rooms-loaded',
             this._onRoomsLoaded.bind(this));
@@ -226,10 +224,10 @@ var MainWindow = GObject.registerClass({
         return this._roomStack.get_allocated_height() - this._roomStack.entry_area_height;
     }
 
-    _onNetworkChanged() {
-        let { networkAvailable } = this._networkMonitor;
+    _onAccountsReachableChanged() {
+        let accounts = this._accountsMonitor.visibleAccounts;
         this._offlineInfoBar.revealed =
-            this._networkMonitor.state_valid && !networkAvailable;
+            (accounts.length > 0) && !accounts.some(a => a.reachable);
     }
 
     _onWindowStateEvent(widget, event) {
@@ -265,14 +263,11 @@ var MainWindow = GObject.registerClass({
         this.active_room = null;
 
         this._accountsMonitor.disconnect(this._accountsChangedId);
+        this._accountsMonitor.disconnect(this._accountReachableId);
 
         this._roomManager.disconnect(this._roomsLoadedId);
         this._roomManager.disconnect(this._roomRemovedId);
 
-        if (this._networkChangedId)
-            this._networkMonitor.disconnect(this._networkChangedId);
-        this._networkChangedId = 0;
-
         this._overlay.remove(this.application.notificationQueue);
         this._overlay.remove(this.application.commandOutputQueue);
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]