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 @@ -1,5 +1,6 @@ // @flow +import invariant from 'invariant'; import * as React from 'react'; import { @@ -7,12 +8,15 @@ sendReactionMessageActionTypes, } from 'lib/actions/message-actions'; import { useModalContext } from 'lib/components/modal-provider.react'; +import { messageTypes } from 'lib/types/message-types'; +import type { RawReactionMessageInfo } from 'lib/types/messages/reaction'; import { useDispatchActionPromise, useServerCall, } from 'lib/utils/action-utils'; import Alert from '../modals/alert.react'; +import { useSelector } from '../redux/redux-utils'; function useOnClickReact( messageID: ?string, @@ -23,6 +27,10 @@ ): (event: SyntheticEvent) => mixed { const { pushModal } = useModalContext(); + const viewerID = useSelector( + state => state.currentUserInfo && state.currentUserInfo.id, + ); + const callSendReactionMessage = useServerCall(sendReactionMessage); const dispatchActionPromise = useDispatchActionPromise(); @@ -34,6 +42,8 @@ return; } + invariant(viewerID, 'viewerID should be set'); + const reactionMessagePromise = (async () => { try { const result = await callSendReactionMessage({ @@ -59,20 +69,34 @@ } })(); + const startingPayload: RawReactionMessageInfo = { + type: messageTypes.REACTION, + threadID, + localID, + creatorID: viewerID, + time: Date.now(), + targetMessageID: messageID, + reaction, + action, + }; + dispatchActionPromise( sendReactionMessageActionTypes, reactionMessagePromise, + undefined, + startingPayload, ); }, [ - action, - callSendReactionMessage, - dispatchActionPromise, messageID, - pushModal, - reaction, threadID, localID, + viewerID, + reaction, + action, + dispatchActionPromise, + callSendReactionMessage, + pushModal, ], ); }