changeset 459:8d561b6df2fa

Load the audio for the top notebook after removing an item.
author Lucas Thompson <dev@lucas.im>
date Fri, 30 Jun 2017 00:59:38 +0100
parents f8d37ce6f475
children ccce2c09502e
files src/app/app.component.ts
diffstat 1 files changed, 28 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/app.component.ts	Fri Jun 30 00:58:44 2017 +0100
+++ b/src/app/app.component.ts	Fri Jun 30 00:59:38 2017 +0100
@@ -99,7 +99,6 @@
   styleUrls: ['./app.component.css']
 })
 export class AppComponent implements OnDestroy {
-  audioBuffer: AudioBuffer; // TODO consider revising
   canExtract: boolean;
   private onAudioDataSubscription: Subscription;
   private onProgressUpdated: Subscription;
@@ -135,9 +134,8 @@
           this.analyses.shift();
           this.canExtract = false;
         } else {
-          this.audioBuffer = (resource as AudioResource).samples;
-          this.rootAudioItem.audioData = this.audioBuffer;
-          if (this.audioBuffer) {
+          this.rootAudioItem.audioData = (resource as AudioResource).samples;
+          if (this.rootAudioItem.audioData) {
             this.canExtract = true;
             const currentRootIndex = this.analyses.findIndex(val => {
               return isRootAudioItem(val) && val.uri === this.rootAudioItem.uri;
@@ -148,7 +146,7 @@
                 Object.assign(
                   {},
                   this.analyses.get(currentRootIndex),
-                  {audioData: this.audioBuffer}
+                  {audioData: this.rootAudioItem.audioData}
                 )
               );
             }
@@ -224,13 +222,15 @@
     };
     this.analyses.unshift(placeholderCard);
 
+    const audioBuffer = this.rootAudioItem.audioData;
+
     this.featureService.extract(`${this.countingId}`, {
-      audioData: [...Array(this.audioBuffer.numberOfChannels).keys()]
-        .map(i => this.audioBuffer.getChannelData(i)),
+      audioData: [...Array(audioBuffer.numberOfChannels).keys()]
+        .map(i => audioBuffer.getChannelData(i)),
       audioFormat: {
-        sampleRate: this.audioBuffer.sampleRate,
-        channelCount: this.audioBuffer.numberOfChannels,
-        length: this.audioBuffer.length
+        sampleRate: audioBuffer.sampleRate,
+        channelCount: audioBuffer.numberOfChannels,
+        length: audioBuffer.length
       },
       key: outputInfo.extractorKey,
       outputId: outputInfo.outputId
@@ -265,14 +265,31 @@
         }
         return toRemove;
       }, []);
+    this.analyses.remove(...indicesToRemove);
     if (isPendingRootAudioItem(item)) {
       if (this.rootAudioItem.uri === item.uri) {
         this.audioService.unload();
+        const topItem = this.analyses.get(0);
+        const nullRootAudio: RootAudioItem = {uri: ''} as any; // TODO eugh
+
+        if (topItem) {
+          if (isPendingAnalysisItem(topItem)) {
+            this.rootAudioItem = topItem.parent as RootAudioItem;
+          } else if(isPendingRootAudioItem(topItem)) {
+            this.rootAudioItem = topItem as RootAudioItem
+          } else {
+           this.rootAudioItem = nullRootAudio;
+          }
+        } else {
+          this.rootAudioItem = nullRootAudio;
+        }
+        if (this.rootAudioItem) {
+          this.audioService.loadAudioFromUri(this.rootAudioItem.uri);
+        }
       } else {
         this.resourceManager.revokeUrlToResource(item.uri);
       }
     }
-    this.analyses.remove(...indicesToRemove);
   }
 
   ngOnDestroy(): void {