diff --git a/ext/mixed/js/audio-system.js b/ext/mixed/js/audio-system.js index 0ded3490..94885d34 100644 --- a/ext/mixed/js/audio-system.js +++ b/ext/mixed/js/audio-system.js @@ -85,13 +85,15 @@ class AudioSystem { const cacheValue = this._cache.get(key); if (typeof cacheValue !== 'undefined') { const {audio, uri, source} = cacheValue; - if (sources.includes(source)) { - return {audio, uri, source}; + const index = sources.indexOf(source); + if (index >= 0) { + return {audio, uri, index}; } } } - for (const source of sources) { + for (let i = 0, ii = sources.length; i < ii; ++i) { + const source = sources[i]; const uri = await this._getAudioUri(definition, source, details); if (uri === null) { continue; } @@ -101,7 +103,7 @@ class AudioSystem { this._cacheCheck(); this._cache.set(key, {audio, uri, source}); } - return {audio, uri, source}; + return {audio, uri, index: i}; } catch (e) { // NOP } diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 8edae7c9..5b8d3610 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -796,11 +796,12 @@ class Display { this.audioPlaying = null; } - let audio, source, info; + let audio, info; try { const {sources, textToSpeechVoice, customSourceUrl} = this.options.audio; - ({audio, source} = await this.audioSystem.getDefinitionAudio(expression, sources, {textToSpeechVoice, customSourceUrl})); - info = `From source ${1 + sources.indexOf(source)}: ${source}`; + let index; + ({audio, index} = await this.audioSystem.getDefinitionAudio(expression, sources, {textToSpeechVoice, customSourceUrl})); + info = `From source ${1 + index}: ${sources[index]}`; } catch (e) { if (this.audioFallback === null) { this.audioFallback = new Audio('/mixed/mp3/button.mp3');