Receive setRepoResults message in React component

This commit is contained in:
Koen Vlaswinkel
2022-10-04 11:50:56 +02:00
parent 6941584214
commit 4138ca1085
2 changed files with 19 additions and 5 deletions

View File

@@ -2,7 +2,7 @@ import * as sarif from 'sarif';
import { AnalysisResults } from '../remote-queries/shared/analysis-result';
import { AnalysisSummary, RemoteQueryResult } from '../remote-queries/shared/remote-query-result';
import { RawResultSet, ResultRow, ResultSetSchema, Column, ResolvableLocationValue } from './bqrs-cli-types';
import { VariantAnalysis } from '../remote-queries/shared/variant-analysis';
import { VariantAnalysis, VariantAnalysisScannedRepositoryResult } from '../remote-queries/shared/variant-analysis';
/**
* This module contains types and code that are shared between
@@ -436,8 +436,14 @@ export interface SetVariantAnalysisMessage {
variantAnalysis: VariantAnalysis;
}
export interface SetRepoResultsMessage {
t: 'setRepoResults';
repoResults: VariantAnalysisScannedRepositoryResult[];
}
export type ToVariantAnalysisMessage =
| SetVariantAnalysisMessage;
| SetVariantAnalysisMessage
| SetRepoResultsMessage;
export type FromVariantAnalysisMessage =
| ViewLoadedMsg;

View File

@@ -200,7 +200,7 @@ const repositoryResults: VariantAnalysisScannedRepositoryResult[] = [
}
];
function getContainerContents(variantAnalysis: VariantAnalysisDomainModel) {
function getContainerContents(variantAnalysis: VariantAnalysisDomainModel, repoResults: VariantAnalysisScannedRepositoryResult[]) {
if (variantAnalysis.actionsWorkflowRunId === undefined) {
return <VariantAnalysisLoading />;
}
@@ -218,7 +218,7 @@ function getContainerContents(variantAnalysis: VariantAnalysisDomainModel) {
/>
<VariantAnalysisOutcomePanels
variantAnalysis={variantAnalysis}
repositoryResults={repositoryResults}
repositoryResults={repoResults}
/>
</>
);
@@ -226,12 +226,15 @@ function getContainerContents(variantAnalysis: VariantAnalysisDomainModel) {
type Props = {
variantAnalysis?: VariantAnalysisDomainModel;
repoResults?: VariantAnalysisScannedRepositoryResult[];
}
export function VariantAnalysis({
variantAnalysis: initialVariantAnalysis = variantAnalysis,
repoResults: initialRepoResults = repositoryResults,
}: Props): JSX.Element {
const [variantAnalysis, setVariantAnalysis] = useState<VariantAnalysisDomainModel>(initialVariantAnalysis);
const [repoResults, setRepoResults] = useState<VariantAnalysisScannedRepositoryResult[]>(initialRepoResults);
useEffect(() => {
window.addEventListener('message', (evt: MessageEvent) => {
@@ -239,6 +242,11 @@ export function VariantAnalysis({
const msg: ToVariantAnalysisMessage = evt.data;
if (msg.t === 'setVariantAnalysis') {
setVariantAnalysis(msg.variantAnalysis);
} else if (msg.t === 'setRepoResults') {
setRepoResults(oldRepoResults => {
const newRepoIds = msg.repoResults.map(r => r.repositoryId);
return [...oldRepoResults.filter(v => !newRepoIds.includes(v.repositoryId)), ...msg.repoResults];
});
}
} else {
// sanitize origin
@@ -250,7 +258,7 @@ export function VariantAnalysis({
return (
<VariantAnalysisContainer>
{getContainerContents(variantAnalysis)}
{getContainerContents(variantAnalysis, repoResults)}
</VariantAnalysisContainer>
);
}