diff --git a/jam-ui/src/store/features/sessionChatSlice.js b/jam-ui/src/store/features/sessionChatSlice.js index 0de7d90c5..fc8c2bb9e 100644 --- a/jam-ui/src/store/features/sessionChatSlice.js +++ b/jam-ui/src/store/features/sessionChatSlice.js @@ -89,6 +89,21 @@ const getChannelKey = (message) => { return message.channel; // 'global' }; +/** + * Helper function to create an optimistic message + * @param {Object} params - Message parameters + * @returns {Object} Optimistic message object + */ +const createOptimisticMessage = ({ optimisticId, userId, userName, message, channel }) => ({ + id: optimisticId, + senderId: userId, + senderName: userName, + message, + createdAt: new Date().toISOString(), + channel, + isOptimistic: true +}); + const sessionChatSlice = createSlice({ name: 'sessionChat', initialState, @@ -232,15 +247,14 @@ const sessionChatSlice = createSlice({ state.messagesByChannel[channel] = []; } - state.messagesByChannel[channel].push({ - id: optimisticId, - senderId: userId, - senderName: userName, + const optimisticMessage = createOptimisticMessage({ + optimisticId, + userId, + userName, message, - createdAt: new Date().toISOString(), - channel, - isOptimistic: true + channel }); + state.messagesByChannel[channel].push(optimisticMessage); }) // sendMessage fulfilled - replace optimistic message .addCase(sendMessage.fulfilled, (state, action) => {