diff options
Diffstat (limited to 'ext/mixed/js')
| -rw-r--r-- | ext/mixed/js/audio-system.js | 30 | 
1 files changed, 15 insertions, 15 deletions
| diff --git a/ext/mixed/js/audio-system.js b/ext/mixed/js/audio-system.js index c590b909..fdfb0b10 100644 --- a/ext/mixed/js/audio-system.js +++ b/ext/mixed/js/audio-system.js @@ -169,22 +169,22 @@ class AudioSystem {          });      } -    async _createAudioBinaryFromUrl(url) { -        const response = await fetch(url, { -            method: 'GET', -            mode: 'no-cors', -            cache: 'default', -            credentials: 'omit', -            redirect: 'follow', -            referrerPolicy: 'no-referrer' +    _createAudioBinaryFromUrl(url) { +        return new Promise((resolve, reject) => { +            const xhr = new XMLHttpRequest(); +            xhr.responseType = 'arraybuffer'; +            xhr.addEventListener('load', async () => { +                const arrayBuffer = xhr.response; +                if (!await this._isAudioBinaryValid(arrayBuffer)) { +                    reject(new Error('Could not retrieve audio')); +                } else { +                    resolve(arrayBuffer); +                } +            }); +            xhr.addEventListener('error', () => reject(new Error('Failed to connect'))); +            xhr.open('GET', url); +            xhr.send();          }); -        const arrayBuffer = await response.arrayBuffer(); - -        if (!await this._isAudioBinaryValid(arrayBuffer)) { -            throw new Error('Could not retrieve audio'); -        } - -        return arrayBuffer;      }      _isAudioValid(audio) { |