Skip to content

Commit c9eccf1

Browse files
r-farkhutdinovRuslan Farkhutdinov
andauthored
SpeechToText: Support nested speechRecognitionConfig option update (#31156)
Co-authored-by: Ruslan Farkhutdinov <ruslan.farkhutdinov@devexpress.com>
1 parent 227c6ef commit c9eccf1

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

packages/devextreme/js/__internal/ui/speech_to_text/speech_to_text.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,12 @@ class SpeechToText extends Widget<Properties> {
283283
this.$element().toggleClass(SPEECH_TO_TEXT_LISTENING_CLASS, this._isListening());
284284
}
285285

286+
private _updateSpeechRecognitionConfig(args: OptionChanged<SpeechToTextProperties>): void {
287+
const options = Widget.getOptionsFromContainer(args);
288+
289+
this._speechRecognitionAdapter?.applyConfig(options);
290+
}
291+
286292
_optionChanged(args: OptionChanged<Properties>): void {
287293
const { name, value } = args;
288294

@@ -292,7 +298,7 @@ class SpeechToText extends Widget<Properties> {
292298
break;
293299

294300
case 'speechRecognitionConfig':
295-
this._speechRecognitionAdapter?.applyConfig(value);
301+
this._updateSpeechRecognitionConfig(args);
296302
break;
297303

298304
case 'activeStateEnabled':

packages/devextreme/testing/tests/DevExpress.ui.widgets/speechToText.tests.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,18 @@ QUnit.module('SpeechRecognitionAdapter integration', moduleConfig, () => {
941941
assert.strictEqual(this.getSpeechRecognition().lang, 'fr-FR', 'config updated in recognition instance');
942942
});
943943

944+
QUnit.test('should apply nested option change for speechRecognitionConfig', function(assert) {
945+
this.reinit();
946+
947+
const adapter = this.getAdapter();
948+
const applyConfigSpy = sinon.spy(adapter, 'applyConfig');
949+
950+
this.instance.option('speechRecognitionConfig.lang', 'fr-FR');
951+
952+
assert.ok(applyConfigSpy.calledOnce, 'applyConfig called on nested option change');
953+
assert.strictEqual(this.getSpeechRecognition().lang, 'fr-FR', 'config updated in recognition instance');
954+
});
955+
944956
QUnit.test('should update onResult/onError handlers at runtime', function(assert) {
945957
const initialActionsSpies = {
946958
onResult: sinon.spy(),

0 commit comments

Comments
 (0)