diff --git a/jam-ui/src/store/features/sessionChatSlice.js b/jam-ui/src/store/features/sessionChatSlice.js index 0798ad6d1..4bd68f2d4 100644 --- a/jam-ui/src/store/features/sessionChatSlice.js +++ b/jam-ui/src/store/features/sessionChatSlice.js @@ -229,9 +229,21 @@ const sessionChatSlice = createSlice({ state.messagesByChannel[channel] = []; } + // Transform API response format to internal format + // API returns: { user: { name: "..." }, user_id: "...", ... } + // Internal format: { senderName: "...", senderId: "...", ... } + const transformedMessages = messages.map(m => ({ + id: m.id, + senderId: m.user_id, + senderName: m.user?.name || 'Unknown', + message: m.message, + createdAt: m.created_at, + channel: m.channel + })); + // Deduplicate messages const existingIds = new Set(state.messagesByChannel[channel].map(m => m.id)); - const newMessages = messages.filter(m => !existingIds.has(m.id)); + const newMessages = transformedMessages.filter(m => !existingIds.has(m.id)); // Prepend new messages (oldest first for pagination) state.messagesByChannel[channel] = [...newMessages, ...state.messagesByChannel[channel]]; @@ -285,8 +297,8 @@ const sessionChatSlice = createSlice({ if (index !== -1) { messages[index] = { id: realMessage.id, - senderId: realMessage.sender_id, - senderName: realMessage.sender_name, + senderId: realMessage.user_id, + senderName: realMessage.user?.name || 'Unknown', message: realMessage.message, createdAt: realMessage.created_at, channel: realMessage.channel