always persist current nick (in bookmark and database)

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/parser/PresenceParser.java          |  4 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 23 
2 files changed, 20 insertions(+), 7 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/parser/PresenceParser.java 🔗

@@ -11,6 +11,7 @@ import eu.siacs.conversations.Config;
 import eu.siacs.conversations.crypto.PgpEngine;
 import eu.siacs.conversations.crypto.axolotl.AxolotlService;
 import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Bookmark;
 import eu.siacs.conversations.entities.Contact;
 import eu.siacs.conversations.entities.Conversation;
 import eu.siacs.conversations.entities.Message;
@@ -74,6 +75,9 @@ public class PresenceParser extends AbstractParser implements
 								mXmppConnectionService.getAvatarService().clear(mucOptions);
 							}
 							mucOptions.setSelf(user);
+
+							mXmppConnectionService.persistSelfNick(user);
+
 							invokeRenameListener(mucOptions, true);
 						}
 						boolean isNew = mucOptions.updateUser(user);

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -2405,6 +2405,22 @@ public class XmppConnectionService extends Service {
 		return false;
 	}
 
+	public void persistSelfNick(MucOptions.User self) {
+		final Conversation conversation = self.getConversation();
+		Jid full = self.getFullJid();
+		if (!full.equals(conversation.getJid())) {
+			Log.d(Config.LOGTAG,"nick changed. updating");
+			conversation.setContactJid(full);
+			databaseBackend.updateConversation(conversation);
+		}
+
+		Bookmark bookmark = conversation.getBookmark();
+		if (bookmark != null && !full.getResourcepart().equals(bookmark.getNick())) {
+			bookmark.setNick(full.getResourcepart());
+			pushBookmarks(bookmark.getAccount());
+		}
+	}
+
 	public boolean renameInMuc(final Conversation conversation, final String nick, final UiCallback<Conversation> callback) {
 		final MucOptions options = conversation.getMucOptions();
 		final Jid joinJid = options.createJoinJid(nick);
@@ -2417,13 +2433,6 @@ public class XmppConnectionService extends Service {
 
 				@Override
 				public void onSuccess() {
-					conversation.setContactJid(joinJid);
-					databaseBackend.updateConversation(conversation);
-					Bookmark bookmark = conversation.getBookmark();
-					if (bookmark != null) {
-						bookmark.setNick(nick);
-						pushBookmarks(bookmark.getAccount());
-					}
 					callback.success(conversation);
 				}