fix adding messages
This commit is contained in:
parent
88b2a25b00
commit
8b656fc350
@ -1,5 +1,5 @@
|
||||
import { Box, IconButton, InputAdornment, TextField, useTheme } from "@mui/material";
|
||||
import { addMessages, setMessages, useMessageStore } from "@root/stores/messages";
|
||||
import { addOrUpdateMessage, setMessages, useMessageStore } from "@root/stores/messages";
|
||||
import Message from "./Message";
|
||||
import SendIcon from "@mui/icons-material/Send";
|
||||
import AttachFileIcon from "@mui/icons-material/AttachFile";
|
||||
@ -66,7 +66,7 @@ export default function Chat() {
|
||||
|
||||
try {
|
||||
const newMessage = JSON.parse(event.data) as TicketMessage;
|
||||
addMessages([newMessage]);
|
||||
addOrUpdateMessage(newMessage);
|
||||
} catch (error) {
|
||||
console.log("Error parsing message SSE", error);
|
||||
}
|
||||
|
||||
@ -20,4 +20,15 @@ export const useMessageStore = create<MessageStore>()(
|
||||
);
|
||||
|
||||
export const setMessages = (messages: TicketMessage[]) => useMessageStore.setState(({ messages }));
|
||||
export const addMessages = (messages: TicketMessage[]) => useMessageStore.setState(state => ({ messages: [...state.messages, ...messages] }));
|
||||
|
||||
export const addOrUpdateMessage = (newMessage: TicketMessage) => {
|
||||
const state = useMessageStore.getState();
|
||||
const ticketIndex = state.messages.findIndex(message => message.id === newMessage.id);
|
||||
|
||||
if (ticketIndex === -1) {
|
||||
return useMessageStore.setState({ messages: [...state.messages, newMessage] });
|
||||
}
|
||||
|
||||
const newMessages = state.messages.slice().splice(ticketIndex, 1, newMessage);
|
||||
useMessageStore.setState({ messages: newMessages });
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user