Fix crash issue when first changing tts provider

This commit is contained in:
Ilango Rajagopal 2025-08-18 13:50:40 +05:30
parent ef1b0dc856
commit 08f0d7597d
1 changed files with 17 additions and 17 deletions

View File

@ -165,8 +165,8 @@ const TextToSpeech = ({ dialogProps }) => {
const setValue = (value, providerName, inputParamName) => { const setValue = (value, providerName, inputParamName) => {
let newVal = {} let newVal = {}
if (!Object.hasOwn(textToSpeech, providerName)) { if (!textToSpeech || !Object.hasOwn(textToSpeech, providerName)) {
newVal = { ...textToSpeech, [providerName]: {} } newVal = { ...(textToSpeech || {}), [providerName]: {} }
} else { } else {
newVal = { ...textToSpeech } newVal = { ...textToSpeech }
} }
@ -177,7 +177,7 @@ const TextToSpeech = ({ dialogProps }) => {
Object.keys(textToSpeechProviders).forEach((key) => { Object.keys(textToSpeechProviders).forEach((key) => {
const provider = textToSpeechProviders[key] const provider = textToSpeechProviders[key]
if (provider.name !== providerName) { if (provider.name !== providerName) {
newVal[provider.name] = { ...textToSpeech[provider.name], status: false } newVal[provider.name] = { ...(textToSpeech?.[provider.name] || {}), status: false }
} }
}) })
if (providerName !== 'none' && newVal['none']) { if (providerName !== 'none' && newVal['none']) {
@ -192,8 +192,8 @@ const TextToSpeech = ({ dialogProps }) => {
setSelectedProvider(() => provider) setSelectedProvider(() => provider)
setVoices([]) setVoices([])
if (provider !== 'none') { if (provider !== 'none') {
const config = configOverride || textToSpeech[provider]?.config const config = configOverride || textToSpeech?.[provider]
const credentialId = config[provider]?.credentialId const credentialId = config?.credentialId
if (credentialId) { if (credentialId) {
loadVoicesForProvider(provider, credentialId) loadVoicesForProvider(provider, credentialId)
} }
@ -225,7 +225,7 @@ const TextToSpeech = ({ dialogProps }) => {
} }
const testTTS = async () => { const testTTS = async () => {
if (selectedProvider === 'none' || !textToSpeech[selectedProvider]?.credentialId) { if (selectedProvider === 'none' || !textToSpeech?.[selectedProvider]?.credentialId) {
enqueueSnackbar({ enqueueSnackbar({
message: 'Please select a provider and configure credentials first', message: 'Please select a provider and configure credentials first',
options: { variant: 'warning' } options: { variant: 'warning' }
@ -234,7 +234,7 @@ const TextToSpeech = ({ dialogProps }) => {
} }
try { try {
const providerConfig = textToSpeech[selectedProvider] const providerConfig = textToSpeech?.[selectedProvider] || {}
const body = { const body = {
text: 'Today is a wonderful day to build something with Flowise!', text: 'Today is a wonderful day to build something with Flowise!',
provider: selectedProvider, provider: selectedProvider,
@ -383,10 +383,10 @@ const TextToSpeech = ({ dialogProps }) => {
</div> </div>
{inputParam.type === 'credential' && ( {inputParam.type === 'credential' && (
<CredentialInputHandler <CredentialInputHandler
key={textToSpeech[selectedProvider]?.credentialId} key={textToSpeech?.[selectedProvider]?.credentialId}
data={ data={
textToSpeech[selectedProvider]?.credentialId textToSpeech?.[selectedProvider]?.credentialId
? { credential: textToSpeech[selectedProvider].credentialId } ? { credential: textToSpeech?.[selectedProvider]?.credentialId }
: {} : {}
} }
inputParam={inputParam} inputParam={inputParam}
@ -403,7 +403,7 @@ const TextToSpeech = ({ dialogProps }) => {
<SwitchInput <SwitchInput
onChange={(newValue) => setValue(newValue, selectedProvider, inputParam.name)} onChange={(newValue) => setValue(newValue, selectedProvider, inputParam.name)}
value={ value={
textToSpeech[selectedProvider] textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name] ? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? false : inputParam.default ?? false
} }
@ -414,7 +414,7 @@ const TextToSpeech = ({ dialogProps }) => {
inputParam={inputParam} inputParam={inputParam}
onChange={(newValue) => setValue(newValue, selectedProvider, inputParam.name)} onChange={(newValue) => setValue(newValue, selectedProvider, inputParam.name)}
value={ value={
textToSpeech[selectedProvider] textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name] ? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? '' : inputParam.default ?? ''
} }
@ -426,7 +426,7 @@ const TextToSpeech = ({ dialogProps }) => {
options={inputParam.options} options={inputParam.options}
onSelect={(newValue) => setValue(newValue, selectedProvider, inputParam.name)} onSelect={(newValue) => setValue(newValue, selectedProvider, inputParam.name)}
value={ value={
textToSpeech[selectedProvider] textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name] ? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? 'choose an option' : inputParam.default ?? 'choose an option'
} }
@ -445,7 +445,7 @@ const TextToSpeech = ({ dialogProps }) => {
options={voices.map((voice) => ({ label: voice.name, name: voice.id }))} options={voices.map((voice) => ({ label: voice.name, name: voice.id }))}
onSelect={(newValue) => setValue(newValue, selectedProvider, inputParam.name)} onSelect={(newValue) => setValue(newValue, selectedProvider, inputParam.name)}
value={ value={
textToSpeech[selectedProvider] textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name] ? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? 'choose a voice' : inputParam.default ?? 'choose a voice'
} }
@ -469,7 +469,7 @@ const TextToSpeech = ({ dialogProps }) => {
</div> </div>
<SwitchInput <SwitchInput
onChange={(newValue) => setValue(newValue, selectedProvider, 'autoPlay')} onChange={(newValue) => setValue(newValue, selectedProvider, 'autoPlay')}
value={textToSpeech[selectedProvider] ? textToSpeech[selectedProvider].autoPlay ?? false : false} value={textToSpeech?.[selectedProvider] ? textToSpeech[selectedProvider].autoPlay ?? false : false}
/> />
</Box> </Box>
@ -480,7 +480,7 @@ const TextToSpeech = ({ dialogProps }) => {
size='small' size='small'
startIcon={<IconVolume />} startIcon={<IconVolume />}
onClick={testTTS} onClick={testTTS}
disabled={!textToSpeech[selectedProvider]?.credentialId} disabled={!textToSpeech?.[selectedProvider]?.credentialId}
> >
Test Voice Test Voice
</StyledButton> </StyledButton>
@ -489,7 +489,7 @@ const TextToSpeech = ({ dialogProps }) => {
)} )}
<StyledButton <StyledButton
style={{ marginBottom: 10, marginTop: 10 }} style={{ marginBottom: 10, marginTop: 10 }}
disabled={selectedProvider !== 'none' && !textToSpeech[selectedProvider]?.credentialId} disabled={selectedProvider !== 'none' && !textToSpeech?.[selectedProvider]?.credentialId}
variant='contained' variant='contained'
onClick={onSave} onClick={onSave}
> >