Skip to content

Commit cecd803

Browse files
committed
Improve responsiveness of model editor
1 parent 4531286 commit cecd803

File tree

5 files changed

+82
-13
lines changed

5 files changed

+82
-13
lines changed

extensions/ql-vscode/src/model-editor/extension-pack-picker.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,12 @@ import {
1818
} from "./extension-pack-name";
1919
import { autoPickExtensionsDirectory } from "./extensions-workspace-folder";
2020

21-
const maxStep = 3;
22-
2321
export async function pickExtensionPack(
2422
cliServer: Pick<CodeQLCliServer, "resolveQlpacks">,
2523
databaseItem: Pick<DatabaseItem, "name" | "language">,
2624
logger: NotificationLogger,
2725
progress: ProgressCallback,
26+
maxStep: number,
2827
): Promise<ExtensionPack | undefined> {
2928
progress({
3029
message: "Resolving extension packs...",

extensions/ql-vscode/src/model-editor/external-api-usage-queries.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,7 @@ export async function runExternalApiQueries(
106106
message: update.message,
107107
}),
108108
token,
109-
// We need to create a lock file, because the query is inside our own pack
110-
createLockFile: true,
109+
createLockFile: false,
111110
});
112111

113112
if (!completedQuery) {

extensions/ql-vscode/src/model-editor/model-editor-module.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ export class ModelEditorModule extends DisposableObject {
102102

103103
return withProgress(
104104
async (progress) => {
105+
const maxStep = 4;
106+
105107
if (!(await this.cliServer.cliConstraints.supportsQlpacksKind())) {
106108
void showAndLogErrorMessage(
107109
this.app.logger,
@@ -125,18 +127,31 @@ export class ModelEditorModule extends DisposableObject {
125127
db,
126128
this.app.logger,
127129
progress,
130+
maxStep,
128131
);
129132
if (!modelFile) {
130133
return;
131134
}
132135

136+
progress({
137+
message: "Installing dependencies...",
138+
step: 3,
139+
maxStep,
140+
});
141+
133142
// Create new temporary directory for query files and pack dependencies
134143
const queryDir = (await dir({ unsafeCleanup: true })).path;
135144
const success = await setUpPack(this.cliServer, queryDir, language);
136145
if (!success) {
137146
return;
138147
}
139148

149+
progress({
150+
message: "Opening editor...",
151+
step: 4,
152+
maxStep,
153+
});
154+
140155
const view = new ModelEditorView(
141156
this.ctx,
142157
this.app,

extensions/ql-vscode/src/model-editor/model-editor-view.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,7 @@ export class ModelEditorView extends AbstractWebview<
483483
addedDatabase,
484484
this.app.logger,
485485
progress,
486+
3,
486487
);
487488
if (!modelFile) {
488489
return;

extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/extension-pack-picker.test.ts

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ describe("pickExtensionPack", () => {
3434
let workspaceFolder: WorkspaceFolder;
3535

3636
const logger = createMockLogger();
37+
const maxStep = 4;
3738

3839
beforeEach(async () => {
3940
tmpDir = (
@@ -98,7 +99,13 @@ describe("pickExtensionPack", () => {
9899
const cliServer = mockCliServer(qlPacks);
99100

100101
expect(
101-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
102+
await pickExtensionPack(
103+
cliServer,
104+
databaseItem,
105+
logger,
106+
progress,
107+
maxStep,
108+
),
102109
).toEqual(autoExtensionPack);
103110
expect(cliServer.resolveQlpacks).toHaveBeenCalledTimes(1);
104111
expect(cliServer.resolveQlpacks).toHaveBeenCalledWith(
@@ -173,7 +180,13 @@ describe("pickExtensionPack", () => {
173180
const cliServer = mockCliServer({});
174181

175182
expect(
176-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
183+
await pickExtensionPack(
184+
cliServer,
185+
databaseItem,
186+
logger,
187+
progress,
188+
maxStep,
189+
),
177190
).toEqual({
178191
path: newPackDir,
179192
yamlPath: join(newPackDir, "codeql-pack.yml"),
@@ -241,7 +254,13 @@ describe("pickExtensionPack", () => {
241254
const cliServer = mockCliServer({});
242255

243256
expect(
244-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
257+
await pickExtensionPack(
258+
cliServer,
259+
databaseItem,
260+
logger,
261+
progress,
262+
maxStep,
263+
),
245264
).toEqual({
246265
path: newPackDir,
247266
yamlPath: join(newPackDir, "codeql-pack.yml"),
@@ -277,7 +296,13 @@ describe("pickExtensionPack", () => {
277296
});
278297

279298
expect(
280-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
299+
await pickExtensionPack(
300+
cliServer,
301+
databaseItem,
302+
logger,
303+
progress,
304+
maxStep,
305+
),
281306
).toEqual(undefined);
282307
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
283308
expect(logger.showErrorMessage).toHaveBeenCalledWith(
@@ -296,7 +321,13 @@ describe("pickExtensionPack", () => {
296321
});
297322

298323
expect(
299-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
324+
await pickExtensionPack(
325+
cliServer,
326+
databaseItem,
327+
logger,
328+
progress,
329+
maxStep,
330+
),
300331
).toEqual(undefined);
301332
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
302333
expect(logger.showErrorMessage).toHaveBeenCalledWith(
@@ -317,7 +348,13 @@ describe("pickExtensionPack", () => {
317348
await outputFile(join(tmpDir.path, "codeql-pack.yml"), dumpYaml("java"));
318349

319350
expect(
320-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
351+
await pickExtensionPack(
352+
cliServer,
353+
databaseItem,
354+
logger,
355+
progress,
356+
maxStep,
357+
),
321358
).toEqual(undefined);
322359
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
323360
expect(logger.showErrorMessage).toHaveBeenCalledWith(
@@ -348,7 +385,13 @@ describe("pickExtensionPack", () => {
348385
);
349386

350387
expect(
351-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
388+
await pickExtensionPack(
389+
cliServer,
390+
databaseItem,
391+
logger,
392+
progress,
393+
maxStep,
394+
),
352395
).toEqual(undefined);
353396
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
354397
expect(logger.showErrorMessage).toHaveBeenCalledWith(
@@ -382,7 +425,13 @@ describe("pickExtensionPack", () => {
382425
);
383426

384427
expect(
385-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
428+
await pickExtensionPack(
429+
cliServer,
430+
databaseItem,
431+
logger,
432+
progress,
433+
maxStep,
434+
),
386435
).toEqual(undefined);
387436
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
388437
expect(logger.showErrorMessage).toHaveBeenCalledWith(
@@ -433,7 +482,13 @@ describe("pickExtensionPack", () => {
433482
};
434483

435484
expect(
436-
await pickExtensionPack(cliServer, databaseItem, logger, progress),
485+
await pickExtensionPack(
486+
cliServer,
487+
databaseItem,
488+
logger,
489+
progress,
490+
maxStep,
491+
),
437492
).toEqual(extensionPack);
438493
});
439494
});

0 commit comments

Comments
 (0)