Show pack icon or first emoji as fallback in EmojiBoard sidebar
authorAjay Bura <ajbura@gmail.com>
Thu, 30 Dec 2021 07:16:48 +0000 (12:46 +0530)
committerAjay Bura <ajbura@gmail.com>
Thu, 30 Dec 2021 07:16:48 +0000 (12:46 +0530)
Signed-off-by: Ajay Bura <ajbura@gmail.com>
src/app/organisms/emoji-board/EmojiBoard.jsx
src/app/organisms/emoji-board/EmojiBoard.scss

index fa28b4dafbb0ff1b6234d2b4b7f242ed170958ea..74639ade11ce4d3a43e048293c4cc2518da3c37e 100644 (file)
@@ -20,7 +20,6 @@ import Input from '../../atoms/input/Input';
 import ScrollView from '../../atoms/scroll/ScrollView';
 
 import SearchIC from '../../../../public/res/ic/outlined/search.svg';
-import StarIC from '../../../../public/res/ic/outlined/star.svg';
 import EmojiIC from '../../../../public/res/ic/outlined/emoji.svg';
 import DogIC from '../../../../public/res/ic/outlined/dog.svg';
 import CupIC from '../../../../public/res/ic/outlined/cup.svg';
@@ -65,7 +64,7 @@ function EmojiGroup({ name, groupEmojis }) {
                     alt={emoji.shortcode}
                     unicode={`:${emoji.shortcode}:`}
                     shortcodes={emoji.shortcode}
-                    src={initMatrix.matrixClient.mxcUrlToHttp(emoji.mxc, 38, 38, 'crop')}
+                    src={initMatrix.matrixClient.mxcUrlToHttp(emoji.mxc)}
                     data-mx-emoticon
                   />
                 )
@@ -263,18 +262,23 @@ function EmojiBoard({ onSelect }) {
       </div>
       <ScrollView invisible>
         <div className="emoji-board__nav">
-          {
-            availableEmojis.map((pack) => (
-              // TODO (future PR?):  Use the pack icon, and only use StarIC as a fallback
-              <IconButton
-                onClick={() => openGroup(pack.packIndex)}
-                src={StarIC}
-                key={pack.packIndex}
-                tooltip={pack.displayName}
-                tooltipPlacement="right"
-              />
-            ))
-          }
+          <div className="emoji-board__nav-custom">
+            {
+              availableEmojis.map((pack) => {
+                const src = initMatrix.matrixClient.mxcUrlToHttp(pack.avatar ?? pack.images[0].mxc);
+                return (
+                  <IconButton
+                    onClick={() => openGroup(pack.packIndex)}
+                    src={src}
+                    key={pack.packIndex}
+                    tooltip={pack.displayName}
+                    tooltipPlacement="right"
+                    isImage
+                  />
+                );
+              })
+            }
+          </div>
           {
             [
               [0, EmojiIC, 'Smilies'],
index 752b074e343611bc3f56c5bdf97f1ebea0bae264..5983d00689c2b64b367b2532d0e4d81e1acf9b6f 100644 (file)
     background-color: var(--bg-surface-low);
     @include dir.side(border, 1px solid var(--bg-surface-border), none);
 
-    & .ic-btn-surface {
+    & .ic-btn-surface {
       margin: calc(var(--sp-ultra-tight) / 2) 0;
       opacity: 0.8;
     }
   }
+  &__nav-custom {
+    @extend .cp-fx__column;
+    border-bottom: 1px solid var(--bg-surface-border);
+    
+    & .ic-btn-surface {
+      & .ic-raw {
+        filter: grayscale(1);
+      }
+      &:hover, &:active, &:focus {
+        & .ic-raw {
+          filter: grayscale(0);
+        }
+      }
+    }
+  }
 }
 
 .emoji-board__content__search {