Improve responsiveness of model editor
This commit is contained in:
@@ -18,13 +18,12 @@ import {
|
||||
} from "./extension-pack-name";
|
||||
import { autoPickExtensionsDirectory } from "./extensions-workspace-folder";
|
||||
|
||||
const maxStep = 3;
|
||||
|
||||
export async function pickExtensionPack(
|
||||
cliServer: Pick<CodeQLCliServer, "resolveQlpacks">,
|
||||
databaseItem: Pick<DatabaseItem, "name" | "language">,
|
||||
logger: NotificationLogger,
|
||||
progress: ProgressCallback,
|
||||
maxStep: number,
|
||||
): Promise<ExtensionPack | undefined> {
|
||||
progress({
|
||||
message: "Resolving extension packs...",
|
||||
|
||||
@@ -106,8 +106,7 @@ export async function runExternalApiQueries(
|
||||
message: update.message,
|
||||
}),
|
||||
token,
|
||||
// We need to create a lock file, because the query is inside our own pack
|
||||
createLockFile: true,
|
||||
createLockFile: false,
|
||||
});
|
||||
|
||||
if (!completedQuery) {
|
||||
|
||||
@@ -102,6 +102,8 @@ export class ModelEditorModule extends DisposableObject {
|
||||
|
||||
return withProgress(
|
||||
async (progress) => {
|
||||
const maxStep = 4;
|
||||
|
||||
if (!(await this.cliServer.cliConstraints.supportsQlpacksKind())) {
|
||||
void showAndLogErrorMessage(
|
||||
this.app.logger,
|
||||
@@ -125,11 +127,18 @@ export class ModelEditorModule extends DisposableObject {
|
||||
db,
|
||||
this.app.logger,
|
||||
progress,
|
||||
maxStep,
|
||||
);
|
||||
if (!modelFile) {
|
||||
return;
|
||||
}
|
||||
|
||||
progress({
|
||||
message: "Installing dependencies...",
|
||||
step: 3,
|
||||
maxStep,
|
||||
});
|
||||
|
||||
// Create new temporary directory for query files and pack dependencies
|
||||
const queryDir = (await dir({ unsafeCleanup: true })).path;
|
||||
const success = await setUpPack(this.cliServer, queryDir, language);
|
||||
@@ -137,6 +146,12 @@ export class ModelEditorModule extends DisposableObject {
|
||||
return;
|
||||
}
|
||||
|
||||
progress({
|
||||
message: "Opening editor...",
|
||||
step: 4,
|
||||
maxStep,
|
||||
});
|
||||
|
||||
const view = new ModelEditorView(
|
||||
this.ctx,
|
||||
this.app,
|
||||
|
||||
@@ -483,6 +483,7 @@ export class ModelEditorView extends AbstractWebview<
|
||||
addedDatabase,
|
||||
this.app.logger,
|
||||
progress,
|
||||
3,
|
||||
);
|
||||
if (!modelFile) {
|
||||
return;
|
||||
|
||||
@@ -34,6 +34,7 @@ describe("pickExtensionPack", () => {
|
||||
let workspaceFolder: WorkspaceFolder;
|
||||
|
||||
const logger = createMockLogger();
|
||||
const maxStep = 4;
|
||||
|
||||
beforeEach(async () => {
|
||||
tmpDir = (
|
||||
@@ -98,7 +99,13 @@ describe("pickExtensionPack", () => {
|
||||
const cliServer = mockCliServer(qlPacks);
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual(autoExtensionPack);
|
||||
expect(cliServer.resolveQlpacks).toHaveBeenCalledTimes(1);
|
||||
expect(cliServer.resolveQlpacks).toHaveBeenCalledWith(
|
||||
@@ -173,7 +180,13 @@ describe("pickExtensionPack", () => {
|
||||
const cliServer = mockCliServer({});
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual({
|
||||
path: newPackDir,
|
||||
yamlPath: join(newPackDir, "codeql-pack.yml"),
|
||||
@@ -241,7 +254,13 @@ describe("pickExtensionPack", () => {
|
||||
const cliServer = mockCliServer({});
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual({
|
||||
path: newPackDir,
|
||||
yamlPath: join(newPackDir, "codeql-pack.yml"),
|
||||
@@ -277,7 +296,13 @@ describe("pickExtensionPack", () => {
|
||||
});
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual(undefined);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
@@ -296,7 +321,13 @@ describe("pickExtensionPack", () => {
|
||||
});
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual(undefined);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
@@ -317,7 +348,13 @@ describe("pickExtensionPack", () => {
|
||||
await outputFile(join(tmpDir.path, "codeql-pack.yml"), dumpYaml("java"));
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual(undefined);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
@@ -348,7 +385,13 @@ describe("pickExtensionPack", () => {
|
||||
);
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual(undefined);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
@@ -382,7 +425,13 @@ describe("pickExtensionPack", () => {
|
||||
);
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual(undefined);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
@@ -433,7 +482,13 @@ describe("pickExtensionPack", () => {
|
||||
};
|
||||
|
||||
expect(
|
||||
await pickExtensionPack(cliServer, databaseItem, logger, progress),
|
||||
await pickExtensionPack(
|
||||
cliServer,
|
||||
databaseItem,
|
||||
logger,
|
||||
progress,
|
||||
maxStep,
|
||||
),
|
||||
).toEqual(extensionPack);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user