diff --git a/web/chat/message-tooltip.react.js b/web/chat/message-tooltip.react.js --- a/web/chat/message-tooltip.react.js +++ b/web/chat/message-tooltip.react.js @@ -173,20 +173,19 @@ const nextLocalID = useSelector(state => state.nextLocalID); const localID = `${localIDPrefix}${nextLocalID}`; - const sendReaction = useSendReaction(messageInfo.id, localID, threadInfo.id); + const sendReaction = useSendReaction( + messageInfo.id, + localID, + threadInfo.id, + reactions, + ); const onEmojiSelect = React.useCallback( emoji => { const reactionInput = emoji.native; - - const viewerReacted = reactions[reactionInput] - ? reactions[reactionInput].viewerReacted - : false; - const action = viewerReacted ? 'remove_reaction' : 'add_reaction'; - - sendReaction(reactionInput, action); + sendReaction(reactionInput); }, - [sendReaction, reactions], + [sendReaction], ); const emojiKeyboard = React.useMemo(() => { diff --git a/web/chat/reaction-message-utils.js b/web/chat/reaction-message-utils.js --- a/web/chat/reaction-message-utils.js +++ b/web/chat/reaction-message-utils.js @@ -8,6 +8,7 @@ sendReactionMessageActionTypes, } from 'lib/actions/message-actions.js'; import { useModalContext } from 'lib/components/modal-provider.react.js'; +import type { ReactionInfo } from 'lib/selectors/chat-selectors'; import { messageTypes } from 'lib/types/message-types-enum.js'; import type { RawReactionMessageInfo } from 'lib/types/messages/reaction.js'; import { @@ -28,7 +29,8 @@ messageID: ?string, localID: string, threadID: string, -): (reaction: string, action: 'add_reaction' | 'remove_reaction') => mixed { + reactions: ReactionInfo, +): (reaction: string) => mixed { const { pushModal } = useModalContext(); const viewerID = useSelector( @@ -39,13 +41,18 @@ const dispatchActionPromise = useDispatchActionPromise(); return React.useCallback( - (reaction, action) => { + reaction => { if (!messageID) { return; } invariant(viewerID, 'viewerID should be set'); + const viewerReacted = reactions[reaction] + ? reactions[reaction].viewerReacted + : false; + const action = viewerReacted ? 'remove_reaction' : 'add_reaction'; + const reactionMessagePromise = (async () => { try { const result = await callSendReactionMessage({ @@ -97,6 +104,7 @@ [ messageID, viewerID, + reactions, threadID, localID, dispatchActionPromise,