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.

60 lines (49 loc) 2 kB
import { ElectronAppState } from '@lobechat/electron-client-ipc'; import { SWRResponse } from 'swr'; import { StateCreator } from 'zustand/vanilla'; import { useOnlyFetchOnceSWR } from '@/libs/swr'; // Import for type usage import { electronSystemService } from '@/services/electron/system'; import { globalAgentContextManager } from '@/utils/client/GlobalAgentContextManager'; import { ElectronStore } from '../store'; // Import the new service // ======== State ======== // // Note: Actual state is defined in initialState.ts and ElectronState interface // ======== Action Interface ======== // export interface ElectronAppAction { /** * Initializes the basic Electron application state, including system info and special paths. * Should be called once when the application starts. */ useInitElectronAppState: () => SWRResponse<ElectronAppState>; } // ======== Action Implementation ======== // export const createElectronAppSlice: StateCreator< ElectronStore, [['zustand/devtools', never]], [], ElectronAppAction > = (set) => ({ useInitElectronAppState: () => useOnlyFetchOnceSWR<ElectronAppState>( 'initElectronAppState', async () => electronSystemService.getAppState(), { onSuccess: (result) => { set({ appState: result, isAppStateInit: true }, false, 'initElectronAppState'); // Update the global agent context manager with relevant paths // We typically only need paths in the agent context for now. globalAgentContextManager.updateContext({ desktopPath: result.userPath!.desktop, documentsPath: result.userPath!.documents, downloadsPath: result.userPath!.downloads, homePath: result.userPath!.home, musicPath: result.userPath!.music, picturesPath: result.userPath!.pictures, userDataPath: result.userPath!.userData, videosPath: result.userPath!.videos, }); }, }, ), });