diff --git a/indexedDb/impl/dm/implementation.go b/indexedDb/impl/dm/implementation.go index e4c314a09b5c639a0012355c3acb1f3fc59ab6b7..d43df179e70100a85b34645b95921ed3b1c7b85e 100644 --- a/indexedDb/impl/dm/implementation.go +++ b/indexedDb/impl/dm/implementation.go @@ -238,6 +238,7 @@ func (w *wasmModel) receiveWrapper(messageID message.ID, parentID *message.ID, n jww.DEBUG.Printf( "[DM indexedDB] Conversation with %s already joined", nickname) + updateConversation := false // Update Conversation if nickname was altered isFromPartner := bytes.Equal(result.Pubkey, senderKey) nicknameChanged := result.Nickname != nickname @@ -245,13 +246,28 @@ func (w *wasmModel) receiveWrapper(messageID message.ID, parentID *message.ID, n jww.DEBUG.Printf( "[DM indexedDB] Updating from nickname %s to %s", result.Nickname, nickname) - err = w.upsertConversation(nickname, result.Pubkey, result.Token, - result.CodesetVersion, result.Blocked) + updateConversation = true + } + + // Fix conversation if dmToken is altered + dmTokenChanged := result.Token != dmToken + if isFromPartner && dmTokenChanged { + jww.WARN.Printf( + "[DM indexedDB] Updating from dmToken %s to %s", + result.Token, dmToken) + updateConversation = true + } + + if updateConversation { + err = w.upsertConversation(nickname, result.Pubkey, + result.Token, result.CodesetVersion, + result.Blocked) if err != nil { return 0, err } conversationUpdated = true } + } // Handle encryption, if it is present