diff --git a/addons/mail/static/src/core/common/emoji_picker.js b/addons/mail/static/src/core/common/emoji_picker.js index d8451609a93..479d14a3b08 100644 --- a/addons/mail/static/src/core/common/emoji_picker.js +++ b/addons/mail/static/src/core/common/emoji_picker.js @@ -19,7 +19,7 @@ import { browser } from "@web/core/browser/browser"; import { _t } from "@web/core/l10n/translation"; import { usePopover } from "@web/core/popover/popover_hook"; import { memoize } from "@web/core/utils/functions"; -import { escapeRegExp } from "@web/core/utils/strings"; +import { fuzzyLookup } from "@web/core/utils/search"; /** * @@ -269,16 +269,8 @@ export class EmojiPicker extends Component { getEmojis() { const search = this.state.searchStr; if (search.length > 1) { - const regexp = new RegExp( - search - .split("") - .map((x) => escapeRegExp(x)) - .join(".*") - ); - return this.emojis.filter((emoji) => - [emoji.name, ...emoji.keywords, ...emoji.emoticons, ...emoji.shortcodes].some((x) => - x.match(regexp) - ) + return fuzzyLookup(this.state.searchStr, this.emojis, (emoji) => + [emoji.name, ...emoji.keywords, ...emoji.emoticons, ...emoji.shortcodes].join(" ") ); } return this.emojis; diff --git a/addons/mail/static/tests/emoji/emoji_tests.js b/addons/mail/static/tests/emoji/emoji_tests.js index 1dc199beea1..8d882fc9f84 100644 --- a/addons/mail/static/tests/emoji/emoji_tests.js +++ b/addons/mail/static/tests/emoji/emoji_tests.js @@ -23,6 +23,16 @@ QUnit.test("search emoji from keywords", async (assert) => { assert.containsOnce($, ".o-mail-Emoji:contains(🌮)"); }); +QUnit.test("search emoji from keywords should be case insensitive", async (assert) => { + const pyEnv = await startServer(); + const channelId = pyEnv["discuss.channel"].create({ name: "" }); + const { openDiscuss } = await start(); + await openDiscuss(channelId); + await click("button[aria-label='Emojis']"); + await insertText("input[placeholder='Search for an emoji']", "ok"); + assert.containsOnce($, ".o-mail-Emoji:contains(🆗)"); // all search terms are uppercase OK +}); + QUnit.test("search emoji from keywords with special regex character", async (assert) => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "" });