Skip to content

Commit 03e48b7

Browse files
authored
Merge pull request #1728 from github/koesie10/failed-view
Handle failed status in variant analysis view
2 parents 71297e3 + c2baa45 commit 03e48b7

File tree

3 files changed

+74
-1
lines changed

3 files changed

+74
-1
lines changed

extensions/ql-vscode/src/stories/variant-analysis/VariantAnalysis.stories.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { ComponentMeta, ComponentStory } from '@storybook/react';
55
import { VariantAnalysis as VariantAnalysisComponent } from '../../view/variant-analysis/VariantAnalysis';
66
import {
77
VariantAnalysis as VariantAnalysisDomainModel,
8+
VariantAnalysisFailureReason,
89
VariantAnalysisRepoStatus,
910
VariantAnalysisScannedRepositoryDownloadStatus,
1011
VariantAnalysisScannedRepositoryResult,
@@ -362,3 +363,23 @@ Canceled.args = {
362363
repoStates,
363364
repoResults,
364365
};
366+
367+
export const Failed = Template.bind({});
368+
Failed.args = {
369+
variantAnalysis: {
370+
...variantAnalysis,
371+
status: VariantAnalysisStatus.Failed,
372+
failureReason: VariantAnalysisFailureReason.NoReposQueried,
373+
completedAt: new Date(new Date(variantAnalysis.createdAt).getTime() + 100_000).toISOString(),
374+
scannedRepos: [],
375+
skippedRepos: {
376+
...variantAnalysis.skippedRepos,
377+
overLimitRepos: {
378+
repositoryCount: 0,
379+
repositories: [],
380+
},
381+
}
382+
},
383+
repoStates,
384+
repoResults,
385+
};
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import * as React from 'react';
2+
import { VSCodeButton } from '@vscode/webview-ui-toolkit/react';
3+
import { Alert } from '../common';
4+
import { vscode } from '../vscode-api';
5+
import { VariantAnalysisFailureReason } from '../../remote-queries/shared/variant-analysis';
6+
7+
type Props = {
8+
failureReason: VariantAnalysisFailureReason;
9+
showLogsButton: boolean;
10+
};
11+
12+
const getTitle = (failureReason: VariantAnalysisFailureReason): string => {
13+
switch (failureReason) {
14+
case VariantAnalysisFailureReason.NoReposQueried:
15+
return 'No repositories to analyze';
16+
case VariantAnalysisFailureReason.InternalError:
17+
return 'Something unexpected happened';
18+
}
19+
};
20+
21+
const getMessage = (failureReason: VariantAnalysisFailureReason): string => {
22+
switch (failureReason) {
23+
case VariantAnalysisFailureReason.NoReposQueried:
24+
return 'No repositories available after processing. No repositories were analyzed.';
25+
case VariantAnalysisFailureReason.InternalError:
26+
return 'An internal error occurred while running this variant analysis. Please try again later.';
27+
}
28+
};
29+
30+
const openLogs = () => {
31+
vscode.postMessage({
32+
t: 'openLogs',
33+
});
34+
};
35+
36+
export const FailureReasonAlert = ({
37+
failureReason,
38+
showLogsButton,
39+
}: Props) => {
40+
return (
41+
<Alert
42+
type="error"
43+
title={getTitle(failureReason)}
44+
message={getMessage(failureReason)}
45+
actions={showLogsButton && <VSCodeButton appearance="secondary" onClick={openLogs}>View logs</VSCodeButton>}
46+
/>
47+
);
48+
};

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ import {
77
VariantAnalysis,
88
VariantAnalysisScannedRepositoryResult,
99
VariantAnalysisScannedRepositoryState,
10-
VariantAnalysisStatus,
10+
VariantAnalysisStatus
1111
} from '../../remote-queries/shared/variant-analysis';
1212
import { VariantAnalysisAnalyzedRepos } from './VariantAnalysisAnalyzedRepos';
1313
import { Alert } from '../common';
1414
import { VariantAnalysisSkippedRepositoriesTab } from './VariantAnalysisSkippedRepositoriesTab';
1515
import { defaultFilterSortState, RepositoriesFilterSortState } from './filterSort';
1616
import { RepositoriesSearchSortRow } from './RepositoriesSearchSortRow';
17+
import { FailureReasonAlert } from './FailureReasonAlert';
1718

1819
export type VariantAnalysisOutcomePanelProps = {
1920
variantAnalysis: VariantAnalysis;
@@ -63,6 +64,9 @@ export const VariantAnalysisOutcomePanels = ({
6364
message="Variant analysis canceled before all queries were complete. Some repositories were not analyzed."
6465
/>
6566
)}
67+
{variantAnalysis.status === VariantAnalysisStatus.Failed && variantAnalysis.failureReason && (
68+
<FailureReasonAlert failureReason={variantAnalysis.failureReason} showLogsButton={!!variantAnalysis.actionsWorkflowRunId} />
69+
)}
6670
{overLimitRepositoryCount > 0 && (
6771
<Alert
6872
type="warning"

0 commit comments

Comments
 (0)