@@ -27,7 +27,6 @@ import { createTimestampFile, showAndLogErrorMessage } from '../helpers';
2727import { QueryStatus } from '../query-status' ;
2828import * as fs from 'fs-extra' ;
2929
30-
3130export class VariantAnalysisManager extends DisposableObject implements VariantAnalysisViewManager < VariantAnalysisView > {
3231 private readonly _onVariantAnalysisAdded = this . push ( new EventEmitter < VariantAnalysis > ( ) ) ;
3332 public readonly onVariantAnalysisAdded = this . _onVariantAnalysisAdded . event ;
@@ -75,6 +74,9 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
7574 this . variantAnalysisResultsManager . removeAnalysisResults ( variantAnalysis ) ;
7675 await this . removeStorageDirectory ( variantAnalysis . id ) ;
7776 this . variantAnalyses . delete ( variantAnalysis . id ) ;
77+
78+ // This will automatically unregister the view
79+ this . views . get ( variantAnalysis . id ) ?. dispose ( ) ;
7880 }
7981
8082 private async removeStorageDirectory ( variantAnalysisId : number ) {
@@ -88,7 +90,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
8890 }
8991 if ( ! this . views . has ( variantAnalysisId ) ) {
9092 // The view will register itself with the manager, so we don't need to do anything here.
91- this . push ( new VariantAnalysisView ( this . ctx , variantAnalysisId , this ) ) ;
93+ this . track ( new VariantAnalysisView ( this . ctx , variantAnalysisId , this ) ) ;
9294 }
9395
9496 const variantAnalysisView = this . views . get ( variantAnalysisId ) ! ;
@@ -106,6 +108,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
106108
107109 public unregisterView ( view : VariantAnalysisView ) : void {
108110 this . views . delete ( view . variantAnalysisId ) ;
111+ this . disposeAndStopTracking ( view ) ;
109112 }
110113
111114 public getView ( variantAnalysisId : number ) : VariantAnalysisView | undefined {
0 commit comments