changeset 207:49017504bc39

Use promise style decodeAudioData if available.
author Lucas Thompson <dev@lucas.im>
date Fri, 24 Mar 2017 17:21:35 +0000
parents 1db0bb28688b
children d88dfde939e0
files src/app/services/audio-player/audio-player.service.ts
diffstat 1 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/services/audio-player/audio-player.service.ts	Fri Mar 24 16:14:57 2017 +0000
+++ b/src/app/services/audio-player/audio-player.service.ts	Fri Mar 24 17:21:35 2017 +0000
@@ -72,9 +72,14 @@
     this.audioElement.load();
 
     const decode: (buffer: ArrayBuffer) => Promise<AudioBuffer> = buffer => {
-      return new Promise(
-        (res, rej) => this.audioContext.decodeAudioData(buffer, res, rej)
-      );
+      try {
+        return this.audioContext.decodeAudioData(buffer) as Promise<AudioBuffer>;
+      } catch (e) {
+        console.warn('Falling back to callback style decodeAudioData');
+        return new Promise(
+          (res, rej) => this.audioContext.decodeAudioData(buffer, res, rej)
+        );
+      }
     };
 
     this.readResource(resource)
@@ -87,8 +92,9 @@
         });
       })
       .catch(err => {
+        const message = err && err.message ? err.message : "Read error";
         this.audioLoaded.next({
-          message: err.message
+          message: message
         });
       });
     return url;