jan/web-app/src/hooks/useGeneralSetting.ts
2025-08-21 11:54:34 +07:00

49 lines
1.5 KiB
TypeScript

import { create } from 'zustand'
import { persist, createJSONStorage } from 'zustand/middleware'
import { localStorageKey } from '@/constants/localStorage'
import { ExtensionManager } from '@/lib/extension'
type LeftPanelStoreState = {
currentLanguage: Language
spellCheckChatInput: boolean
huggingfaceToken?: string
setHuggingfaceToken: (token: string) => void
setSpellCheckChatInput: (value: boolean) => void
setCurrentLanguage: (value: Language) => void
}
export const useGeneralSetting = create<LeftPanelStoreState>()(
persist(
(set) => ({
currentLanguage: 'en',
spellCheckChatInput: true,
huggingfaceToken: undefined,
setSpellCheckChatInput: (value) => set({ spellCheckChatInput: value }),
setCurrentLanguage: (value) => set({ currentLanguage: value }),
setHuggingfaceToken: (token) => {
set({ huggingfaceToken: token })
ExtensionManager.getInstance()
.getByName('@janhq/download-extension')
?.getSettings()
.then((settings) => {
if (settings) {
const newSettings = settings.map((e) => {
if (e.key === 'hf-token') {
e.controllerProps.value = token
}
return e
})
ExtensionManager.getInstance()
.getByName('@janhq/download-extension')
?.updateSettings(newSettings)
}
})
},
}),
{
name: localStorageKey.settingGeneral,
storage: createJSONStorage(() => localStorage),
}
)
)