jan/web-app/src/hooks/useLocalApiServer.ts
2025-05-20 10:49:57 +07:00

48 lines
1.5 KiB
TypeScript

import { create } from 'zustand'
import { persist, createJSONStorage } from 'zustand/middleware'
import { localStorageKey } from '@/constants/localStorage'
type LocalApiServerState = {
// Run local API server once app opens
runOnStartup: boolean
setRunOnStartup: (value: boolean) => void
// Server host option (127.0.0.1 or 0.0.0.0)
serverHost: '127.0.0.1' | '0.0.0.0'
setServerHost: (value: '127.0.0.1' | '0.0.0.0') => void
// Server port (default 1337)
serverPort: number
setServerPort: (value: number) => void
// API prefix (default /v1)
apiPrefix: string
setApiPrefix: (value: string) => void
// CORS enabled
corsEnabled: boolean
setCorsEnabled: (value: boolean) => void
// Verbose server logs
verboseLogs: boolean
setVerboseLogs: (value: boolean) => void
}
export const useLocalApiServer = create<LocalApiServerState>()(
persist(
(set) => ({
runOnStartup: true,
setRunOnStartup: (value) => set({ runOnStartup: value }),
serverHost: '127.0.0.1',
setServerHost: (value) => set({ serverHost: value }),
serverPort: 1337,
setServerPort: (value) => set({ serverPort: value }),
apiPrefix: '/v1',
setApiPrefix: (value) => set({ apiPrefix: value }),
corsEnabled: true,
setCorsEnabled: (value) => set({ corsEnabled: value }),
verboseLogs: true,
setVerboseLogs: (value) => set({ verboseLogs: value }),
}),
{
name: localStorageKey.settingLocalApiServer,
storage: createJSONStorage(() => localStorage),
}
)
)