mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -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;
|
||||
|
||||
projects: Project[] = [];
|
||||
projFileWatchers = new Map<string, vscode.FileSystemWatcher>();
|
||||
|
||||
constructor(projTreeViewProvider: SqlDatabaseProjectTreeViewProvider) {
|
||||
this.projectTreeViewProvider = projTreeViewProvider;
|
||||
@@ -166,6 +167,12 @@ export class ProjectsController {
|
||||
public closeProject(treeNode: BaseProjectTreeItem) {
|
||||
const project = this.getProjectFromContext(treeNode);
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -442,6 +449,7 @@ export class ProjectsController {
|
||||
try {
|
||||
await vscode.commands.executeCommand(constants.vscodeOpenCommand, vscode.Uri.file(project.projectFilePath));
|
||||
const projFileWatcher: vscode.FileSystemWatcher = vscode.workspace.createFileSystemWatcher(project.projectFilePath);
|
||||
this.projFileWatchers.set(project.projectFilePath, projFileWatcher);
|
||||
|
||||
projFileWatcher.onDidChange(async (projectFileUri: vscode.Uri) => {
|
||||
const result = await vscode.window.showInformationMessage(constants.reloadProject, constants.yesString, constants.noString);
|
||||
@@ -450,6 +458,15 @@ export class ProjectsController {
|
||||
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) {
|
||||
vscode.window.showErrorMessage(utils.getErrorMessage(err));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user