Deselect current db when the language context changes (#3007)
This commit is contained in:
@@ -19,7 +19,10 @@ import {
|
||||
getFirstWorkspaceFolder,
|
||||
isFolderAlreadyInWorkspace,
|
||||
} from "../../common/vscode/workspace-folders";
|
||||
import { isQueryLanguage } from "../../common/query-language";
|
||||
import {
|
||||
isQueryLanguage,
|
||||
tryGetQueryLanguage,
|
||||
} from "../../common/query-language";
|
||||
import { existsSync } from "fs";
|
||||
import { QlPackGenerator } from "../../local-queries/qlpack-generator";
|
||||
import { asError, getErrorMessage } from "../../common/helpers-pure";
|
||||
@@ -30,6 +33,7 @@ import { containsPath } from "../../common/files";
|
||||
import { DatabaseChangedEvent, DatabaseEventKind } from "./database-events";
|
||||
import { DatabaseResolver } from "./database-resolver";
|
||||
import { telemetryListener } from "../../common/vscode/telemetry";
|
||||
import { LanguageContextStore } from "../../language-context-store";
|
||||
|
||||
/**
|
||||
* The name of the key in the workspaceState dictionary in which we
|
||||
@@ -100,11 +104,25 @@ export class DatabaseManager extends DisposableObject {
|
||||
private readonly app: App,
|
||||
private readonly qs: QueryRunner,
|
||||
private readonly cli: cli.CodeQLCliServer,
|
||||
private readonly languageContext: LanguageContextStore,
|
||||
public logger: Logger,
|
||||
) {
|
||||
super();
|
||||
|
||||
qs.onStart(this.reregisterDatabases.bind(this));
|
||||
|
||||
this.push(
|
||||
this.languageContext.onLanguageContextChanged(async () => {
|
||||
if (
|
||||
this.currentDatabaseItem !== undefined &&
|
||||
!this.languageContext.isSelectedLanguage(
|
||||
tryGetQueryLanguage(this.currentDatabaseItem.language),
|
||||
)
|
||||
) {
|
||||
await this.setCurrentDatabaseItem(undefined);
|
||||
}
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -769,14 +769,6 @@ async function activateWithInstalledDistribution(
|
||||
fsWatcher.onDidDelete(clearPackCache);
|
||||
}
|
||||
|
||||
void extLogger.log("Initializing database manager.");
|
||||
const dbm = new DatabaseManager(ctx, app, qs, cliServer, extLogger);
|
||||
|
||||
// Let this run async.
|
||||
void dbm.loadPersistedState();
|
||||
|
||||
ctx.subscriptions.push(dbm);
|
||||
|
||||
void extLogger.log("Initializing language context.");
|
||||
const languageContext = new LanguageContextStore(app);
|
||||
|
||||
@@ -784,6 +776,21 @@ async function activateWithInstalledDistribution(
|
||||
const languageSelectionPanel = new LanguageSelectionPanel(languageContext);
|
||||
ctx.subscriptions.push(languageSelectionPanel);
|
||||
|
||||
void extLogger.log("Initializing database manager.");
|
||||
const dbm = new DatabaseManager(
|
||||
ctx,
|
||||
app,
|
||||
qs,
|
||||
cliServer,
|
||||
languageContext,
|
||||
extLogger,
|
||||
);
|
||||
|
||||
// Let this run async.
|
||||
void dbm.loadPersistedState();
|
||||
|
||||
ctx.subscriptions.push(dbm);
|
||||
|
||||
void extLogger.log("Initializing database panel.");
|
||||
const databaseUI = new DatabaseUI(
|
||||
app,
|
||||
|
||||
@@ -31,6 +31,7 @@ import {
|
||||
sourceLocationUri,
|
||||
} from "../../../factories/databases/databases";
|
||||
import { findSourceArchive } from "../../../../src/databases/local-databases/database-resolver";
|
||||
import { LanguageContextStore } from "../../../../src/language-context-store";
|
||||
|
||||
describe("local databases", () => {
|
||||
let databaseManager: DatabaseManager;
|
||||
@@ -84,9 +85,10 @@ describe("local databases", () => {
|
||||
},
|
||||
);
|
||||
|
||||
const mockApp = createMockApp({});
|
||||
databaseManager = new DatabaseManager(
|
||||
extensionContext,
|
||||
createMockApp({}),
|
||||
mockApp,
|
||||
mockedObject<QueryRunner>({
|
||||
registerDatabase: registerSpy,
|
||||
deregisterDatabase: deregisterSpy,
|
||||
@@ -98,6 +100,7 @@ describe("local databases", () => {
|
||||
resolveDatabase: resolveDatabaseSpy,
|
||||
packAdd: packAddSpy,
|
||||
}),
|
||||
new LanguageContextStore(mockApp),
|
||||
mockedObject<Logger>({
|
||||
log: logSpy,
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user