diff --git a/app/soapbox/features/emoji/index.ts b/app/soapbox/features/emoji/index.ts index 57ed0741d..3fe6d10a0 100644 --- a/app/soapbox/features/emoji/index.ts +++ b/app/soapbox/features/emoji/index.ts @@ -68,10 +68,23 @@ const convertCustom = (shortname: string, filename: string) => { return `${shortname}`; }; +function replaceAll(str: string, find: string, replace: string) { + return str.replace(new RegExp(find, 'g'), replace); +} + const convertUnicode = (c: string) => { const { unified, shortcode } = unicodeMapping[c]; - return `${c}`; + let hex; + + // TODO: move to mapping.ts + if (unified.includes('200d') && unified !== '1f441-fe0f-200d-1f5e8-fe0f') { + hex = unified; + } else { + hex = replaceAll(unified, '-fe0f', ''); + } + + return `${c}`; }; const convertEmoji = (str: string, customEmojis: any) => { @@ -100,13 +113,20 @@ export const emojifyText = (str: string, customEmojis = {}) => { }; for (const c of split(str)) { + const unqualified = c + String.fromCodePoint(65039); + if (c in unicodeMapping) { if (open) { // unicode emoji inside colon clearStack(); } buf += convertUnicode(c); + } else if (unqualified in unicodeMapping) { + if (open) { // unicode emoji inside colon + clearStack(); + } + buf += convertUnicode(unqualified); } else if (c === ':') { stack += ':'; diff --git a/yarn.lock b/yarn.lock index f7ca40a78..54e25d2e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5039,6 +5039,11 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +emoji-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/emoji-unicode/-/emoji-unicode-2.0.1.tgz#37b05f0cd20254fd366d1df4442b5c613a3a021a" + integrity sha512-jjswgV5nR3KDqtC9ugzEOYQaBLLQP5hqaH2tiTBaq9maYpMnmvl9T+ogY3u2bN6O5NAP0Ddh9D+Meo7sfW/1uw== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -7696,7 +7701,7 @@ json5@^2.1.0, json5@^2.1.2, json5@^2.2.1: jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6"