Просмотр исходного кода

feat: code improvement

https://youtrack.weseek.co.jp/issue/GW-7732
- Modify function to get emoji with skin tone
- Make function async
- Modify markdown configurer function
I Komang Mudana 4 лет назад
Родитель
Сommit
0f34122d7d

+ 19 - 17
packages/app/src/client/util/markdown-it/emoji-mart-data.ts

@@ -10,17 +10,22 @@ const DEFAULT_EMOJI_SIZE = 24;
  * @param skin number
  * @returns emoji data with skin tone
  */
-const emojiSkinTone = (emoji, skin) => {
-  const elem = Emoji({
-    set: 'apple',
-    emoji,
-    skin,
-    size: DEFAULT_EMOJI_SIZE,
+const emojiSkinTone = async(emoji) => {
+  const emojiData = {};
+  [...Array(6).keys()].forEach((index) => {
+    if (index > 0) {
+      const elem = Emoji({
+        set: 'apple',
+        emoji,
+        skin: index + 1,
+        size: DEFAULT_EMOJI_SIZE,
+      });
+      if (elem) {
+        emojiData[`${emoji}::skin-tone-${index + 1}`] = elem.props['aria-label'].split(',')[0];
+      }
+    }
   });
-  if (elem && skin > 0) {
-    return elem.props['aria-label'].split(',')[0];
-  }
-
+  return emojiData;
 };
 
 /**
@@ -29,9 +34,9 @@ const emojiSkinTone = (emoji, skin) => {
  * @returns emoji data
  */
 
-const getNativeEmoji = (emojis) => {
+const getNativeEmoji = async(emojis) => {
   const emojiData = {};
-  emojis.forEach((emoji) => {
+  emojis.forEach(async(emoji) => {
     const elem = Emoji({
       set: 'apple',
       emoji: emoji[0],
@@ -40,11 +45,8 @@ const getNativeEmoji = (emojis) => {
     if (elem) {
       emojiData[emoji[0]] = elem.props['aria-label'].split(',')[0];
       if (emoji[1].skin_variations) {
-        [...Array(6).keys()].forEach((index) => {
-          if (index > 0) {
-            emojiData[`${emoji[0]}::skin-tone-${index + 1}`] = emojiSkinTone(emoji[0], index + 1);
-          }
-        });
+        const emojiWithSkinTone = await emojiSkinTone(emoji[0]);
+        Object.assign(emojiData, emojiWithSkinTone);
       }
     }
   });

+ 4 - 2
packages/app/src/client/util/markdown-it/emoji.js

@@ -7,8 +7,10 @@ export default class EmojiConfigurer {
   }
 
   configure(md) {
-    const data = emojiMartData();
-    md.use(require('markdown-it-emoji-mart'), { defs: data });
+    emojiMartData().then((data) => {
+      console.log(data);
+      md.use(require('markdown-it-emoji-mart'), { defs: data });
+    });
   }
 
 }