diff --git a/src/FolderContext.ts b/src/FolderContext.ts index f1caa430a..5c8af888a 100644 --- a/src/FolderContext.ts +++ b/src/FolderContext.ts @@ -141,20 +141,6 @@ export class FolderContext implements vscode.Disposable { this.testExplorer = new TestExplorer(this); } - /** Get list of edited packages */ - async getEditedPackages(): Promise { - const workspaceState = await this.swiftPackage.loadWorkspaceState(); - return ( - workspaceState?.object.dependencies - .filter(item => { - return item.state.name === "edited" && item.state.path; - }) - .map(item => { - return { name: item.packageRef.identity, folder: item.state.path! }; - }) ?? [] - ); - } - static uriName(uri: vscode.Uri): string { return path.basename(uri.fsPath); } diff --git a/src/ui/PackageDependencyProvider.ts b/src/ui/PackageDependencyProvider.ts index 707c43335..ca6ad80ba 100644 --- a/src/ui/PackageDependencyProvider.ts +++ b/src/ui/PackageDependencyProvider.ts @@ -21,7 +21,7 @@ import { WorkspaceContext } from "../WorkspaceContext"; import { FolderEvent } from "../WorkspaceContext"; import { FolderContext } from "../FolderContext"; import contextKeys from "../contextKeys"; -import { Version } from "../utilities/version"; +import { WorkspaceState } from "../SwiftPackage"; /** * References: @@ -147,14 +147,15 @@ export class PackageDependenciesProvider implements vscode.TreeDataProvider item.name === child.name); @@ -186,25 +187,28 @@ export class PackageDependenciesProvider implements vscode.TreeDataProvider !dependency.requirement && dependency.url) - .map( - dependency => - new PackageNode(dependency.identity, dependency.url!, "local", "local") - ); - } else { - // since Swift 5.6 local dependencies have `type` `fileSystem` - return folderContext.swiftPackage.dependencies - .filter(dependency => dependency.type === "fileSystem" && dependency.path) + private getLocalDependencies(workspaceState: WorkspaceState | undefined): PackageNode[] { + return ( + workspaceState?.object.dependencies + .filter(item => { + // need to check for both "local" and "fileSystem" as swift 5.5 and earlier + // use "local" while 5.6 and later use "fileSystem" + return ( + (item.packageRef.kind === "local" || + item.packageRef.kind === "fileSystem") && + item.packageRef.location + ); + }) .map( dependency => - new PackageNode(dependency.identity, dependency.path!, "local", "local") - ); - } + new PackageNode( + dependency.packageRef.identity, + dependency.packageRef.location, + "local", + "local" + ) + ) ?? [] + ); } /** @@ -229,9 +233,21 @@ export class PackageDependenciesProvider implements vscode.TreeDataProvider { - return (await folderContext.getEditedPackages()).map( - item => new PackageNode(item.name, item.folder, "local", "editing") + private getEditedDependencies(workspaceState: WorkspaceState | undefined): PackageNode[] { + return ( + workspaceState?.object.dependencies + .filter(item => { + return item.state.name === "edited" && item.state.path; + }) + .map( + item => + new PackageNode( + item.packageRef.identity, + item.state.path!, + "local", + "editing" + ) + ) ?? [] ); }