Send variant analysis on viewLoaded message

When the `viewLoaded` message is received by the view, it will now
retrieve the variant analysis from the manager and send it to the
view. This will allow the view to display the variant analysis.
This commit is contained in:
Koen Vlaswinkel
2022-10-07 14:57:38 +02:00
parent 1d02c19854
commit 76a00e5fa5
3 changed files with 24 additions and 158 deletions

View File

@@ -68,6 +68,10 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
return this.views.get(variantAnalysisId);
}
public async getVariantAnalysis(variantAnalysisId: number): Promise<VariantAnalysis | undefined> {
return this.variantAnalyses.get(variantAnalysisId);
}
public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise<void> {
const variantAnalysis = this.variantAnalyses.get(variantAnalysisId);
if (!variantAnalysis) {

View File

@@ -1,3 +1,5 @@
import { VariantAnalysis } from './shared/variant-analysis';
export interface VariantAnalysisViewInterface {
variantAnalysisId: number;
openView(): Promise<void>;
@@ -6,4 +8,6 @@ export interface VariantAnalysisViewInterface {
export interface VariantAnalysisViewManager<T extends VariantAnalysisViewInterface> {
registerView(view: T): void;
unregisterView(view: T): void;
getVariantAnalysis(variantAnalysisId: number): Promise<VariantAnalysis | undefined>;
}

View File

@@ -5,11 +5,8 @@ import { FromVariantAnalysisMessage, ToVariantAnalysisMessage } from '../pure/in
import { assertNever } from '../pure/helpers-pure';
import {
VariantAnalysis,
VariantAnalysisQueryLanguage,
VariantAnalysisRepoStatus,
VariantAnalysisScannedRepositoryResult,
VariantAnalysisScannedRepositoryState,
VariantAnalysisStatus
} from './shared/variant-analysis';
import { VariantAnalysisViewInterface, VariantAnalysisViewManager } from './variant-analysis-view-manager';
@@ -82,14 +79,7 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
protected async onMessage(msg: FromVariantAnalysisMessage): Promise<void> {
switch (msg.t) {
case 'viewLoaded':
this.onWebViewLoaded();
void logger.log('Variant analysis view loaded');
await this.postMessage({
t: 'setVariantAnalysis',
variantAnalysis: this.getVariantAnalysis(),
});
await this.onWebViewLoaded();
break;
case 'stopVariantAnalysis':
@@ -103,152 +93,20 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
}
}
private getVariantAnalysis(): VariantAnalysis {
return {
id: this.variantAnalysisId,
controllerRepoId: 1,
actionsWorkflowRunId: 789263,
query: {
name: 'Example query',
filePath: 'example.ql',
language: VariantAnalysisQueryLanguage.Javascript,
},
databases: {},
status: VariantAnalysisStatus.InProgress,
scannedRepos: [
{
repository: {
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 2,
fullName: 'octodemo/hello-world-2',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 3,
fullName: 'octodemo/hello-world-3',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 4,
fullName: 'octodemo/hello-world-4',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 5,
fullName: 'octodemo/hello-world-5',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 6,
fullName: 'octodemo/hello-world-6',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 7,
fullName: 'octodemo/hello-world-7',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 8,
fullName: 'octodemo/hello-world-8',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 9,
fullName: 'octodemo/hello-world-9',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
{
repository: {
id: 10,
fullName: 'octodemo/hello-world-10',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
],
skippedRepos: {
notFoundRepos: {
repositoryCount: 2,
repositories: [
{
fullName: 'octodemo/hello-globe'
},
{
fullName: 'octodemo/hello-planet'
}
]
},
noCodeqlDbRepos: {
repositoryCount: 4,
repositories: [
{
id: 100,
fullName: 'octodemo/no-db-1'
},
{
id: 101,
fullName: 'octodemo/no-db-2'
},
{
id: 102,
fullName: 'octodemo/no-db-3'
},
{
id: 103,
fullName: 'octodemo/no-db-4'
}
]
},
overLimitRepos: {
repositoryCount: 1,
repositories: [
{
id: 201,
fullName: 'octodemo/over-limit-1'
}
]
},
accessMismatchRepos: {
repositoryCount: 1,
repositories: [
{
id: 205,
fullName: 'octodemo/private'
}
]
}
},
};
protected async onWebViewLoaded() {
super.onWebViewLoaded();
void logger.log('Variant analysis view loaded');
const variantAnalysis = await this.manager.getVariantAnalysis(this.variantAnalysisId);
if (!variantAnalysis) {
return;
}
await this.postMessage({
t: 'setVariantAnalysis',
variantAnalysis,
});
}
}