Skip to content

Commit 908abb4

Browse files
authored
Merge pull request #1574 from github/koesie10/view-loaded-message
Handle `viewLoaded` message
2 parents a071470 + 2ae9514 commit 908abb4

File tree

7 files changed

+95
-222
lines changed

7 files changed

+95
-222
lines changed

extensions/ql-vscode/package.json

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,6 @@
314314
"command": "codeQL.exportVariantAnalysisResults",
315315
"title": "CodeQL: Export Variant Analysis Results"
316316
},
317-
{
318-
"command": "codeQL.mockVariantAnalysisView",
319-
"title": "CodeQL: Open Variant Analysis Mock View"
320-
},
321317
{
322318
"command": "codeQL.runQueries",
323319
"title": "CodeQL: Run Queries in Selected Files"
@@ -898,10 +894,6 @@
898894
"command": "codeQL.exportVariantAnalysisResults",
899895
"when": "config.codeQL.canary"
900896
},
901-
{
902-
"command": "codeQL.mockVariantAnalysisView",
903-
"when": "config.codeQL.canary && config.codeQL.variantAnalysis.liveResults"
904-
},
905897
{
906898
"command": "codeQL.runQueries",
907899
"when": "false"

extensions/ql-vscode/src/extension.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -960,15 +960,6 @@ async function activateWithInstalledDistribution(
960960
})
961961
);
962962

