userMenu: Delay restoring presence until the network comes up
Trying to connect to IM servers while offline is pointless, in particular now that we added a progress indication which makes the connection attempt very visible. To fix, wait for the network to become available until restoring a previous IM presence. https://bugzilla.gnome.org/show_bug.cgi?id=677982
This commit is contained in:
parent
a2e0e0ad06
commit
0f065ebce6
@ -205,20 +205,19 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
Lang.bind(this, this._IMAccountsChanged));
|
Lang.bind(this, this._IMAccountsChanged));
|
||||||
this._accountMgr.prepare_async(null, Lang.bind(this,
|
this._accountMgr.prepare_async(null, Lang.bind(this,
|
||||||
function(mgr) {
|
function(mgr) {
|
||||||
let [presence, status, msg] = mgr.get_most_available_presence();
|
|
||||||
|
|
||||||
let savedPresence = global.settings.get_int('saved-im-presence');
|
|
||||||
|
|
||||||
this._IMAccountsChanged(mgr);
|
this._IMAccountsChanged(mgr);
|
||||||
|
|
||||||
if (savedPresence == presence) {
|
if (this._networkMonitor.network_available)
|
||||||
this._IMStatusChanged(mgr, presence, status, msg);
|
this._restorePresence();
|
||||||
} else {
|
else
|
||||||
this._setComboboxPresence(savedPresence);
|
this._setComboboxPresence(Tp.ConnectionPresenceType.OFFLINE);
|
||||||
status = this._statusForPresence(savedPresence);
|
}));
|
||||||
msg = msg ? msg : '';
|
|
||||||
mgr.set_all_requested_presences(savedPresence, status, msg);
|
this._networkMonitor = Gio.NetworkMonitor.get_default();
|
||||||
}
|
this._networkMonitor.connect('network-changed',
|
||||||
|
Lang.bind(this, function(monitor, available) {
|
||||||
|
if (available && !this._imPresenceRestored)
|
||||||
|
this._restorePresence();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._userLoadedId = this._user.connect('notify::is-loaded',
|
this._userLoadedId = this._user.connect('notify::is-loaded',
|
||||||
@ -233,6 +232,21 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_restorePresence: function() {
|
||||||
|
let [presence, status, msg] = this._accountMgr.get_most_available_presence();
|
||||||
|
|
||||||
|
let savedPresence = global.settings.get_int('saved-im-presence');
|
||||||
|
|
||||||
|
if (savedPresence == presence) {
|
||||||
|
this._IMStatusChanged(this._accountMgr, presence, status, msg);
|
||||||
|
} else {
|
||||||
|
this._setComboboxPresence(savedPresence);
|
||||||
|
status = this._statusForPresence(savedPresence);
|
||||||
|
msg = msg ? msg : '';
|
||||||
|
this._accountMgr.set_all_requested_presences(savedPresence, status, msg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
// clean up signal handlers
|
// clean up signal handlers
|
||||||
if (this._userLoadedId != 0) {
|
if (this._userLoadedId != 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user