UNPKG

stream-chat-react

Version:

React components to create chat conversations or livestream style chat

35 lines (34 loc) 1.44 kB
import { useChannelActionContext } from '../../../context/ChannelActionContext'; import { useChannelStateContext } from '../../../context/ChannelStateContext'; export const handleActionWarning = `Action handler was called, but it is missing one of its required arguments. Make sure the ChannelAction and ChannelState contexts are properly set and the hook is initialized with a valid message.`; export function useActionHandler(message) { const { removeMessage, updateMessage } = useChannelActionContext('useActionHandler'); const { channel } = useChannelStateContext('useActionHandler'); return async (dataOrName, value, event) => { if (event) event.preventDefault(); if (!message || !updateMessage || !removeMessage || !channel) { console.warn(handleActionWarning); return; } const messageID = message.id; let formData = {}; // deprecated: value&name should be removed in favor of data obj if (typeof dataOrName === 'string') { formData[dataOrName] = value; } else { formData = { ...dataOrName }; } if (messageID) { const data = await channel.sendAction(messageID, formData); if (data?.message) { updateMessage(data.message); } else { removeMessage(message); } } }; }