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); Xmpp.XmppStream? stream = stream_interactor.get_stream(account);
if (!Application.get_default().settings.notifications) return NotifySetting.OFF; if (!Application.get_default().settings.notifications) return NotifySetting.OFF;
if (type_ == Type.GROUPCHAT) { 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); Xmpp.Xep.Muc.Flag flag = stream.get_flag(Xmpp.Xep.Muc.Flag.IDENTITY);
return members_only ? NotifySetting.ON : NotifySetting.HIGHLIGHT; 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; return NotifySetting.ON;
} }

View file

@ -121,7 +121,7 @@ public class ConnectionManager {
} }
public void make_offline_all() { public void make_offline_all() {
foreach (Account account in connection_todo) { foreach (Account account in connections.keys) {
make_offline(account); make_offline(account);
} }
} }
@ -134,13 +134,17 @@ public class ConnectionManager {
} }
public void disconnect(Account account) { 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)) { 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 { try {
make_offline(account); make_offline(account);
connections[account].stream.disconnect(); 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 { } else {
print("Device un-suspend\n"); print("Device un-suspend\n");