UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

36 lines (27 loc) 1.29 kB
import { subscribeWithSelector } from 'zustand/middleware'; import { shallow } from 'zustand/shallow'; import { createWithEqualityFn } from 'zustand/traditional'; import { StateCreator } from 'zustand/vanilla'; import { isDev } from '@/utils/env'; import { createDevtools } from '../middleware/createDevtools'; import { SessionStoreState, initialState } from './initialState'; import { SessionAction, createSessionSlice } from './slices/session/action'; import { SessionGroupAction, createSessionGroupSlice } from './slices/sessionGroup/action'; // =============== 聚合 createStoreFn ============ // export interface SessionStore extends SessionAction, SessionGroupAction, SessionStoreState {} const createStore: StateCreator<SessionStore, [['zustand/devtools', never]]> = (...parameters) => ({ ...initialState, ...createSessionSlice(...parameters), ...createSessionGroupSlice(...parameters), }); // =============== implement useStore ============ // const devtools = createDevtools('session'); export const useSessionStore = createWithEqualityFn<SessionStore>()( subscribeWithSelector( devtools(createStore, { name: 'LobeChat_Session' + (isDev ? '_DEV' : ''), }), ), shallow, ); export const getSessionStoreState = () => useSessionStore.getState();