changeset 30:5bdfcf493646

Just emit the file object from audio-file-open.
author Lucas Thompson <dev@lucas.im>
date Wed, 30 Nov 2016 10:18:03 +0000
parents 42c97f604d80
children f6ea31a3b1a3
files src/app/audio-file-open/audio-file-open.component.ts
diffstat 1 files changed, 4 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/audio-file-open/audio-file-open.component.ts	Tue Nov 29 12:00:07 2016 +0000
+++ b/src/app/audio-file-open/audio-file-open.component.ts	Wed Nov 30 10:18:03 2016 +0000
@@ -3,15 +3,6 @@
   EventEmitter, NgZone
 } from '@angular/core';
 
-interface AudioContextConstructor {
-  new(): AudioContext
-}
-
-interface WindowAudioContext {
-  AudioContext?: AudioContextConstructor;
-  webkitAudioContext?: AudioContextConstructor
-}
-
 @Component({
   selector: 'app-audio-file-open',
   templateUrl: './audio-file-open.component.html',
@@ -20,16 +11,10 @@
 export class AudioFileOpenComponent implements OnInit {
 
   @ViewChild('open') open: ElementRef;
-  @Output() audioLoaded: EventEmitter<AudioBuffer>;
+  @Output() fileOpened: EventEmitter<File>;
 
-  private audioContext: AudioContext;
-
-  constructor(private zone: NgZone) {
-    this.audioLoaded = new EventEmitter<AudioBuffer>();
-
-    // TODO make a service which provides the AudioContext?
-    const factory: WindowAudioContext = (window as WindowAudioContext);
-    this.audioContext = new (factory.AudioContext || factory.webkitAudioContext)();
+  constructor() {
+    this.fileOpened = new EventEmitter<File>();
   }
 
   ngOnInit() {
@@ -37,15 +22,7 @@
 
   decodeAudio(files: FileList) {
     if (files.length > 0) {
-      const reader: FileReader = new FileReader();
-      reader.onload = (event: any) => {
-        this.audioContext.decodeAudioData(event.target.result, buffer => {
-          this.zone.run(() => {
-            this.audioLoaded.emit(buffer);
-          });
-        });
-      };
-      reader.readAsArrayBuffer(files[0]);
+      this.fileOpened.emit(files[0]);
     }
   }