diff --git a/addons/mail/static/src/core/common/message_reactions_model.js b/addons/mail/static/src/core/common/message_reactions_model.js index 4110fc7331e..7ab774dd964 100644 --- a/addons/mail/static/src/core/common/message_reactions_model.js +++ b/addons/mail/static/src/core/common/message_reactions_model.js @@ -13,9 +13,10 @@ export class MessageReactions extends Record { * @returns {import("models").MessageReactions} */ static insert(data) { - let reaction = this.store.Message.get(data.message.id)?.reactions.find( - ({ content }) => content === data.content - ); + if (data.message && !(data.message instanceof Record)) { + data.message = this.store.Message.insert(data.message); + } + let reaction = data.message.reactions.find(({ content }) => content === data.content); if (!reaction) { /** @type {import("models").MessageReactions} */ reaction = this.preinsert(data); @@ -46,7 +47,7 @@ export class MessageReactions extends Record { count: data.count, content: data.content, message: data.message, - personas: reaction.personas.filter((p) => !personasToUnlink.has(p)), + personas: reaction.personas.filter((p) => !personasToUnlink.has(p.localId)), }); return reaction; } diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_message.js b/addons/mail/static/tests/helpers/mock_server/models/mail_message.js index 11bf3b576ad..65eb1a299ec 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_message.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_message.js @@ -78,7 +78,10 @@ patch(MockServer.prototype, { guests: [], message: { id: messageId }, partners: [ - ["ADD", { id: this.pyEnv.currentPartnerId, name: currentPartner.name }], + [ + action === "add" ? "ADD" : "DELETE", + { id: this.pyEnv.currentPartnerId, name: currentPartner.name }, + ], ], }, ], diff --git a/addons/mail/static/tests/message/message_tests.js b/addons/mail/static/tests/message/message_tests.js index e9ec4f7f4ba..17d1c32e481 100644 --- a/addons/mail/static/tests/message/message_tests.js +++ b/addons/mail/static/tests/message/message_tests.js @@ -531,6 +531,8 @@ QUnit.test("Two users reacting with the same emoji", async () => { await contains(".o-mail-MessageReaction", { text: "😅2" }); await click(".o-mail-MessageReaction"); await contains(".o-mail-MessageReaction", { text: "😅1" }); + await click(".o-mail-MessageReaction"); + await contains(".o-mail-MessageReaction", { text: "😅2" }); }); QUnit.test("Reaction summary", async () => {