diff options
Diffstat (limited to 'ext/mixed/js/audio-system.js')
| -rw-r--r-- | ext/mixed/js/audio-system.js | 18 | 
1 files changed, 15 insertions, 3 deletions
| diff --git a/ext/mixed/js/audio-system.js b/ext/mixed/js/audio-system.js index 7ae8efdc..19c85690 100644 --- a/ext/mixed/js/audio-system.js +++ b/ext/mixed/js/audio-system.js @@ -18,12 +18,13 @@  /* global   * CacheMap   * TextToSpeechAudio + * api   */  class AudioSystem { -    constructor({getAudioInfo, cacheSize=32}) { -        this._cache = new CacheMap(cacheSize); -        this._getAudioInfo = getAudioInfo; +    constructor(useCache) { +        this._cache = new CacheMap(useCache ? 32 : 0); +        this._fallbackAudio = null;      }      prepare() { @@ -81,6 +82,13 @@ class AudioSystem {          throw new Error('Could not create audio');      } +    getFallbackAudio() { +        if (this._fallbackAudio === null) { +            this._fallbackAudio = new Audio('/mixed/mp3/button.mp3'); +        } +        return this._fallbackAudio; +    } +      createAudio(url) {          return new Promise((resolve, reject) => {              const audio = new Audio(url); @@ -105,6 +113,10 @@ class AudioSystem {      // Private +    async _getAudioInfo(source, expression, reading, details) { +        return await api.getDefinitionAudioInfo(source, expression, reading, details); +    } +      _isAudioValid(audio) {          const duration = audio.duration;          return ( |