From e208b562800c6f4adb0daed858e12caa27cdd516 Mon Sep 17 00:00:00 2001 From: "Didier (did)" Date: Thu, 6 Apr 2023 11:03:29 +0000 Subject: [PATCH] [FIX] mail: fix traceback when deleting a link preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes odoo/odoo#117908 Signed-off-by: Alexandre Kühn (aku) --- addons/mail/static/src/core/messaging_service.js | 4 ++-- .../helpers/mock_server/controllers/discuss.js | 14 ++++++++++++++ .../mail/static/tests/message/link_preview_test.js | 8 ++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/addons/mail/static/src/core/messaging_service.js b/addons/mail/static/src/core/messaging_service.js index 5fbb9b5472c..0c871bdd5a6 100644 --- a/addons/mail/static/src/core/messaging_service.js +++ b/addons/mail/static/src/core/messaging_service.js @@ -258,10 +258,10 @@ export class Messaging { case "mail.link.preview/delete": { const { id, message_id } = notif.payload; - const index = this.store.messages[message_id].linkPreviews.findIndex( + removeFromArrayWithPredicate( + this.store.messages[message_id].linkPreviews, (linkPreview) => linkPreview.id === id ); - delete this.store.messages[message_id].linkPreviews[index]; } break; case "mail.message/inbox": { diff --git a/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js b/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js index 4387dd8a545..117617725ed 100644 --- a/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js +++ b/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js @@ -73,6 +73,20 @@ patch(MockServer.prototype, "mail/controllers/discuss", { if (route === "/mail/link_preview") { return this._mockRouteMailLinkPreview(args.message_id); } + if (route == "/mail/link_preview/delete") { + const [linkPreview] = this.pyEnv["mail.link.preview"].searchRead([ + ["id", "=", args.link_preview_id], + ]); + this.pyEnv["bus.bus"]._sendone( + this.pyEnv.currentPartnerId, + "mail.link.preview/delete", + { + id: linkPreview.id, + message_id: linkPreview.message_id[0], + } + ); + return args; + } if (route === "/mail/load_message_failures") { return this._mockRouteMailLoadMessageFailures(); } diff --git a/addons/mail/static/tests/message/link_preview_test.js b/addons/mail/static/tests/message/link_preview_test.js index a60e1e95ec2..886bd2c618d 100644 --- a/addons/mail/static/tests/message/link_preview_test.js +++ b/addons/mail/static/tests/message/link_preview_test.js @@ -165,6 +165,8 @@ QUnit.test("Remove link preview Gif", async (assert) => { await openDiscuss(channelId); await click(".o-mail-LinkPreviewImage button[aria-label='Remove']"); assert.containsOnce($, "p:contains(Do you really want to delete this preview?)"); + await click(".modal-footer button:contains(Ok)"); + assert.containsNone($, ".o-mail-LinkPreviewImage"); }); QUnit.test("Remove link preview card", async (assert) => { @@ -187,6 +189,8 @@ QUnit.test("Remove link preview card", async (assert) => { await openDiscuss(channelId); await click(".o-mail-LinkPreviewCard button[aria-label='Remove']"); assert.containsOnce($, "p:contains(Do you really want to delete this preview?)"); + await click(".modal-footer button:contains(Ok)"); + assert.containsNone($, ".o-mail-LinkPreviewCard"); }); QUnit.test("Remove link preview video", async (assert) => { @@ -210,6 +214,8 @@ QUnit.test("Remove link preview video", async (assert) => { await openDiscuss(channelId); await click(".o-mail-LinkPreviewVideo button[aria-label='Remove']"); assert.containsOnce($, "p:contains(Do you really want to delete this preview?)"); + await click(".modal-footer button:contains(Ok)"); + assert.containsNone($, ".o-mail-LinkPreviewVideo"); }); QUnit.test("Remove link preview image", async (assert) => { @@ -231,4 +237,6 @@ QUnit.test("Remove link preview image", async (assert) => { await openDiscuss(channelId); await click(".o-mail-LinkPreviewImage button[aria-label='Remove']"); assert.containsOnce($, "p:contains(Do you really want to delete this preview?)"); + await click(".modal-footer button:contains(Ok)"); + assert.containsNone($, ".o-mail-LinkPreviewImage"); });