@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
text/typescript
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();