From 0230842d910c141e57ce55d8d0a277f50aa07040 Mon Sep 17 00:00:00 2001 From: tomivm Date: Mon, 19 Sep 2022 18:35:21 -0300 Subject: [PATCH 1/3] set isCloud Property to speech.option.state during change voice. --- .../SpeechProvider/SpeechProvider.actions.js | 12 +++++++++++- .../SpeechProvider/SpeechProvider.reducer.js | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/providers/SpeechProvider/SpeechProvider.actions.js b/src/providers/SpeechProvider/SpeechProvider.actions.js index 3c8666a52..1b582d419 100644 --- a/src/providers/SpeechProvider/SpeechProvider.actions.js +++ b/src/providers/SpeechProvider/SpeechProvider.actions.js @@ -134,10 +134,20 @@ export function getTtsDefaultEngine() { } export function changeVoice(voiceURI, lang) { + return (dispatch, getState) => { + const isCloud = + getState().speech.voices.find(v => v.voiceURI === voiceURI) + .voiceSource === 'cloud'; + dispatch(changeVoiceOptions(voiceURI, lang, isCloud)); + }; +} + +export function changeVoiceOptions(voiceURI, lang, isCloud) { return { type: CHANGE_VOICE, voiceURI, - lang + lang, + isCloud }; } diff --git a/src/providers/SpeechProvider/SpeechProvider.reducer.js b/src/providers/SpeechProvider/SpeechProvider.reducer.js index 6a0fb4823..2d4d5b670 100644 --- a/src/providers/SpeechProvider/SpeechProvider.reducer.js +++ b/src/providers/SpeechProvider/SpeechProvider.reducer.js @@ -30,6 +30,7 @@ const initialState = { options: { lang: '', voiceURI: null, + isCloud: null, pitch: 1.0, rate: 1.0, volume: 1 @@ -77,7 +78,8 @@ function speechProviderReducer(state = initialState, action) { options: { ...state.options, voiceURI: action ? action.voiceURI : EMPTY_VOICES, - lang: action ? action.lang : DEFAULT_LANG + lang: action ? action.lang : DEFAULT_LANG, + isCloud: action.isCloud } }; case RECEIVE_TTS_ENGINES: From ac0f8ed5fc28a6bb4b62e49858b87d0f8449ef86 Mon Sep 17 00:00:00 2001 From: tomivm Date: Tue, 20 Sep 2022 18:26:43 -0300 Subject: [PATCH 2/3] Set speech.options.isCloud property for users that already have a voice --- .../SpeechProvider/SpeechProvider.actions.js | 25 +++++++++++-------- .../SpeechProvider.container.js | 10 +++++--- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/providers/SpeechProvider/SpeechProvider.actions.js b/src/providers/SpeechProvider/SpeechProvider.actions.js index 1b582d419..88bad974f 100644 --- a/src/providers/SpeechProvider/SpeechProvider.actions.js +++ b/src/providers/SpeechProvider/SpeechProvider.actions.js @@ -138,16 +138,12 @@ export function changeVoice(voiceURI, lang) { const isCloud = getState().speech.voices.find(v => v.voiceURI === voiceURI) .voiceSource === 'cloud'; - dispatch(changeVoiceOptions(voiceURI, lang, isCloud)); - }; -} - -export function changeVoiceOptions(voiceURI, lang, isCloud) { - return { - type: CHANGE_VOICE, - voiceURI, - lang, - isCloud + dispatch({ + type: CHANGE_VOICE, + voiceURI, + lang, + isCloud + }); }; } @@ -259,3 +255,12 @@ export function speak(text, onend = () => {}) { }); }; } + +export function setCurrentVoiceSource() { + return (dispatch, getState) => { + const { isCloud = null, voiceURI, lang } = getState().speech.options; + if (isCloud === null && !!voiceURI && !!lang) + dispatch(changeVoice(voiceURI, lang)); + return; + }; +} diff --git a/src/providers/SpeechProvider/SpeechProvider.container.js b/src/providers/SpeechProvider/SpeechProvider.container.js index 15778fa9c..413b4b157 100644 --- a/src/providers/SpeechProvider/SpeechProvider.container.js +++ b/src/providers/SpeechProvider/SpeechProvider.container.js @@ -8,7 +8,8 @@ import { getTtsEngines, getTtsDefaultEngine, updateLangSpeechStatus, - setTtsEngine + setTtsEngine, + setCurrentVoiceSource } from './SpeechProvider.actions'; import { isAndroid } from '../../cordova-util'; @@ -26,7 +27,8 @@ export class SpeechProvider extends Component { getTtsEngines, getTtsDefaultEngine, ttsEngine, - setTtsEngine + setTtsEngine, + setCurrentVoiceSource } = this.props; if (tts.isSupported()) { @@ -49,6 +51,7 @@ export class SpeechProvider extends Component { console.error(err.message); } } + setCurrentVoiceSource(); } render() { @@ -67,7 +70,8 @@ const mapDispatchToProps = { getTtsEngines, getTtsDefaultEngine, setTtsEngine, - updateLangSpeechStatus + updateLangSpeechStatus, + setCurrentVoiceSource }; export default connect( From 7317274dc806a8bb05af47c7d312bf5c243d8b4b Mon Sep 17 00:00:00 2001 From: tomivm Date: Tue, 20 Sep 2022 19:33:42 -0300 Subject: [PATCH 3/3] provide default value on the change voice reducer --- src/providers/SpeechProvider/SpeechProvider.actions.js | 2 +- src/providers/SpeechProvider/SpeechProvider.reducer.js | 2 +- .../SpeechProvider/__tests__/SpeechProvider.reducer.test.js | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/providers/SpeechProvider/SpeechProvider.actions.js b/src/providers/SpeechProvider/SpeechProvider.actions.js index 88bad974f..84c89aee8 100644 --- a/src/providers/SpeechProvider/SpeechProvider.actions.js +++ b/src/providers/SpeechProvider/SpeechProvider.actions.js @@ -137,7 +137,7 @@ export function changeVoice(voiceURI, lang) { return (dispatch, getState) => { const isCloud = getState().speech.voices.find(v => v.voiceURI === voiceURI) - .voiceSource === 'cloud'; + ?.voiceSource === 'cloud'; dispatch({ type: CHANGE_VOICE, voiceURI, diff --git a/src/providers/SpeechProvider/SpeechProvider.reducer.js b/src/providers/SpeechProvider/SpeechProvider.reducer.js index 2d4d5b670..840621fe5 100644 --- a/src/providers/SpeechProvider/SpeechProvider.reducer.js +++ b/src/providers/SpeechProvider/SpeechProvider.reducer.js @@ -79,7 +79,7 @@ function speechProviderReducer(state = initialState, action) { ...state.options, voiceURI: action ? action.voiceURI : EMPTY_VOICES, lang: action ? action.lang : DEFAULT_LANG, - isCloud: action.isCloud + isCloud: action ? action.isCloud || null : null } }; case RECEIVE_TTS_ENGINES: diff --git a/src/providers/SpeechProvider/__tests__/SpeechProvider.reducer.test.js b/src/providers/SpeechProvider/__tests__/SpeechProvider.reducer.test.js index a0d5e3446..63f2af9e7 100644 --- a/src/providers/SpeechProvider/__tests__/SpeechProvider.reducer.test.js +++ b/src/providers/SpeechProvider/__tests__/SpeechProvider.reducer.test.js @@ -22,6 +22,7 @@ describe('reducer', () => { options: { lang: '', voiceURI: null, + isCloud: null, pitch: 1.0, rate: 1.0, volume: 1