Spaces:
Runtime error
Runtime error
Download next/src/stores/messageStore.ts from dia-gov/AgentGPT-Web-GUI: direct link, hf CLI and curl.
- Browser
- Download file 1.43 kB
-
https://huggingface.co/spaces/dia-gov/AgentGPT-Web-GUI/resolve/main/next/src/stores/messageStore.ts
- Command line
-
hf download hf://spaces/dia-gov/AgentGPT-Web-GUI/next/src/stores/messageStore.ts
-
curl -L -o messageStore.ts https://huggingface.co/spaces/dia-gov/AgentGPT-Web-GUI/resolve/main/next/src/stores/messageStore.ts
1.43 kB
| import type { StateCreator } from "zustand"; | |
| import { create } from "zustand"; | |
| import { createSelectors } from "./helpers"; | |
| import type { Message } from "../types/message"; | |
| const resetters: (() => void)[] = []; | |
| const initialMessageState = { | |
| messages: [], | |
| }; | |
| interface MessageSlice { | |
| messages: Message[]; | |
| addMessage: (newMessage: Message) => void; | |
| updateMessage: (newMessage: Message) => void; | |
| } | |
| const createMessageSlice: StateCreator<MessageSlice, [], [], MessageSlice> = (set) => { | |
| resetters.push(() => set(initialMessageState)); | |
| return { | |
| ...initialMessageState, | |
| addMessage: (newMessage) => { | |
| set((state) => ({ | |
| ...state, | |
| messages: [...state.messages, { ...newMessage }], | |
| })); | |
| }, | |
| updateMessage: (newMessage) => { | |
| set((state) => { | |
| const oldMessage = state.messages.find((message) => message.id === newMessage.id); | |
| if (oldMessage) { | |
| const updatedMessages = state.messages.map((message) => | |
| message.id === oldMessage.id ? newMessage : message | |
| ); | |
| return { | |
| ...state, | |
| messages: updatedMessages, | |
| }; | |
| } | |
| return state; | |
| }); | |
| }, | |
| }; | |
| }; | |
| export const useMessageStore = createSelectors( | |
| create<MessageSlice>()((...a) => ({ | |
| ...createMessageSlice(...a), | |
| })) | |
| ); | |
| export const resetAllMessageSlices = () => resetters.forEach((resetter) => resetter()); | |