From a6746497d7c3fcb873c74d0c38dbd4547577a7d8 Mon Sep 17 00:00:00 2001 From: zel-odoo Date: Fri, 15 Mar 2024 13:38:19 +0100 Subject: [PATCH] [FIX] mail: do not display false if missing email MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 'false' is displayed in the popover next to the recipients in the absence of an email address as well as the title of the recipients If the partner has no email, it should show something like "[name] (no email address)]" test added task-3787703 closes odoo/odoo#157850 X-original-commit: 40a2df25301daaf24c123e0b67bff408eb8cd897 Signed-off-by: Sébastien Theys (seb) Signed-off-by: Zelong Lin (zel) --- addons/mail/i18n/mail.pot | 7 +++++ addons/mail/static/src/core/web/chatter.js | 6 ++-- .../static/src/core/web/recipient_list.js | 9 ++++++ .../static/src/core/web/recipient_list.xml | 2 +- .../tests/web/follower_list_menu_tests.js | 28 +++++++++++++++++++ 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/addons/mail/i18n/mail.pot b/addons/mail/i18n/mail.pot index 69766609493..490ffe7340e 100644 --- a/addons/mail/i18n/mail.pot +++ b/addons/mail/i18n/mail.pot @@ -10320,6 +10320,13 @@ msgstr "" msgid "Your name" msgstr "" +#. module: mail +#. odoo-javascript +#: code:addons/mail/static/src/core/web/recipient_list.js:0 +#, python-format +msgid "[%(name)s] (no email address)" +msgstr "" + #. module: mail #. odoo-python #: code:addons/mail/models/mail_alias.py:0 diff --git a/addons/mail/static/src/core/web/chatter.js b/addons/mail/static/src/core/web/chatter.js index 5c09a534049..72c047ba4e0 100644 --- a/addons/mail/static/src/core/web/chatter.js +++ b/addons/mail/static/src/core/web/chatter.js @@ -236,9 +236,9 @@ export class Chatter extends Component { .slice(0, 5) .map(({ partner }) => { const text = partner.email ? partner.emailWithoutDomain : partner.name; - return `${escape( - text - )}`; + return `${escape(text)}`; }); const formatter = new Intl.ListFormat( this.store.env.services["user"].lang?.replace("_", "-"), diff --git a/addons/mail/static/src/core/web/recipient_list.js b/addons/mail/static/src/core/web/recipient_list.js index 6fe45992c18..a2d2cc42f37 100644 --- a/addons/mail/static/src/core/web/recipient_list.js +++ b/addons/mail/static/src/core/web/recipient_list.js @@ -3,6 +3,8 @@ import { useVisible } from "@mail/utils/common/hooks"; import { Component, useState } from "@odoo/owl"; import { useService } from "@web/core/utils/hooks"; +import { _t } from "@web/core/l10n/translation"; +import { sprintf } from "@web/core/utils/strings"; /** * @typedef {Object} Props @@ -22,4 +24,11 @@ export class RecipientList extends Component { } }); } + + getRecipientText(recipient) { + return ( + recipient.partner.email || + sprintf(_t("[%(name)s] (no email address)"), { name: recipient.partner.name }) + ); + } } diff --git a/addons/mail/static/src/core/web/recipient_list.xml b/addons/mail/static/src/core/web/recipient_list.xml index 5b4c7613b9d..866262f746d 100644 --- a/addons/mail/static/src/core/web/recipient_list.xml +++ b/addons/mail/static/src/core/web/recipient_list.xml @@ -5,7 +5,7 @@
  • - +
  • Load more
diff --git a/addons/mail/static/tests/web/follower_list_menu_tests.js b/addons/mail/static/tests/web/follower_list_menu_tests.js index 51f900bd8cc..5df0a3088c2 100644 --- a/addons/mail/static/tests/web/follower_list_menu_tests.js +++ b/addons/mail/static/tests/web/follower_list_menu_tests.js @@ -279,6 +279,34 @@ QUnit.test("Load 100 recipients at once", async () => { await contains(".o-mail-RecipientList span", { count: 0, text: "Load more" }); }); +QUnit.test("Load recipient without email", async () => { + const pyEnv = await startServer(); + const [partnerId_1, partnerId_2] = pyEnv["res.partner"].create([ + { name: "Luigi" }, + { name: "Mario" }, + ]); + pyEnv["mail.followers"].create([ + { + is_active: true, + partner_id: pyEnv.currentPartnerId, + res_id: partnerId_1, + res_model: "res.partner", + }, + { + is_active: true, + partner_id: partnerId_2, + res_id: partnerId_1, + res_model: "res.partner", + }, + ]); + const { openFormView } = await start(); + await openFormView("res.partner", partnerId_1); + await click("button", { text: "Send message" }); + await contains("span[title='no email address']", { text: "Mario" }); + await click("button[title='Show all recipients']"); + await contains(".o-mail-RecipientList li", { text: "[Mario] (no email address)" }); +}); + QUnit.test( 'Show "Add follower" and subtypes edition/removal buttons on all followers if user has write access', async () => {