| | import { useEffect, useRef } from 'react'; |
| | import { useSetRecoilState } from 'recoil'; |
| | import { useGetCustomConfigSpeechQuery } from 'librechat-data-provider/react-query'; |
| | import { logger } from '~/utils'; |
| | import store from '~/store'; |
| |
|
| | |
| | |
| | |
| | |
| | export default function useSpeechSettingsInit(isAuthenticated: boolean) { |
| | const { data } = useGetCustomConfigSpeechQuery({ enabled: isAuthenticated }); |
| |
|
| | const setters = useRef({ |
| | conversationMode: useSetRecoilState(store.conversationMode), |
| | advancedMode: useSetRecoilState(store.advancedMode), |
| | speechToText: useSetRecoilState(store.speechToText), |
| | textToSpeech: useSetRecoilState(store.textToSpeech), |
| | cacheTTS: useSetRecoilState(store.cacheTTS), |
| | engineSTT: useSetRecoilState(store.engineSTT), |
| | languageSTT: useSetRecoilState(store.languageSTT), |
| | autoTranscribeAudio: useSetRecoilState(store.autoTranscribeAudio), |
| | decibelValue: useSetRecoilState(store.decibelValue), |
| | autoSendText: useSetRecoilState(store.autoSendText), |
| | engineTTS: useSetRecoilState(store.engineTTS), |
| | voice: useSetRecoilState(store.voice), |
| | cloudBrowserVoices: useSetRecoilState(store.cloudBrowserVoices), |
| | languageTTS: useSetRecoilState(store.languageTTS), |
| | automaticPlayback: useSetRecoilState(store.automaticPlayback), |
| | playbackRate: useSetRecoilState(store.playbackRate), |
| | }).current; |
| |
|
| | useEffect(() => { |
| | if (!isAuthenticated || !data || data.message === 'not_found') return; |
| |
|
| | logger.log('Initializing speech settings from config:', data); |
| |
|
| | Object.entries(data).forEach(([key, value]) => { |
| | if (key === 'sttExternal' || key === 'ttsExternal') return; |
| |
|
| | if (localStorage.getItem(key) !== null) return; |
| |
|
| | const setter = setters[key as keyof typeof setters]; |
| | if (setter) { |
| | logger.log(`Setting default speech setting: ${key} = ${value}`); |
| | setter(value as any); |
| | } |
| | }); |
| | }, [isAuthenticated, data, setters]); |
| | } |
| |
|