diff --git a/app/editor/components/EmojiMenu.tsx b/app/editor/components/EmojiMenu.tsx index 94b1fb4e71..961e7a0925 100644 --- a/app/editor/components/EmojiMenu.tsx +++ b/app/editor/components/EmojiMenu.tsx @@ -2,7 +2,7 @@ import data, { type Emoji as TEmoji, EmojiMartData } from "@emoji-mart/data"; import FuzzySearch from "fuzzy-search"; import capitalize from "lodash/capitalize"; import React from "react"; -import { snakeCase } from "@shared/editor/lib/emoji"; +import { emojiMartToGemoji, snakeCase } from "@shared/editor/lib/emoji"; import EmojiMenuItem from "./EmojiMenuItem"; import SuggestionsMenu, { Props as SuggestionsMenuProps, @@ -38,7 +38,7 @@ const EmojiMenu = (props: Props) => { const result = searcher.search(n).map((item) => { // We snake_case the shortcode for backwards compatability with gemoji to // avoid multiple formats being written into documents. - const shortcode = snakeCase(item.id); + const shortcode = snakeCase(emojiMartToGemoji[item.id] || item.id); const emoji = item.skins[0].native; return { diff --git a/shared/editor/lib/emoji.ts b/shared/editor/lib/emoji.ts index c182dbd89c..763cf45236 100644 --- a/shared/editor/lib/emoji.ts +++ b/shared/editor/lib/emoji.ts @@ -1,12 +1,17 @@ import data, { type EmojiMartData } from "@emoji-mart/data"; -const gemojiToEmojiMart = { - thumbs_up: "+1", - thumbs_down: "-1", +export const emojiMartToGemoji = { + "+1": "thumbs_up", + "-1": "thumbs_down", }; -export const snakeCase = (str: string) => - str.replace(/(\w)(-)(\w)/g, "$1_$2").toLowerCase(); +/** + * Convert kebab case to snake case. + * + * @param str The string to convert + * @returns The converted string + */ +export const snakeCase = (str: string) => str.replace(/(\w)(-)(\w)/g, "$1_$2"); /** * A map of emoji shortcode to emoji character. The shortcode is snake cased @@ -14,8 +19,8 @@ export const snakeCase = (str: string) => */ export const nameToEmoji = Object.values((data as EmojiMartData).emojis).reduce( (acc, emoji) => { - const normalizedId = gemojiToEmojiMart[emoji.id] || emoji.id; - acc[snakeCase(normalizedId)] = emoji.skins[0].native; + const convertedId = snakeCase(emoji.id); + acc[emojiMartToGemoji[convertedId] ?? convertedId] = emoji.skins[0].native; return acc; }, {}