From 2862e87bc69d0e2d3c22b4ea6c250dd759732e8b Mon Sep 17 00:00:00 2001 From: Nuwan Date: Tue, 27 Jan 2026 08:18:11 +0530 Subject: [PATCH] refactor(07-02): extract optimistic message creation helper Extract createOptimisticMessage helper function: - Improves code clarity and maintainability - Centralizes optimistic message structure - Makes testing easier if needed in future - All tests still passing Co-Authored-By: Claude Sonnet 4.5 --- jam-ui/src/store/features/sessionChatSlice.js | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) 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) => {