Fix runtime criticals

This commit is contained in:
fiaxh 2018-09-16 13:54:47 +02:00
parent 6d947c42b5
commit 9575b192e4
2 changed files with 19 additions and 10 deletions

View file

@ -105,8 +105,11 @@ public class Conversation : Object {
Xmpp.XmppStream? stream = stream_interactor.get_stream(account);
if (!Application.get_default().settings.notifications) return NotifySetting.OFF;
if (type_ == Type.GROUPCHAT) {
bool members_only = stream.get_flag(Xmpp.Xep.Muc.Flag.IDENTITY).has_room_feature(counterpart.bare_jid, Xmpp.Xep.Muc.Feature.MEMBERS_ONLY);
return members_only ? NotifySetting.ON : NotifySetting.HIGHLIGHT;
Xmpp.Xep.Muc.Flag flag = stream.get_flag(Xmpp.Xep.Muc.Flag.IDENTITY);
if (flag != null) {
bool members_only = flag.has_room_feature(counterpart.bare_jid, Xmpp.Xep.Muc.Feature.MEMBERS_ONLY);
return members_only ? NotifySetting.ON : NotifySetting.HIGHLIGHT;
}
}
return NotifySetting.ON;
}

View file

@ -121,7 +121,7 @@ public class ConnectionManager {
}
public void make_offline_all() {
foreach (Account account in connection_todo) {
foreach (Account account in connections.keys) {
make_offline(account);
}
}
@ -134,13 +134,17 @@ public class ConnectionManager {
}
public void disconnect(Account account) {
make_offline(account);
try {
connections[account].stream.disconnect();
} catch (Error e) { print(@"on_prepare_for_sleep error $(e.message)\n"); }
connection_todo.remove(account);
if (connections.has_key(account)) {
connections.unset(account);
make_offline(account);
try {
connections[account].stream.disconnect();
} catch (Error e) {
warning(@"Error disconnecting stream $(e.message)\n");
}
connection_todo.remove(account);
if (connections.has_key(account)) {
connections.unset(account);
}
}
}
@ -283,7 +287,9 @@ public class ConnectionManager {
try {
make_offline(account);
connections[account].stream.disconnect();
} catch (Error e) { print(@"on_prepare_for_sleep error $(e.message)\n"); }
} catch (Error e) {
warning(@"Error disconnecting stream $(e.message)\n");
}
}
} else {
print("Device un-suspend\n");