Mercurial > hg > ugly-duckling
comparison 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 |
comparison
equal
deleted
inserted
replaced
191:ea735ebeed0e | 192:e4f38975c2bc |
---|---|
8 import { WaveformComponent } from './waveform/waveform.component'; | 8 import { WaveformComponent } from './waveform/waveform.component'; |
9 import { AudioFileOpenComponent } from './audio-file-open/audio-file-open.component'; | 9 import { AudioFileOpenComponent } from './audio-file-open/audio-file-open.component'; |
10 import { PlaybackControlComponent } from './playback-control/playback-control.component'; | 10 import { PlaybackControlComponent } from './playback-control/playback-control.component'; |
11 import { | 11 import { |
12 AudioPlayerService, | 12 AudioPlayerService, |
13 UrlResourceLifetimeManager | 13 UrlResourceLifetimeManager, ResourceReader |
14 } from "./services/audio-player/audio-player.service"; | 14 } from "./services/audio-player/audio-player.service"; |
15 import { FeatureExtractionService } from "./services/feature-extraction/feature-extraction.service"; | 15 import { FeatureExtractionService } from "./services/feature-extraction/feature-extraction.service"; |
16 import { FeatureExtractionMenuComponent } from "./feature-extraction-menu/feature-extraction-menu.component"; | 16 import { FeatureExtractionMenuComponent } from "./feature-extraction-menu/feature-extraction-menu.component"; |
17 import { ProgressSpinnerComponent } from "./progress-spinner/progress-spinner.component"; | 17 import { ProgressSpinnerComponent } from "./progress-spinner/progress-spinner.component"; |
18 import { | 18 import { |
71 revokeUrlToResource: (url: string) => { | 71 revokeUrlToResource: (url: string) => { |
72 URL.revokeObjectURL(url); | 72 URL.revokeObjectURL(url); |
73 } | 73 } |
74 }; | 74 }; |
75 | 75 |
76 export const readResource: ResourceReader = (resource) => { | |
77 return new Promise((res, rej) => { | |
78 const reader: FileReader = new FileReader(); | |
79 reader.onload = (event: any) => { | |
80 res(event.target.result); | |
81 }; | |
82 reader.onerror = (event) => { | |
83 rej(event.message); | |
84 }; | |
85 reader.readAsArrayBuffer(resource); | |
86 }); | |
87 }; | |
88 | |
76 @NgModule({ | 89 @NgModule({ |
77 declarations: [ | 90 declarations: [ |
78 AppComponent, | 91 AppComponent, |
79 WaveformComponent, | 92 WaveformComponent, |
80 AudioFileOpenComponent, | 93 AudioFileOpenComponent, |
98 {provide: 'AudioInputProvider', useFactory: createAudioInputProvider}, | 111 {provide: 'AudioInputProvider', useFactory: createAudioInputProvider}, |
99 AudioRecorderService, | 112 AudioRecorderService, |
100 FeatureExtractionService, | 113 FeatureExtractionService, |
101 {provide: 'MediaRecorderFactory', useFactory: createMediaRecorderFactory}, | 114 {provide: 'MediaRecorderFactory', useFactory: createMediaRecorderFactory}, |
102 {provide: 'PiperRepoUri', useValue: 'assets/remote-plugins.json'}, | 115 {provide: 'PiperRepoUri', useValue: 'assets/remote-plugins.json'}, |
103 {provide: 'UrlResourceLifetimeManager', useValue: urlResourceManager} | 116 {provide: 'UrlResourceLifetimeManager', useValue: urlResourceManager}, |
117 {provide: 'ResourceReader', useValue: readResource} | |
104 ], | 118 ], |
105 bootstrap: [AppComponent] | 119 bootstrap: [AppComponent] |
106 }) | 120 }) |
107 export class AppModule { | 121 export class AppModule { |
108 | 122 |