mirror of
https://github.com/sqlchat/sqlchat.git
synced 2025-07-29 02:04:48 +08:00
32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import { create } from "zustand";
|
|
import { persist } from "zustand/middleware";
|
|
import { Id, Message } from "@/types";
|
|
|
|
interface MessageState {
|
|
messageList: Message[];
|
|
getState: () => MessageState;
|
|
addMessage: (message: Message) => void;
|
|
updateMessage: (messageId: Id, message: Partial<Message>) => void;
|
|
clearMessage: (filter: (message: Message) => boolean) => void;
|
|
}
|
|
|
|
export const useMessageStore = create<MessageState>()(
|
|
persist(
|
|
(set, get) => ({
|
|
messageList: [],
|
|
getState: () => get(),
|
|
addMessage: (message: Message) => set((state) => ({ messageList: [...state.messageList, message] })),
|
|
updateMessage: (messageId: Id, message: Partial<Message>) => {
|
|
set((state) => ({
|
|
...state,
|
|
messageList: state.messageList.map((item) => (item.id === messageId ? { ...item, ...message } : item)),
|
|
}));
|
|
},
|
|
clearMessage: (filter: (message: Message) => boolean) => set((state) => ({ messageList: state.messageList.filter(filter) })),
|
|
}),
|
|
{
|
|
name: "message-storage",
|
|
}
|
|
)
|
|
);
|