[polari] telepathyClient: Disconnect accounts when network is unavailable
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari] telepathyClient: Disconnect accounts when network is unavailable
- Date: Sun, 11 Sep 2016 20:19:53 +0000 (UTC)
commit 5434c3beb658f3f471b5ea1ba66837a4c22aeb22
Author: Florian Müllner <fmuellner gnome org>
Date: Mon Aug 1 20:41:49 2016 +0200
telepathyClient: Disconnect accounts when network is unavailable
We currently only request a connection when network is available, to
avoid showing busy spinners for pointless connection attempts. This
works when we start offline and the network becomes available, however
there's no point either in trying to re-establish a connection when
the network goes away, so disconnect explicitly in that case.
https://bugzilla.gnome.org/show_bug.cgi?id=770751
src/telepathyClient.js | 37 +++++++++++++++++++++++++++----------
1 files changed, 27 insertions(+), 10 deletions(-)
---
diff --git a/src/telepathyClient.js b/src/telepathyClient.js
index a3299d0..50b783a 100644
--- a/src/telepathyClient.js
+++ b/src/telepathyClient.js
@@ -192,18 +192,24 @@ const TelepathyClient = new Lang.Class({
this._accountsMonitor.connect('account-enabled', (mon, account) => {
this._connectAccount(account);
});
+
+ this._networkMonitor.connect('notify::network-available',
+ Lang.bind(this, this._onNetworkAvailableChanged));
+ this._onNetworkAvailableChanged();
+ },
+
+ _onNetworkAvailableChanged: function() {
+ let connected = this._networkMonitor.network_available;
+ let presence = connected ? Tp.ConnectionPresenceType.AVAILABLE
+ : Tp.ConnectionPresenceType.OFFLINE;
+ Utils.debug('Network changed to %s'.format(connected ? 'available'
+ : 'unavailable'));
+
this._accountsMonitor.enabledAccounts.forEach(a => {
if (a.connection)
this._onAccountStatusChanged(this._accountsMonitor, a);
else
- this._connectAccount(a);
- });
-
- this._networkMonitor.connect('notify::network-available', () => {
- if (!this._networkMonitor.network_available)
- return;
-
- this._accountsMonitor.enabledAccounts.forEach(this._connectAccount);
+ this._setAccountPresence(a, presence);
});
},
@@ -220,9 +226,20 @@ const TelepathyClient = new Lang.Class({
},
_connectAccount: function(account) {
- let presence = Tp.ConnectionPresenceType.AVAILABLE;
+ this._setAccountPresence(account, Tp.ConnectionPresenceType.AVAILABLE);
+ },
+
+ _setAccountPresence: function(account, presence) {
+ let statuses = Object.keys(Tp.ConnectionPresenceType).map(s =>
+ s.replace('_', '-', 'g').toLowerCase()
+ );
+ let status = statuses[presence];
let msg = account.requested_status_message;
- account.request_presence_async(presence, 'available', msg, (o, res) => {
+ let accountName = account.display_name;
+
+ Utils.debug('Setting presence of account "%s" to %s'.format(accountName,
+ status));
+ account.request_presence_async(presence, status, msg, (o, res) => {
try {
account.request_presence_finish(res);
} catch(e) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]