diff --git a/addons/mail/static/src/core/messaging_service.js b/addons/mail/static/src/core/messaging_service.js index 77b9ae65884..6d53c7ec59c 100644 --- a/addons/mail/static/src/core/messaging_service.js +++ b/addons/mail/static/src/core/messaging_service.js @@ -276,6 +276,11 @@ export class Messaging { inbox.messages.push(message); inbox.counter++; } + const thread = message.originThread; + if (!thread.needactionMessages.includes(message)) { + thread.needactionMessages.push(message); + thread.message_needaction_counter++; + } break; } case "mail.message/delete": { diff --git a/addons/mail/static/src/web/messaging_menu/notification_item.js b/addons/mail/static/src/web/messaging_menu/notification_item.js index a3fe4fd7483..4c3ba754b04 100644 --- a/addons/mail/static/src/web/messaging_menu/notification_item.js +++ b/addons/mail/static/src/web/messaging_menu/notification_item.js @@ -13,7 +13,7 @@ export class NotificationItem extends Component { "datetime?", "displayName", "hasMarkAsReadButton?", - "iconSrc", + "iconSrc?", "isLast", "onClick", "onSwipeLeft?", diff --git a/addons/mail/static/tests/messaging_menu/messaging_menu_tests.js b/addons/mail/static/tests/messaging_menu/messaging_menu_tests.js index 7c55deb0cb5..06c644a3ee2 100644 --- a/addons/mail/static/tests/messaging_menu/messaging_menu_tests.js +++ b/addons/mail/static/tests/messaging_menu/messaging_menu_tests.js @@ -944,3 +944,24 @@ QUnit.test("failure notifications are shown before channel preview", async (asse ".o-mail-NotificationItem:contains(An error occurred when sending an email) ~ .o-mail-NotificationItem:contains(message)" ); }); + +QUnit.test("messaging menu should show new needaction messages from chatter", async (assert) => { + const pyEnv = await startServer(); + const partnerId = pyEnv["res.partner"].create({ name: "Frodo Baggins" }); + await start(); + await click(".o_menu_systray i[aria-label='Messages']"); + assert.containsNone($, ".o-mail-NotificationItem:contains(@Mitchell Admin)"); + + // simulate receiving a new needaction message + await afterNextRender(() => { + pyEnv["bus.bus"]._sendone(pyEnv.currentPartner, "mail.message/inbox", { + body: "@Mitchell Admin", + id: 100, + needaction_partner_ids: [pyEnv.currentPartnerId], + model: "res.partner", + res_id: partnerId, + record_name: "Frodo Baggins", + }); + }); + assert.containsOnce($, ".o-mail-NotificationItem:contains(@Mitchell Admin)"); +});