@@ -11,7 +11,11 @@ import {
1111 VariantAnalysisRepoTask ,
1212 VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository
1313} from './gh-api/variant-analysis' ;
14- import { VariantAnalysis } from './shared/variant-analysis' ;
14+ import {
15+ VariantAnalysis ,
16+ VariantAnalysisScannedRepositoryDownloadStatus ,
17+ VariantAnalysisScannedRepositoryState
18+ } from './shared/variant-analysis' ;
1519import { getErrorMessage } from '../pure/helpers-pure' ;
1620import { VariantAnalysisView } from './variant-analysis-view' ;
1721import { VariantAnalysisViewManager } from './variant-analysis-view-manager' ;
@@ -52,17 +56,20 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
5256 this . views . delete ( view . variantAnalysisId ) ;
5357 }
5458
59+ public getView ( variantAnalysisId : number ) : VariantAnalysisView | undefined {
60+ return this . views . get ( variantAnalysisId ) ;
61+ }
62+
5563 private async onVariantAnalysisUpdated ( variantAnalysis : VariantAnalysis | undefined ) : Promise < void > {
5664 if ( ! variantAnalysis ) {
5765 return ;
5866 }
5967
60- const view = this . views . get ( variantAnalysis . id ) ;
61- if ( ! view ) {
62- return ;
63- }
68+ await this . getView ( variantAnalysis . id ) ?. updateView ( variantAnalysis ) ;
69+ }
6470
65- await view . updateView ( variantAnalysis ) ;
71+ private async onRepoStateUpdated ( variantAnalysisId : number , repoState : VariantAnalysisScannedRepositoryState ) : Promise < void > {
72+ await this . getView ( variantAnalysisId ) ?. updateRepoState ( repoState ) ;
6673 }
6774
6875 public async monitorVariantAnalysis (
@@ -77,11 +84,19 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
7784 variantAnalysisSummary : VariantAnalysisApiResponse ,
7885 cancellationToken : CancellationToken
7986 ) : Promise < void > {
87+ const repoState = {
88+ repositoryId : scannedRepo . repository . id ,
89+ downloadStatus : VariantAnalysisScannedRepositoryDownloadStatus . Pending ,
90+ } ;
91+
92+ await this . onRepoStateUpdated ( variantAnalysisSummary . id , repoState ) ;
8093
8194 const credentials = await Credentials . initialize ( this . ctx ) ;
8295 if ( ! credentials ) { throw Error ( 'Error authenticating with GitHub' ) ; }
8396
8497 if ( cancellationToken && cancellationToken . isCancellationRequested ) {
98+ repoState . downloadStatus = VariantAnalysisScannedRepositoryDownloadStatus . Failed ;
99+ await this . onRepoStateUpdated ( variantAnalysisSummary . id , repoState ) ;
85100 return ;
86101 }
87102
@@ -93,10 +108,16 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
93108 variantAnalysisSummary . id ,
94109 scannedRepo . repository . id
95110 ) ;
111+ } catch ( e ) {
112+ repoState . downloadStatus = VariantAnalysisScannedRepositoryDownloadStatus . Failed ;
113+ await this . onRepoStateUpdated ( variantAnalysisSummary . id , repoState ) ;
114+ throw new Error ( `Could not download the results for variant analysis with id: ${ variantAnalysisSummary . id } . Error: ${ getErrorMessage ( e ) } ` ) ;
96115 }
97- catch ( e ) { throw new Error ( `Could not download the results for variant analysis with id: ${ variantAnalysisSummary . id } . Error: ${ getErrorMessage ( e ) } ` ) ; }
98116
99117 if ( repoTask . artifact_url ) {
118+ repoState . downloadStatus = VariantAnalysisScannedRepositoryDownloadStatus . InProgress ;
119+ await this . onRepoStateUpdated ( variantAnalysisSummary . id , repoState ) ;
120+
100121 const resultDirectory = path . join (
101122 this . ctx . globalStorageUri . fsPath ,
102123 'variant-analyses' ,
@@ -117,5 +138,8 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
117138 fs . mkdirSync ( resultDirectory , { recursive : true } ) ;
118139 await fs . writeFile ( storagePath , JSON . stringify ( result , null , 2 ) , 'utf8' ) ;
119140 }
141+
142+ repoState . downloadStatus = VariantAnalysisScannedRepositoryDownloadStatus . Succeeded ;
143+ await this . onRepoStateUpdated ( variantAnalysisSummary . id , repoState ) ;
120144 }
121145}
0 commit comments