mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Stop watching for sqlproj updates after the file is closed (#12311)
* stop watching for sqlproj updates after the file is closed * remove watcher if project is closed
This commit is contained in:
@@ -39,6 +39,7 @@ export class ProjectsController {
|
|||||||
private buildHelper: BuildHelper;
|
private buildHelper: BuildHelper;
|
||||||
|
|
||||||
projects: Project[] = [];
|
projects: Project[] = [];
|
||||||
|
projFileWatchers = new Map<string, vscode.FileSystemWatcher>();
|
||||||
|
|
||||||
constructor(projTreeViewProvider: SqlDatabaseProjectTreeViewProvider) {
|
constructor(projTreeViewProvider: SqlDatabaseProjectTreeViewProvider) {
|
||||||
this.projectTreeViewProvider = projTreeViewProvider;
|
this.projectTreeViewProvider = projTreeViewProvider;
|
||||||
@@ -166,6 +167,12 @@ export class ProjectsController {
|
|||||||
public closeProject(treeNode: BaseProjectTreeItem) {
|
public closeProject(treeNode: BaseProjectTreeItem) {
|
||||||
const project = this.getProjectFromContext(treeNode);
|
const project = this.getProjectFromContext(treeNode);
|
||||||
this.projects = this.projects.filter((e) => { return e !== project; });
|
this.projects = this.projects.filter((e) => { return e !== project; });
|
||||||
|
|
||||||
|
if (this.projFileWatchers.has(project.projectFilePath)) {
|
||||||
|
this.projFileWatchers.get(project.projectFilePath)!.dispose();
|
||||||
|
this.projFileWatchers.delete(project.projectFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
this.refreshProjectsTree();
|
this.refreshProjectsTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -442,6 +449,7 @@ export class ProjectsController {
|
|||||||
try {
|
try {
|
||||||
await vscode.commands.executeCommand(constants.vscodeOpenCommand, vscode.Uri.file(project.projectFilePath));
|
await vscode.commands.executeCommand(constants.vscodeOpenCommand, vscode.Uri.file(project.projectFilePath));
|
||||||
const projFileWatcher: vscode.FileSystemWatcher = vscode.workspace.createFileSystemWatcher(project.projectFilePath);
|
const projFileWatcher: vscode.FileSystemWatcher = vscode.workspace.createFileSystemWatcher(project.projectFilePath);
|
||||||
|
this.projFileWatchers.set(project.projectFilePath, projFileWatcher);
|
||||||
|
|
||||||
projFileWatcher.onDidChange(async (projectFileUri: vscode.Uri) => {
|
projFileWatcher.onDidChange(async (projectFileUri: vscode.Uri) => {
|
||||||
const result = await vscode.window.showInformationMessage(constants.reloadProject, constants.yesString, constants.noString);
|
const result = await vscode.window.showInformationMessage(constants.reloadProject, constants.yesString, constants.noString);
|
||||||
@@ -450,6 +458,15 @@ export class ProjectsController {
|
|||||||
this.reloadProject(projectFileUri);
|
this.reloadProject(projectFileUri);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// stop watching for changes to the sqlproj after it's closed
|
||||||
|
const closeSqlproj = vscode.workspace.onDidCloseTextDocument((d) => {
|
||||||
|
if (this.projFileWatchers.has(d.uri.fsPath)) {
|
||||||
|
this.projFileWatchers.get(d.uri.fsPath)!.dispose();
|
||||||
|
this.projFileWatchers.delete(d.uri.fsPath);
|
||||||
|
closeSqlproj.dispose();
|
||||||
|
}
|
||||||
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
vscode.window.showErrorMessage(utils.getErrorMessage(err));
|
vscode.window.showErrorMessage(utils.getErrorMessage(err));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user