[polari/wip/bastianilso/irc-url-handling: 5/5] app: extend irc url handling to predefined connections
- From: Bastian Ilsø Hougaard <bastianilso src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari/wip/bastianilso/irc-url-handling: 5/5] app: extend irc url handling to predefined connections
- Date: Sat, 13 Feb 2016 11:40:57 +0000 (UTC)
commit dca7ea700066d5ce5b64050807942e2db23b6df0
Author: Bastian Ilsø <hougaard junior gmail com>
Date: Sat Feb 13 00:57:07 2016 +0100
app: extend irc url handling to predefined connections
src/application.js | 30 ++++++++++++++++++++++++------
src/networksManager.js | 7 +++++++
2 files changed, 31 insertions(+), 6 deletions(-)
---
diff --git a/src/application.js b/src/application.js
index 8397c3c..c618b7f 100644
--- a/src/application.js
+++ b/src/application.js
@@ -12,6 +12,7 @@ const Lang = imports.lang;
const MainWindow = imports.mainWindow;
const PasteManager = imports.pasteManager;
const Utils = imports.utils;
+const NetworksManager = imports.networksManager;
const MAX_RETRIES = 3;
@@ -39,6 +40,7 @@ const Application = new Lang.Class({
this._chatroomManager = ChatroomManager.getDefault();
this._accountsMonitor = AccountsMonitor.getDefault();
this._networkMonitor = Gio.NetworkMonitor.get_default();
+ this._networksManager = NetworksManager.getDefault();
this._accountsMonitor.connect('account-removed', Lang.bind(this,
function(am, account) {
@@ -155,13 +157,24 @@ const Application = new Lang.Class({
_openURIs: function(uris, time) {
let map = {};
- this._accountsMonitor.dupAccounts().forEach(function(a) {
+ this._accountsMonitor.dupAccounts().forEach(Lang.bind(this, function(a) {
if (!a.enabled)
return;
- let params = a.dup_parameters_vardict().deep_unpack();
- map[a.get_object_path()] = params.server.deep_unpack();
- });
+ let servers = [];
+
+ let predefined = this._networksManager.getAccountIsPredefined(a);
+ if (predefined) {
+ this._networksManager.getServers(a).forEach(function(s) {
+ servers.push(s.address);
+ });
+ } else {
+ let params = a.dup_parameters_vardict().deep_unpack();
+ servers = [params.server.deep_unpack()];
+ }
+
+ map[a.get_object_path()] = servers;
+ }));
let action = this.lookup_action('join-room');
uris.forEach(Lang.bind(this, function(uri) {
@@ -180,7 +193,13 @@ const Application = new Lang.Class({
}
let matches = Object.keys(map).filter(function(a) {
- return map[a] == server;
+ let result = false;
+ map[a].forEach(function(s) {
+ if (s == server)
+ result = true;
+ return;
+ });
+ return result;
});
if (!matches.length) {
@@ -193,7 +212,6 @@ const Application = new Lang.Class({
Lang.bind(this, function(widget) {
widget.destroy();
}));
-
log("No matching account");
return;
}
diff --git a/src/networksManager.js b/src/networksManager.js
index 65f472e..2859d69 100644
--- a/src/networksManager.js
+++ b/src/networksManager.js
@@ -91,6 +91,13 @@ const NetworksManager = new Lang.Class({
});
return [network.name.toLowerCase(),
network.id.toLowerCase()].concat(servers);
+ },
+
+ getServers: function(account) {
+ if (!account)
+ throw new Error('Missing account argument');
+ return this._lookupNetwork(account.service).servers;
}
+
});
Signals.addSignalMethods(NetworksManager.prototype);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]