[polari] accountsMonitor: Take over account-functions from NetworksManager



commit 4c1a097bdd43154b538423eb9377e1dcad2f845a
Author: Florian Müllner <fmuellner gnome org>
Date:   Sun May 12 02:58:36 2019 +0200

    accountsMonitor: Take over account-functions from NetworksManager
    
    Conceptually whether an account is predefined or not and the list of its
    servers belong to the account. Now that we use a custom account object,
    it makes sense to move the corresponding NetworksManager functions there.
    
    https://gitlab.gnome.org/GNOME/polari/merge_requests/120

 src/accountsMonitor.js | 36 ++++++++++++++++++++++++++++++++++++
 src/application.js     |  8 ++++----
 src/connections.js     | 23 ++++-------------------
 3 files changed, 44 insertions(+), 23 deletions(-)
---
diff --git a/src/accountsMonitor.js b/src/accountsMonitor.js
index 0beebe4..71f1dc7 100644
--- a/src/accountsMonitor.js
+++ b/src/accountsMonitor.js
@@ -3,6 +3,8 @@
 const { Gio, GObject, Polari, TelepathyGLib: Tp } = imports.gi;
 const Signals = imports.signals;
 
+const { NetworksManager } = imports.networksManager;
+
 var AccountsMonitor = class {
     static getDefault() {
         if (!this._singleton)
@@ -176,6 +178,10 @@ class ClientFactory extends Polari.ClientFactory {
 
 const PolariAccount = GObject.registerClass({
     Properties: {
+        predefined: GObject.ParamSpec.boolean(
+            'predefined', 'predefined', 'predefined',
+            GObject.ParamFlags.READABLE,
+            false),
         visible: GObject.ParamSpec.boolean(
             'visible', 'visible', 'visible',
             GObject.ParamFlags.READWRITE,
@@ -185,9 +191,15 @@ const PolariAccount = GObject.registerClass({
     _init(params) {
         this._visible = true;
 
+        this._networksManager = NetworksManager.getDefault();
+
         super._init(params);
     }
 
+    get predefined() {
+        return this._networksManager.getAccountIsPredefined(this);
+    }
+
     get visible() {
         return this._visible;
     }
@@ -199,4 +211,28 @@ const PolariAccount = GObject.registerClass({
         this._visible = value;
         this.notify('visible');
     }
+
+    getConnectionParams() {
+        let params = this.dup_parameters_vardict().deep_unpack();
+        for (let p in params)
+            params[p] = params[p].deep_unpack();
+
+        params['use-ssl'] = !!params['use-ssl'];
+
+        let defaultPort = params['use-ssl'] ? 6697 : 6667;
+        params['port'] = params['port'] || defaultPort;
+
+        return params;
+    }
+
+    getServers() {
+        if (this.predefined)
+            return this._networksManager.getNetworkServers(this.service);
+
+        let params = this.getConnectionParams();
+        return [{
+            address: params.server,
+            port: params.port
+        }];
+    }
 });
diff --git a/src/application.js b/src/application.js
index 2e45ee1..72344fb 100644
--- a/src/application.js
+++ b/src/application.js
@@ -629,15 +629,15 @@ var Application = GObject.registerClass({
         if (data)
             return data;
 
-        let params = Connections.getAccountParams(account);
+        let params = account.getConnectionParams();
         let server = params['server'];
         let accountName = params['account'];
         let port = params['port'];
         debug(`Failed to connect to ${server} with username ${accountName}`);
 
         let accountServers = [];
-        if (this._networksManager.getAccountIsPredefined(account))
-            accountServers = this._networksManager.getNetworkServers(account.service);
+        if (account.predefined)
+            accountServers = account.getServers();
 
         data = {
             retry: 0,
@@ -649,7 +649,7 @@ var Application = GObject.registerClass({
     }
 
     _getTrimmedAccountName(account) {
-        let params = Connections.getAccountParams(account);
+        let params = account.getConnectionParams();
         return params.account.replace(/_+$/, '');
     }
 
diff --git a/src/connections.js b/src/connections.js
index fc6d4cc..797f8fe 100644
--- a/src/connections.js
+++ b/src/connections.js
@@ -15,19 +15,6 @@ const ErrorHint = {
     NICK: 2
 };
 
-function getAccountParams(account) {
-    let params = account.dup_parameters_vardict().deep_unpack();
-    for (let p in params)
-        params[p] = params[p].deep_unpack();
-
-    params['use-ssl'] = !!params['use-ssl'];
-
-    let defaultPort = params['use-ssl'] ? DEFAULT_SSL_PORT : DEFAULT_PORT;
-    params['port'] = params['port'] || defaultPort;
-
-    return params;
-}
-
 const ConnectionRow = GObject.registerClass(
 class ConnectionRow extends Gtk.ListBoxRow {
     _init(params) {
@@ -193,9 +180,7 @@ var ConnectionsList = GObject.registerClass({
         this._list.foreach(w => w.destroy());
 
         let accounts = this._accountsMonitor.accounts;
-        let usedNetworks = accounts.filter(a => {
-            return this._networksManager.getAccountIsPredefined(a);
-        }).map(a => a.service);
+        let usedNetworks = accounts.filter(a => a.predefined).map(a => a.service);
 
         this._networksManager.networks.forEach(network => {
             if (this._favoritesOnly &&
@@ -236,7 +221,7 @@ var ConnectionsList = GObject.registerClass({
     }
 
     _setAccountRowSensitive(account, sensitive) {
-        if (!this._networksManager.getAccountIsPredefined(account))
+        if (!account.predefined)
             return;
 
         if (!this._rows.has(account.service))
@@ -383,7 +368,7 @@ var ConnectionDetails = GObject.registerClass({
     }
 
     _populateFromAccount(account) {
-        let params = getAccountParams(account);
+        let params = account.getConnectionParams();
 
         this._savedSSL = params['use-ssl'];
         let defaultPort = this._savedSSL ? DEFAULT_SSL_PORT : DEFAULT_PORT;
@@ -420,7 +405,7 @@ var ConnectionDetails = GObject.registerClass({
 
     // eslint-disable-next-line camelcase
     get has_service() {
-        return this._networksManager.getAccountIsPredefined(this._account);
+        return this._account && this._account.predefined;
     }
 
     set account(account) {


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