changeset 454:f93582c38b70

Don't dispose of old audio when loading new audio files. Also move resource manager type out of audio-player.
author Lucas Thompson <dev@lucas.im>
date Thu, 29 Jun 2017 20:08:11 +0100
parents 8113b6f5a75e
children d27f1ca7ba6a
files src/app/app.module.ts src/app/services/audio-player/audio-player.service.ts
diffstat 2 files changed, 6 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/app.module.ts	Thu Jun 29 14:35:51 2017 +0100
+++ b/src/app/app.module.ts	Thu Jun 29 20:08:11 2017 +0100
@@ -9,7 +9,6 @@
 import { PlaybackControlComponent } from './playback-control/playback-control.component';
 import {
   AudioPlayerService,
-  UrlResourceLifetimeManager,
   ResourceReader
 } from './services/audio-player/audio-player.service';
 import { FeatureExtractionService } from './services/feature-extraction/feature-extraction.service';
@@ -92,6 +91,11 @@
   };
 }
 
+export abstract class UrlResourceLifetimeManager {
+  abstract createUrlToResource(resource: File | Blob): string;
+  abstract revokeUrlToResource(url: string): void;
+}
+
 export function createResourceReader(): ResourceReader {
   return (resource) => {
     return new Promise((res, rej) => {
--- a/src/app/services/audio-player/audio-player.service.ts	Thu Jun 29 14:35:51 2017 +0100
+++ b/src/app/services/audio-player/audio-player.service.ts	Thu Jun 29 20:08:11 2017 +0100
@@ -2,11 +2,7 @@
 import {Subject} from 'rxjs/Subject';
 import {Observable} from 'rxjs/Observable';
 import {ReplaySubject} from 'rxjs/ReplaySubject';
-
-export interface UrlResourceLifetimeManager {
-  createUrlToResource(resource: File | Blob): string;
-  revokeUrlToResource(url: string): void;
-}
+import {UrlResourceLifetimeManager} from '../../app.module';
 
 export type ResourceReader = (resource: File | Blob) => Promise<ArrayBuffer>;
 
@@ -66,9 +62,6 @@
 
 
   loadAudio(resource: File | Blob): string {
-    if (this.currentObjectUrl) {
-      this.resourceManager.revokeUrlToResource(this.currentObjectUrl);
-    }
     const url: string = this.resourceManager.createUrlToResource(resource);
     this.currentObjectUrl = url;
     this.audioElement.pause();