963-
ctx.subscriptions.push(
964-
commandRunner('codeQL.mockVariantAnalysisView', async () => {
965-
// Generate a random variant analysis ID for testing
966-
const variantAnalysisId: number = Math.floor(Math.random() * 1000000);
967-
968-
await variantAnalysisManager.showView(variantAnalysisId);
969-
})
970-
);
971-
972963
ctx.subscriptions.push(
973964
commandRunner('codeQL.loadVariantAnalysisRepoResults', async (variantAnalysisId: number, repositoryFullName: string) => {
974965
await variantAnalysisManager.loadResults(variantAnalysisId, repositoryFullName);

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
7171
return this.views.get(variantAnalysisId);
7272
}
7373

74+
public async getVariantAnalysis(variantAnalysisId: number): Promise<VariantAnalysis | undefined> {
75+
return this.variantAnalyses.get(variantAnalysisId);
76+
}
77+
7478
public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise<void> {
7579
const variantAnalysis = this.variantAnalyses.get(variantAnalysisId);
7680
if (!variantAnalysis) {

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { VariantAnalysis } from './shared/variant-analysis';
2+
13
export interface VariantAnalysisViewInterface {
24
variantAnalysisId: number;
35
openView(): Promise<void>;
@@ -6,4 +8,6 @@ export interface VariantAnalysisViewInterface {
68
export interface VariantAnalysisViewManager<T extends VariantAnalysisViewInterface> {
79
registerView(view: T): void;
810
unregisterView(view: T): void;
11+
12+
getVariantAnalysis(variantAnalysisId: number): Promise<VariantAnalysis | undefined>;
913
}

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

Lines changed: 18 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@ import { FromVariantAnalysisMessage, ToVariantAnalysisMessage } from '../pure/in
55
import { assertNever } from '../pure/helpers-pure';
66
import {
77
VariantAnalysis,
8-
VariantAnalysisQueryLanguage,
9-
VariantAnalysisRepoStatus,
108
VariantAnalysisScannedRepositoryResult,
119
VariantAnalysisScannedRepositoryState,
12-
VariantAnalysisStatus
1310
} from './shared/variant-analysis';
1411
import { VariantAnalysisViewInterface, VariantAnalysisViewManager } from './variant-analysis-view-manager';
12+
import { showAndLogWarningMessage } from '../helpers';
1513

1614
export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessage, FromVariantAnalysisMessage> implements VariantAnalysisViewInterface {
1715
public static readonly viewType = 'codeQL.variantAnalysis';
@@ -82,14 +80,7 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
8280
protected async onMessage(msg: FromVariantAnalysisMessage): Promise<void> {
8381
switch (msg.t) {
8482
case 'viewLoaded':
85-
this.onWebViewLoaded();
86-
87-
void logger.log('Variant analysis view loaded');
88-
89-
await this.postMessage({
90-
t: 'setVariantAnalysis',
91-
variantAnalysis: this.getVariantAnalysis(),
92-
});
83+
await this.onWebViewLoaded();
9384

9485
break;
9586
case 'stopVariantAnalysis':
@@ -103,152 +94,21 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
10394
}
10495
}
10596

106-
private getVariantAnalysis(): VariantAnalysis {
107-
return {
108-
id: this.variantAnalysisId,
109-
controllerRepoId: 1,
110-
actionsWorkflowRunId: 789263,
111-
query: {
112-
name: 'Example query',
113-
filePath: 'example.ql',
114-
language: VariantAnalysisQueryLanguage.Javascript,
115-
},
116-
databases: {},
117-
status: VariantAnalysisStatus.InProgress,
118-
scannedRepos: [
119-
{
120-
repository: {
121-
id: 1,
122-
fullName: 'octodemo/hello-world-1',
123-
private: false,
124-
},
125-
analysisStatus: VariantAnalysisRepoStatus.Pending,
126-
},
127-
{
128-
repository: {
129-
id: 2,
130-
fullName: 'octodemo/hello-world-2',
131-
private: false,
132-
},
133-
analysisStatus: VariantAnalysisRepoStatus.Pending,
134-
},
135-
{
136-
repository: {
137-
id: 3,
138-
fullName: 'octodemo/hello-world-3',
139-
private: false,
140-
},
141-
analysisStatus: VariantAnalysisRepoStatus.Pending,
142-
},
143-
{
144-
repository: {
145-
id: 4,
146-
fullName: 'octodemo/hello-world-4',
147-
private: false,
148-
},
149-
analysisStatus: VariantAnalysisRepoStatus.Pending,
150-
},
151-
{
152-
repository: {
153-
id: 5,
154-
fullName: 'octodemo/hello-world-5',
155-
private: false,
156-
},
157-
analysisStatus: VariantAnalysisRepoStatus.Pending,
158-
},
159-
{
160-
repository: {
161-
id: 6,
162-
fullName: 'octodemo/hello-world-6',
163-
private: false,
164-
},
165-
analysisStatus: VariantAnalysisRepoStatus.Pending,
166-
},
167-
{
168-
repository: {
169-
id: 7,
170-
fullName: 'octodemo/hello-world-7',
171-
private: false,
172-
},
173-
analysisStatus: VariantAnalysisRepoStatus.Pending,
174-
},
175-
{
176-
repository: {
177-
id: 8,
178-
fullName: 'octodemo/hello-world-8',
179-
private: false,
180-
},
181-
analysisStatus: VariantAnalysisRepoStatus.Pending,
182-
},
183-
{
184-
repository: {
185-
id: 9,
186-
fullName: 'octodemo/hello-world-9',
187-
private: false,
188-
},
189-
analysisStatus: VariantAnalysisRepoStatus.Pending,
190-
},
191-
{
192-
repository: {
193-
id: 10,
194-
fullName: 'octodemo/hello-world-10',
195-
private: false,
196-
},
197-
analysisStatus: VariantAnalysisRepoStatus.Pending,
198-
},
199-
],
200-
skippedRepos: {
201-
notFoundRepos: {
202-
repositoryCount: 2,
203-
repositories: [
204-
{
205-
fullName: 'octodemo/hello-globe'
206-
},
207-
{
208-
fullName: 'octodemo/hello-planet'
209-
}
210-
]
211-
},
212-
noCodeqlDbRepos: {
213-
repositoryCount: 4,
214-
repositories: [
215-
{
216-
id: 100,
217-
fullName: 'octodemo/no-db-1'
218-
},
219-
{
220-
id: 101,
221-
fullName: 'octodemo/no-db-2'
222-
},
223-
{
224-
id: 102,
225-
fullName: 'octodemo/no-db-3'
226-
},
227-
{
228-
id: 103,
229-
fullName: 'octodemo/no-db-4'
230-
}
231-
]
232-
},
233-
overLimitRepos: {
234-
repositoryCount: 1,
235-
repositories: [
236-
{
237-
id: 201,
238-
fullName: 'octodemo/over-limit-1'
239-
}
240-
]
241-
},
242-
accessMismatchRepos: {
243-
repositoryCount: 1,
244-
repositories: [
245-
{
246-
id: 205,
247-
fullName: 'octodemo/private'
248-
}
249-
]
250-
}
251-
},
252-
};
97+
protected async onWebViewLoaded() {
98+
super.onWebViewLoaded();
99+
100+
void logger.log('Variant analysis view loaded');
101+
102+
const variantAnalysis = await this.manager.getVariantAnalysis(this.variantAnalysisId);
103+
104+
if (!variantAnalysis) {
105+
void showAndLogWarningMessage('Unable to load variant analysis');
106+
return;
107+
}
108+
109+
await this.postMessage({
110+
t: 'setVariantAnalysis',
111+
variantAnalysis,
112+
});
253113
}
254114
}

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

Lines changed: 67 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
import React from 'react';
22

3-
import { ComponentStory, ComponentMeta } from '@storybook/react';
3+
import { ComponentMeta, ComponentStory } from '@storybook/react';
44

55
import { VariantAnalysis as VariantAnalysisComponent } from '../../view/variant-analysis/VariantAnalysis';
66
import {
77
VariantAnalysis as VariantAnalysisDomainModel,
8-
VariantAnalysisQueryLanguage, VariantAnalysisRepoStatus, VariantAnalysisStatus
8+
VariantAnalysisQueryLanguage,
9+
VariantAnalysisRepoStatus,
10+
VariantAnalysisScannedRepositoryDownloadStatus,
11+
VariantAnalysisScannedRepositoryResult,
12+
VariantAnalysisScannedRepositoryState,
13+
VariantAnalysisStatus
914
} from '../../remote-queries/shared/variant-analysis';
1015

1116
export default {
@@ -35,23 +40,23 @@ const variantAnalysis: VariantAnalysisDomainModel = {
3540
fullName: 'octodemo/hello-world-1',
3641
private: false,
3742
},
38-
analysisStatus: VariantAnalysisRepoStatus.Pending,
43+
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
3944
},
4045
{
4146
repository: {
4247
id: 2,
4348
fullName: 'octodemo/hello-world-2',
4449
private: false,
4550
},
46-
analysisStatus: VariantAnalysisRepoStatus.Pending,
51+
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
4752
},
4853
{
4954
repository: {
5055
id: 3,
5156
fullName: 'octodemo/hello-world-3',
5257
private: false,
5358
},
54-
analysisStatus: VariantAnalysisRepoStatus.Pending,
59+
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
5560
},
5661
{
5762
repository: {
@@ -67,15 +72,15 @@ const variantAnalysis: VariantAnalysisDomainModel = {
6772
fullName: 'octodemo/hello-world-5',
6873
private: false,
6974
},
70-
analysisStatus: VariantAnalysisRepoStatus.Pending,
75+
analysisStatus: VariantAnalysisRepoStatus.Failed,
7176
},
7277
{
7378
repository: {
7479
id: 6,
7580
fullName: 'octodemo/hello-world-6',
7681
private: false,
7782
},
78-
analysisStatus: VariantAnalysisRepoStatus.Pending,
83+
analysisStatus: VariantAnalysisRepoStatus.InProgress,
7984
},
8085
{
8186
repository: {
@@ -164,10 +169,64 @@ const variantAnalysis: VariantAnalysisDomainModel = {
164169
},
165170
};
166171

172+
const repoStates: VariantAnalysisScannedRepositoryState[] = [
173+
{
174+
repositoryId: 1,
175+
downloadStatus: VariantAnalysisScannedRepositoryDownloadStatus.Succeeded
176+
},
177+
{
178+
repositoryId: 2,
179+
downloadStatus: VariantAnalysisScannedRepositoryDownloadStatus.InProgress,
180+
},
181+
{
182+
repositoryId: 3,
183+
downloadStatus: VariantAnalysisScannedRepositoryDownloadStatus.Failed,
184+
},
185+
];
186+
187+
const repoResults: VariantAnalysisScannedRepositoryResult[] = [
188+
{
189+
variantAnalysisId: 1,
190+
repositoryId: 1,
191+
rawResults: {
192+
schema: {
193+
name: '#select',
194+
rows: 1,
195+
columns: [
196+
{
197+
kind: 'i'
198+
}
199+
]
200+
},
201+
resultSet: {
202+
schema: {
203+
name: '#select',
204+
rows: 1,
205+
columns: [
206+
{
207+
kind: 'i'
208+
}
209+
]
210+
},
211+
rows: [
212+
[
213+
60688
214+
]
215+
]
216+
},
217+
fileLinkPrefix: 'https://github.com/octodemo/hello-world-1/blob/59a2a6c7d9dde7a6ecb77c2f7e8197d6925c143b',
218+
sourceLocationPrefix: '/home/runner/work/bulk-builder/bulk-builder',
219+
capped: false
220+
}
221+
}
222+
];
223+
167224
export const Loading = Template.bind({});
168225
Loading.args = {};
169226

170227
export const FullExample = Template.bind({});
171228
FullExample.args = {
172-
variantAnalysis: variantAnalysis,
229+
variantAnalysis,
230+
repoStates,
231+
repoResults,
173232
};

0 commit comments

Comments
 (0)