From 2a05e1dfe42f3c592df9d948b0ffdc5733e9f78c Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Sat, 21 Sep 2024 19:43:56 +0100 Subject: [PATCH] Improve tree refresh --- src/commands/CommandProvider.ts | 13 ++----------- src/commands/GenerateERDCommand.ts | 6 +++--- src/commands/ScaffoldCommand.ts | 6 +++--- src/extension.ts | 8 +------- src/treeView/TreeDataProvider.ts | 6 +++--- 5 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/commands/CommandProvider.ts b/src/commands/CommandProvider.ts index a186a53..3026858 100644 --- a/src/commands/CommandProvider.ts +++ b/src/commands/CommandProvider.ts @@ -1,4 +1,3 @@ -import type { Project } from 'nuget-deps-tree'; import * as vscode from 'vscode'; import { EXTENSION_NAMESPACE } from '../constants/constants'; import type { TerminalProvider } from '../terminal/TerminalProvider'; @@ -30,7 +29,6 @@ export class CommandProvider extends Disposable { treeDataProvider: TreeDataProvider, terminalProvider: TerminalProvider, extensionUri: vscode.Uri, - solutionProjects?: Project[], ) { super(); this.registerCommand( @@ -68,13 +66,7 @@ export class CommandProvider extends Disposable { this.registerCommand( GenerateERDCommand.commandName, (item?: DbContextTreeItem) => - new GenerateERDCommand( - logger, - terminalProvider, - extensionUri, - item, - solutionProjects, - ), + new GenerateERDCommand(logger, terminalProvider, extensionUri, item), ); this.registerCommand( RefreshTreeCommand.commandName, @@ -100,8 +92,7 @@ export class CommandProvider extends Disposable { ); this.registerCommand( ScaffoldCommand.commandName, - (item?: DbContextTreeItem) => - new ScaffoldCommand(terminalProvider, item, solutionProjects), + (item?: DbContextTreeItem) => new ScaffoldCommand(terminalProvider, item), ); this.registerCommand( ConfigureCommand.commandName, diff --git a/src/commands/GenerateERDCommand.ts b/src/commands/GenerateERDCommand.ts index 6e85ef1..0e6dddf 100644 --- a/src/commands/GenerateERDCommand.ts +++ b/src/commands/GenerateERDCommand.ts @@ -7,7 +7,7 @@ import type { TerminalProvider } from '../terminal/TerminalProvider'; import { type DbContextTreeItem } from '../treeView/DbContextTreeItem'; import { Command } from './Command'; import type { Logger } from '../util/Logger'; -import type { Project } from 'nuget-deps-tree'; +import { ProjectFilesProvider } from '../solution/ProjectFilesProvider'; export class GenerateERDCommand extends Command { public static commandName = 'generateERD'; @@ -17,7 +17,6 @@ export class GenerateERDCommand extends Command { private readonly terminalProvider: TerminalProvider, private readonly extensionUri: vscode.Uri, private readonly item?: DbContextTreeItem, - private readonly solutionProjects?: Project[], ) { super(); } @@ -27,6 +26,7 @@ export class GenerateERDCommand extends Command { return; } const outputDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mermaid-erd')); + const { solutionProjects } = await ProjectFilesProvider.getProjectFiles(); return new GenerateERDAction( this.logger, this.terminalProvider, @@ -34,7 +34,7 @@ export class GenerateERDCommand extends Command { this.item.projectFile, outputDir, this.extensionUri, - this.solutionProjects, + solutionProjects, ).run(); } } diff --git a/src/commands/ScaffoldCommand.ts b/src/commands/ScaffoldCommand.ts index e7ce631..0f86297 100644 --- a/src/commands/ScaffoldCommand.ts +++ b/src/commands/ScaffoldCommand.ts @@ -1,8 +1,8 @@ -import type { Project } from 'nuget-deps-tree'; import { ScaffoldAction } from '../actions/ScaffoldAction'; import type { TerminalProvider } from '../terminal/TerminalProvider'; import { type DbContextTreeItem } from '../treeView/DbContextTreeItem'; import { Command } from './Command'; +import { ProjectFilesProvider } from '../solution/ProjectFilesProvider'; export class ScaffoldCommand extends Command { public static commandName = 'scaffold'; @@ -10,7 +10,6 @@ export class ScaffoldCommand extends Command { constructor( private readonly terminalProvider: TerminalProvider, private readonly item?: DbContextTreeItem, - private readonly solutionProjects?: Project[], ) { super(); } @@ -19,10 +18,11 @@ export class ScaffoldCommand extends Command { if (!this.item) { return; } + const { solutionProjects } = await ProjectFilesProvider.getProjectFiles(); return new ScaffoldAction( this.terminalProvider, this.item.projectFile, - this.solutionProjects, + solutionProjects, ).run(); } } diff --git a/src/extension.ts b/src/extension.ts index 185b4b2..cfcd9d3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -5,7 +5,6 @@ import { MigrationTreeItemDecorationProvider } from './treeView/MigrationTreeIte import { Terminal } from './terminal/Terminal'; import { TerminalProvider } from './terminal/TerminalProvider'; import { TextDocumentProvider } from './util/TextDocumentProvider'; -import { ProjectFilesProvider } from './solution/ProjectFilesProvider'; import { Logger } from './util/Logger'; import { CLI } from './cli/CLI'; @@ -13,22 +12,17 @@ export async function activate(context: vscode.ExtensionContext) { const logger = new Logger(); logger.info(`Extension activated`); - const { projectFiles, solutionProjects } = - await ProjectFilesProvider.getProjectFiles(); - logger.info(`Discovered ${projectFiles.length} compatible projects`); - const cli = new CLI(logger); const textDocumentProvider = new TextDocumentProvider(); const migrationTreeItemDecorationProvider = new MigrationTreeItemDecorationProvider(); - const treeDataProvider = new TreeDataProvider(logger, projectFiles, cli); + const treeDataProvider = new TreeDataProvider(logger, cli); const terminalProvider = new TerminalProvider(new Terminal(cli)); const commandProvider = new CommandProvider( logger, treeDataProvider, terminalProvider, context.extensionUri, - solutionProjects, ); context.subscriptions.push( diff --git a/src/treeView/TreeDataProvider.ts b/src/treeView/TreeDataProvider.ts index 9ecce8f..3955878 100644 --- a/src/treeView/TreeDataProvider.ts +++ b/src/treeView/TreeDataProvider.ts @@ -2,7 +2,6 @@ import * as vscode from 'vscode'; import { type TreeItem } from './TreeItem'; import { Disposable } from '../util/Disposable'; import { EXTENSION_NAMESPACE } from '../constants/constants'; -import type { ProjectFile } from '../types/ProjectFile'; import { ProjectTreeItem } from './ProjectTreeItem'; import type { CLI } from '../cli/CLI'; import { MigrationTreeItem } from './MigrationTreeItem'; @@ -10,6 +9,7 @@ import { CommandProvider } from '../commands/CommandProvider'; import { OpenMigrationFileCommand } from '../commands/OpenMigrationFileCommand'; import type { Logger } from '../util/Logger'; import { getProjectsConfig } from '../config/config'; +import { ProjectFilesProvider } from '../solution/ProjectFilesProvider'; export class TreeDataProvider extends Disposable @@ -25,7 +25,6 @@ export class TreeDataProvider constructor( private readonly logger: Logger, - private readonly projectFiles: ProjectFile[], private readonly cli: CLI, ) { super(); @@ -68,8 +67,9 @@ export class TreeDataProvider return element.getChildren(); } else { const { project } = getProjectsConfig(); + const { projectFiles } = await ProjectFilesProvider.getProjectFiles(); - return this.projectFiles + return projectFiles .filter(projectFile => !project || projectFile.name === project) .map( projectFile =>