diff --git a/website/src/components/Messages/MessageEmojiButton.tsx b/website/src/components/Messages/MessageEmojiButton.tsx
index 41d256bf..b6aab5bc 100644
--- a/website/src/components/Messages/MessageEmojiButton.tsx
+++ b/website/src/components/Messages/MessageEmojiButton.tsx
@@ -22,7 +22,7 @@ export const MessageEmojiButton = ({ emoji, checked, onClick }: MessageEmojiButt
padding="0"
>
- {emoji.count}
+ {emoji.count > 0 && {emoji.count}}
);
};
diff --git a/website/src/components/Messages/MessageTableEntry.tsx b/website/src/components/Messages/MessageTableEntry.tsx
index 3fb8d59a..236602e3 100644
--- a/website/src/components/Messages/MessageTableEntry.tsx
+++ b/website/src/components/Messages/MessageTableEntry.tsx
@@ -40,8 +40,11 @@ export function MessageTableEntry({ message, enabled, highlight }: MessageTableE
const router = useRouter();
const [emojiState, setEmojis] = useState({ emojis: {}, user_emojis: [] });
useEffect(() => {
+ const emojis = { ...message.emojis };
+ emojis["+1"] = emojis["+1"] || 0;
+ emojis["-1"] = emojis["-1"] || 0;
setEmojis({
- emojis: message?.emojis || {},
+ emojis: emojis,
user_emojis: message?.user_emojis || [],
});
}, [message.emojis, message.user_emojis]);
@@ -72,7 +75,11 @@ export function MessageTableEntry({ message, enabled, highlight }: MessageTableE
const highlightColor = useColorModeValue(colors.light.active, colors.dark.active);
const { trigger: sendEmojiChange } = useSWRMutation(`/api/messages/${message.id}/emoji`, post, {
- onSuccess: setEmojis,
+ onSuccess: (data) => {
+ data.emojis["+1"] = data.emojis["+1"] || 0;
+ data.emojis["-1"] = data.emojis["-1"] || 0;
+ setEmojis(data);
+ },
});
const react = (emoji: string, state: boolean) => {
sendEmojiChange({ op: state ? "add" : "remove", emoji });
@@ -102,14 +109,17 @@ export function MessageTableEntry({ message, enabled, highlight }: MessageTableE
>
{Object.entries(emojiState.emojis)
.filter(([emoji]) => isKnownEmoji(emoji))
- .map(([emoji, count]) => (
- react(emoji, !emojiState.user_emojis.includes(emoji))}
- />
- ))}
+ .sort(([emoji]) => -emoji)
+ .map(([emoji, count]) => {
+ return (
+ react(emoji, !emojiState.user_emojis.includes(emoji))}
+ />
+ );
+ })}