comparison src/app/app.module.ts @ 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 be88a0e965d7
children 5df3ce3574e5
comparison
equal deleted inserted replaced
453:8113b6f5a75e 454:f93582c38b70
7 import { WaveformComponent } from './visualisations/waveform/waveform.component'; 7 import { WaveformComponent } from './visualisations/waveform/waveform.component';
8 import { AudioFileOpenComponent } from './audio-file-open/audio-file-open.component'; 8 import { AudioFileOpenComponent } from './audio-file-open/audio-file-open.component';
9 import { PlaybackControlComponent } from './playback-control/playback-control.component'; 9 import { PlaybackControlComponent } from './playback-control/playback-control.component';
10 import { 10 import {
11 AudioPlayerService, 11 AudioPlayerService,
12 UrlResourceLifetimeManager,
13 ResourceReader 12 ResourceReader
14 } from './services/audio-player/audio-player.service'; 13 } from './services/audio-player/audio-player.service';
15 import { FeatureExtractionService } from './services/feature-extraction/feature-extraction.service'; 14 import { FeatureExtractionService } from './services/feature-extraction/feature-extraction.service';
16 import { FeatureExtractionMenuComponent } from './feature-extraction-menu/feature-extraction-menu.component'; 15 import { FeatureExtractionMenuComponent } from './feature-extraction-menu/feature-extraction-menu.component';
17 import { ProgressSpinnerComponent } from './progress-spinner/progress-spinner.component'; 16 import { ProgressSpinnerComponent } from './progress-spinner/progress-spinner.component';
90 URL.revokeObjectURL(url); 89 URL.revokeObjectURL(url);
91 } 90 }
92 }; 91 };
93 } 92 }
94 93
94 export abstract class UrlResourceLifetimeManager {
95 abstract createUrlToResource(resource: File | Blob): string;
96 abstract revokeUrlToResource(url: string): void;
97 }
98
95 export function createResourceReader(): ResourceReader { 99 export function createResourceReader(): ResourceReader {
96 return (resource) => { 100 return (resource) => {
97 return new Promise((res, rej) => { 101 return new Promise((res, rej) => {
98 const reader: FileReader = new FileReader(); 102 const reader: FileReader = new FileReader();
99 reader.onload = (event: any) => { 103 reader.onload = (event: any) => {