From 3d221f8925785079d446d706bf5629e1f346a4f3 Mon Sep 17 00:00:00 2001 From: Mehdi Zibout <113536090+mehdi-zibout@users.noreply.github.com> Date: Mon, 6 Feb 2023 20:59:22 +0100 Subject: [PATCH] Expose thumbs up/down buttons in the message table (#1185) * Expose thumbs up/down buttons in the message table * show thumbs up/down count only when its greater than 0 --- .../Messages/MessageEmojiButton.tsx | 2 +- .../components/Messages/MessageTableEntry.tsx | 30 ++++++++++++------- 2 files changed, 21 insertions(+), 11 deletions(-) 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))} + /> + ); + })}