Skip to content

Commit 4138ca1

Browse files
committed
Receive setRepoResults message in React component
1 parent 6941584 commit 4138ca1

2 files changed

Lines changed: 19 additions & 5 deletions

File tree

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as sarif from 'sarif';
22
import { AnalysisResults } from '../remote-queries/shared/analysis-result';
33
import { AnalysisSummary, RemoteQueryResult } from '../remote-queries/shared/remote-query-result';
44
import { RawResultSet, ResultRow, ResultSetSchema, Column, ResolvableLocationValue } from './bqrs-cli-types';
5-
import { VariantAnalysis } from '../remote-queries/shared/variant-analysis';
5+
import { VariantAnalysis, VariantAnalysisScannedRepositoryResult } from '../remote-queries/shared/variant-analysis';
66

77
/**
88
* This module contains types and code that are shared between
@@ -436,8 +436,14 @@ export interface SetVariantAnalysisMessage {
436436
variantAnalysis: VariantAnalysis;
437437
}
438438

439+
export interface SetRepoResultsMessage {
440+
t: 'setRepoResults';
441+
repoResults: VariantAnalysisScannedRepositoryResult[];
442+
}
443+
439444
export type ToVariantAnalysisMessage =
440-
| SetVariantAnalysisMessage;
445+
| SetVariantAnalysisMessage
446+
| SetRepoResultsMessage;
441447

442448
export type FromVariantAnalysisMessage =
443449
| ViewLoadedMsg;

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ const repositoryResults: VariantAnalysisScannedRepositoryResult[] = [
200200
}
201201
];
202202

203-
function getContainerContents(variantAnalysis: VariantAnalysisDomainModel) {
203+
function getContainerContents(variantAnalysis: VariantAnalysisDomainModel, repoResults: VariantAnalysisScannedRepositoryResult[]) {
204204
if (variantAnalysis.actionsWorkflowRunId === undefined) {
205205
return <VariantAnalysisLoading />;
206206
}
@@ -218,27 +218,35 @@ function getContainerContents(variantAnalysis: VariantAnalysisDomainModel) {
218218
/>
219219
<VariantAnalysisOutcomePanels
220220
variantAnalysis={variantAnalysis}
221-
repositoryResults={repositoryResults}
221+
repositoryResults={repoResults}
222222
/>
223223
</>
224224
);
225225
}
226226

227227
type Props = {
228228
variantAnalysis?: VariantAnalysisDomainModel;
229+
repoResults?: VariantAnalysisScannedRepositoryResult[];
229230
}
230231

231232
export function VariantAnalysis({
232233
variantAnalysis: initialVariantAnalysis = variantAnalysis,
234+
repoResults: initialRepoResults = repositoryResults,
233235
}: Props): JSX.Element {
234236
const [variantAnalysis, setVariantAnalysis] = useState<VariantAnalysisDomainModel>(initialVariantAnalysis);
237+
const [repoResults, setRepoResults] = useState<VariantAnalysisScannedRepositoryResult[]>(initialRepoResults);
235238

236239
useEffect(() => {
237240
window.addEventListener('message', (evt: MessageEvent) => {
238241
if (evt.origin === window.origin) {
239242
const msg: ToVariantAnalysisMessage = evt.data;
240243
if (msg.t === 'setVariantAnalysis') {
241244
setVariantAnalysis(msg.variantAnalysis);
245+
} else if (msg.t === 'setRepoResults') {
246+
setRepoResults(oldRepoResults => {
247+
const newRepoIds = msg.repoResults.map(r => r.repositoryId);
248+
return [...oldRepoResults.filter(v => !newRepoIds.includes(v.repositoryId)), ...msg.repoResults];
249+
});
242250
}
243251
} else {
244252
// sanitize origin
@@ -250,7 +258,7 @@ export function VariantAnalysis({
250258

251259
return (
252260
<VariantAnalysisContainer>
253-
{getContainerContents(variantAnalysis)}
261+
{getContainerContents(variantAnalysis, repoResults)}
254262
</VariantAnalysisContainer>
255263
);
256264
}

0 commit comments

Comments
 (0)