@@ 565,42 565,44 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
}
xmppConnectionService.checkIfMuc(account, contactJid, (isMuc) -> {
- if (isMuc) {
- if (save) {
- Bookmark bookmark = account.getBookmark(contactJid);
- if (bookmark != null) {
- openConversationsForBookmark(bookmark);
- } else {
- bookmark = new Bookmark(account, contactJid.asBareJid());
- bookmark.setAutojoin(getBooleanPreference("autojoin", R.bool.autojoin));
- final String nick = contactJid.getResource();
- if (nick != null && !nick.isEmpty() && !nick.equals(MucOptions.defaultNick(account))) {
- bookmark.setNick(nick);
+ runOnUiThread(() -> {
+ if (isMuc) {
+ if (save) {
+ Bookmark bookmark = account.getBookmark(contactJid);
+ if (bookmark != null) {
+ openConversationsForBookmark(bookmark);
+ } else {
+ bookmark = new Bookmark(account, contactJid.asBareJid());
+ bookmark.setAutojoin(getBooleanPreference("autojoin", R.bool.autojoin));
+ final String nick = contactJid.getResource();
+ if (nick != null && !nick.isEmpty() && !nick.equals(MucOptions.defaultNick(account))) {
+ bookmark.setNick(nick);
+ }
+ xmppConnectionService.createBookmark(account, bookmark);
+ final Conversation conversation = xmppConnectionService
+ .findOrCreateConversation(account, contactJid, true, true, true);
+ bookmark.setConversation(conversation);
+ switchToConversationDoNotAppend(conversation, invite == null ? null : invite.getBody());
}
- xmppConnectionService.createBookmark(account, bookmark);
- final Conversation conversation = xmppConnectionService
- .findOrCreateConversation(account, contactJid, true, true, true);
- bookmark.setConversation(conversation);
+ } else {
+ final Conversation conversation = xmppConnectionService.findOrCreateConversation(account, contactJid, true, true, true);
switchToConversationDoNotAppend(conversation, invite == null ? null : invite.getBody());
}
} else {
- final Conversation conversation = xmppConnectionService.findOrCreateConversation(account, contactJid, true, true, true);
- switchToConversationDoNotAppend(conversation, invite == null ? null : invite.getBody());
- }
- } else {
- if (save) {
- final String preAuth = invite == null ? null : invite.getParameter(XmppUri.PARAMETER_PRE_AUTH);
- xmppConnectionService.createContact(contact, true, preAuth);
- if (invite != null && invite.hasFingerprints()) {
- xmppConnectionService.verifyFingerprints(contact, invite.getFingerprints());
+ if (save) {
+ final String preAuth = invite == null ? null : invite.getParameter(XmppUri.PARAMETER_PRE_AUTH);
+ xmppConnectionService.createContact(contact, true, preAuth);
+ if (invite != null && invite.hasFingerprints()) {
+ xmppConnectionService.verifyFingerprints(contact, invite.getFingerprints());
+ }
}
+ switchToConversationDoNotAppend(contact, invite == null ? null : invite.getBody(), call ? "call" : null);
}
- switchToConversationDoNotAppend(contact, invite == null ? null : invite.getBody(), call ? "call" : null);
- }
- try {
- dialog.dismiss();
- } catch (final IllegalStateException e) { }
+ try {
+ dialog.dismiss();
+ } catch (final IllegalStateException e) { }
+ });
});
return false;