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))} + /> + ); + })}