Skip to content

Commit fba4902

Browse files
committed
Send message to load results when expanding a repo item
1 parent dea3682 commit fba4902

File tree

3 files changed

+39
-7
lines changed

3 files changed

+39
-7
lines changed

extensions/ql-vscode/src/pure/interface-types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,11 +459,17 @@ export interface SetRepoStatesMessage {
459459
repoStates: VariantAnalysisScannedRepositoryState[];
460460
}
461461

462+
export interface RequestRepositoryResultsMessage {
463+
t: 'requestRepositoryResults';
464+
repositoryFullName: string;
465+
}
466+
462467
export type ToVariantAnalysisMessage =
463468
| SetVariantAnalysisMessage
464469
| SetRepoResultsMessage
465470
| SetRepoStatesMessage;
466471

467472
export type FromVariantAnalysisMessage =
468473
| ViewLoadedMsg
469-
| StopVariantAnalysisMessage;
474+
| StopVariantAnalysisMessage
475+
| RequestRepositoryResultsMessage;

extensions/ql-vscode/src/remote-queries/variant-analysis-view.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ExtensionContext, ViewColumn } from 'vscode';
1+
import { commands, ExtensionContext, ViewColumn } from 'vscode';
22
import { AbstractWebview, WebviewPanelConfig } from '../abstract-webview';
33
import { logger } from '../logging';
44
import { FromVariantAnalysisMessage, ToVariantAnalysisMessage } from '../pure/interface-types';
@@ -83,6 +83,9 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
8383
case 'stopVariantAnalysis':
8484
void logger.log(`Stop variant analysis: ${msg.variantAnalysisId}`);
8585
break;
86+
case 'requestRepositoryResults':
87+
void commands.executeCommand('codeQL.loadVariantAnalysisRepoResults', this.variantAnalysisId, msg.repositoryFullName);
88+
break;
8689
default:
8790
assertNever(msg);
8891
}

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

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import { useCallback, useState } from 'react';
2+
import { useCallback, useEffect, useState } from 'react';
33
import styled from 'styled-components';
44
import { VSCodeBadge, VSCodeCheckbox } from '@vscode/webview-ui-toolkit/react';
55
import {
@@ -11,6 +11,7 @@ import { formatDecimal } from '../../pure/number';
1111
import { Codicon, ErrorIcon, LoadingIcon, SuccessIcon, WarningIcon } from '../common';
1212
import { Repository } from '../../remote-queries/shared/repository';
1313
import { AnalysisAlert, AnalysisRawResults } from '../../remote-queries/shared/analysis-result';
14+
import { vscode } from '../vscode-api';
1415
import { AnalyzedRepoItemContent } from './AnalyzedRepoItemContent';
1516

1617
// This will ensure that these icons have a className which we can use in the TitleContainer
@@ -82,10 +83,32 @@ export const RepoRow = ({
8283
rawResults,
8384
}: RepoRowProps) => {
8485
const [isExpanded, setExpanded] = useState(false);
86+
const resultsLoaded = !!interpretedResults || !!rawResults;
87+
const [resultsLoading, setResultsLoading] = useState(false);
8588

86-
const toggleExpanded = useCallback(() => {
87-
setExpanded(oldIsExpanded => !oldIsExpanded);
88-
}, []);
89+
const toggleExpanded = useCallback(async () => {
90+
if (resultsLoading) {
91+
return;
92+
}
93+
94+
if (resultsLoaded) {
95+
setExpanded(oldIsExpanded => !oldIsExpanded);
96+
return;
97+
}
98+
99+
vscode.postMessage({
100+
t: 'requestRepositoryResults',
101+
repositoryFullName: repository.fullName,
102+
});
103+
104+
setResultsLoading(true);
105+
}, [resultsLoading, resultsLoaded, repository.fullName]);
106+
107+
useEffect(() => {
108+
if (resultsLoaded) {
109+
setResultsLoading(false);
110+
}
111+
}, [resultsLoaded]);
89112

90113
const disabled = !status || !isCompletedAnalysisRepoStatus(status);
91114

@@ -107,7 +130,7 @@ export const RepoRow = ({
107130
</span>
108131
{downloadStatus === VariantAnalysisScannedRepositoryDownloadStatus.InProgress && <LoadingIcon label="Downloading" />}
109132
</TitleContainer>
110-
{isExpanded && status &&
133+
{isExpanded && resultsLoaded && status &&
111134
<AnalyzedRepoItemContent status={status} interpretedResults={interpretedResults} rawResults={rawResults} />}
112135
</div>
113136
);

0 commit comments

Comments
 (0)