diff src/app/app.module.ts @ 192:e4f38975c2bc

Introduce interface for reading a file, once again avoiding specific browser implementation.
author Lucas Thompson <dev@lucas.im>
date Thu, 23 Mar 2017 15:42:34 +0000
parents ea735ebeed0e
children ff5a850f0f72
line wrap: on
line diff
--- a/src/app/app.module.ts	Thu Mar 23 11:38:22 2017 +0000
+++ b/src/app/app.module.ts	Thu Mar 23 15:42:34 2017 +0000
@@ -10,7 +10,7 @@
 import { PlaybackControlComponent } from './playback-control/playback-control.component';
 import {
   AudioPlayerService,
-  UrlResourceLifetimeManager
+  UrlResourceLifetimeManager, ResourceReader
 } from "./services/audio-player/audio-player.service";
 import { FeatureExtractionService } from "./services/feature-extraction/feature-extraction.service";
 import { FeatureExtractionMenuComponent } from "./feature-extraction-menu/feature-extraction-menu.component";
@@ -73,6 +73,19 @@
   }
 };
 
+export const readResource: ResourceReader = (resource) => {
+  return new Promise((res, rej) => {
+    const reader: FileReader = new FileReader();
+    reader.onload = (event: any) => {
+      res(event.target.result);
+    };
+    reader.onerror = (event) => {
+      rej(event.message);
+    };
+    reader.readAsArrayBuffer(resource);
+  });
+};
+
 @NgModule({
   declarations: [
     AppComponent,
@@ -100,7 +113,8 @@
     FeatureExtractionService,
     {provide: 'MediaRecorderFactory', useFactory: createMediaRecorderFactory},
     {provide: 'PiperRepoUri', useValue: 'assets/remote-plugins.json'},
-    {provide: 'UrlResourceLifetimeManager', useValue: urlResourceManager}
+    {provide: 'UrlResourceLifetimeManager', useValue: urlResourceManager},
+    {provide: 'ResourceReader', useValue: readResource}
   ],
   bootstrap: [AppComponent]
 })