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 (28 loc) 1.13 kB
import type { StateCreator } from 'zustand/vanilla'; import { userService } from '@/services/user'; import type { UserStore } from '@/store/user'; import { UserGuide, UserPreference } from '@/types/user'; import { merge } from '@/utils/merge'; import { setNamespace } from '@/utils/storeDebug'; const n = setNamespace('preference'); export interface PreferenceAction { updateGuideState: (guide: Partial<UserGuide>) => Promise<void>; updatePreference: (preference: Partial<UserPreference>, action?: any) => Promise<void>; } export const createPreferenceSlice: StateCreator< UserStore, [['zustand/devtools', never]], [], PreferenceAction > = (set, get) => ({ updateGuideState: async (guide) => { const { updatePreference } = get(); const nextGuide = merge(get().preference.guide, guide); await updatePreference({ guide: nextGuide }); }, updatePreference: async (preference, action) => { const nextPreference = merge(get().preference, preference); set({ preference: nextPreference }, false, action || n('updatePreference')); await userService.updatePreference(nextPreference); }, });