]> cat aescling's git repositories - mastodon.git/commitdiff
[Glitch] Fixed emoji detection problem to append border
authorfuyu <54523771+mfmfuyu@users.noreply.github.com>
Wed, 10 Jun 2020 19:56:14 +0000 (04:56 +0900)
committerThibaut Girka <thib@sitedethib.com>
Wed, 17 Jun 2020 15:18:42 +0000 (17:18 +0200)
Port b1484cf3ceebe1f1f083e4c06872493dc0a68511 to glitch-soc

Co-authored-by: ThibG <thib@sitedethib.com>
Signed-off-by: Thibaut Girka <thib@sitedethib.com>
app/javascript/flavours/glitch/util/emoji/index.js

index 22b657b05b0b63581303a93b00d5a13b4262659b..61f211c92baab5e0ddebc48f1784baebbd8f1e52 100644 (file)
@@ -6,13 +6,18 @@ const trie = new Trie(Object.keys(unicodeMapping));
 
 const assetHost = process.env.CDN_HOST || '';
 
+// Convert to file names from emojis. (For different variation selector emojis)
+const emojiFilenames = (emojis) => {
+  return emojis.map(v => unicodeMapping[v].filename);
+};
+
 // Emoji requiring extra borders depending on theme
-const darkEmoji = '🎱🐜âšĢ🖤âŦ›â—ŧī¸â—žâ—ŧī¸âœ’ī¸â–Ēī¸đŸ’ŖđŸŽŗđŸ“ˇđŸ“¸â™Ŗī¸đŸ•ļī¸âœ´ī¸đŸ”ŒđŸ’‚â€â™€ī¸đŸ“Ŋī¸đŸŗđŸĻđŸ’‚đŸ”ĒđŸ•ŗī¸đŸ•šī¸đŸ•‹đŸ–Šī¸đŸ–‹ī¸đŸ’‚â€â™‚ī¸đŸŽ¤đŸŽ“đŸŽĨđŸŽŧâ™ ī¸đŸŽŠđŸĻƒđŸ“ŧ📹🎮🐃🏴';
-const lightEmoji = 'đŸ‘ŊâšžđŸ”â˜ī¸đŸ’¨đŸ•Šī¸đŸ‘€đŸĨđŸ‘ģđŸâ•â”â›¸ī¸đŸŒŠī¸đŸ”ŠđŸ”‡đŸ“ƒđŸŒ§ī¸đŸđŸšđŸ™đŸ“đŸ‘đŸ’€â˜ ī¸đŸŒ¨ī¸đŸ”‰đŸ”ˆđŸ’ŦđŸ’­đŸđŸŗī¸âšĒâŦœâ—Ŋâ—ģī¸â–Ģī¸';
+const darkEmoji = emojiFilenames(['🎱', '🐜', 'âšĢ', '🖤', 'âŦ›', 'â—ŧī¸', '◾', 'â—ŧī¸', 'âœ’ī¸', 'â–Ēī¸', 'đŸ’Ŗ', 'đŸŽŗ', '📷', '📸', 'â™Ŗī¸', 'đŸ•ļī¸', 'âœ´ī¸', '🔌', 'đŸ’‚â€â™€ī¸', 'đŸ“Ŋī¸', 'đŸŗ', 'đŸĻ', '💂', 'đŸ”Ē', 'đŸ•ŗī¸', 'đŸ•šī¸', '🕋', 'đŸ–Šī¸', 'đŸ–‹ī¸', 'đŸ’‚â€â™‚ī¸', '🎤', '🎓', 'đŸŽĨ', 'đŸŽŧ', 'â™ ī¸', '🎩', 'đŸĻƒ', 'đŸ“ŧ', '📹', '🎮', '🐃', '🏴']);
+const lightEmoji = emojiFilenames(['đŸ‘Ŋ', '⚾', '🐔', 'â˜ī¸', '💨', 'đŸ•Šī¸', '👀', 'đŸĨ', 'đŸ‘ģ', '🐐', '❕', '❔', 'â›¸ī¸', 'đŸŒŠī¸', '🔊', '🔇', '📃', 'đŸŒ§ī¸', '🐏', '🍚', '🍙', '🐓', '🐑', '💀', 'â˜ ī¸', 'đŸŒ¨ī¸', '🔉', '🔈', 'đŸ’Ŧ', '💭', '🏐', 'đŸŗī¸', 'âšĒ', 'âŦœ', 'â—Ŋ', 'â—ģī¸', 'â–Ģī¸']);
 
-const emojiFilename = (filename, match) => {
+const emojiFilename = (filename) => {
   const borderedEmoji = (document.body && document.body.classList.contains('skin-mastodon-light')) ? lightEmoji : darkEmoji;
-  return borderedEmoji.includes(match) ? (filename + '_border') : filename;
+  return borderedEmoji.includes(filename) ? (filename + '_border') : filename;
 };
 
 const emojify = (str, customEmojis = {}) => {
@@ -69,7 +74,7 @@ const emojify = (str, customEmojis = {}) => {
     } else if (!useSystemEmojiFont) { // matched to unicode emoji
       const { filename, shortCode } = unicodeMapping[match];
       const title = shortCode ? `:${shortCode}:` : '';
-      replacement = `<img draggable="false" class="emojione" alt="${match}" title="${title}" src="${assetHost}/emoji/${emojiFilename(filename, match)}.svg" />`;
+      replacement = `<img draggable="false" class="emojione" alt="${match}" title="${title}" src="${assetHost}/emoji/${emojiFilename(filename)}.svg" />`;
       rend = i + match.length;
       // If the matched character was followed by VS15 (for selecting text presentation), skip it.
       if (str.codePointAt(rend) === 65038) {