Skip to content

Commit 2a4e363

Browse files
Copiloteleanorjboyd
andcommitted
Move packages to top level under each environment
Co-authored-by: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com>
1 parent 329898e commit 2a4e363

2 files changed

Lines changed: 17 additions & 26 deletions

File tree

src/features/views/projectView.ts

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ import {
2121
ProjectEnvironmentInfo,
2222
ProjectItem,
2323
ProjectPackage,
24-
ProjectPackageRootInfoTreeItem,
25-
ProjectPackageRootTreeItem,
2624
ProjectTreeItem,
2725
ProjectTreeItemKind,
2826
} from './treeViewItems';
@@ -34,7 +32,7 @@ export class ProjectView implements TreeDataProvider<ProjectTreeItem> {
3432
>();
3533
private projectViews: Map<string, ProjectItem> = new Map();
3634
private revealMap: Map<string, ProjectEnvironment> = new Map();
37-
private packageRoots: Map<string, ProjectPackageRootTreeItem> = new Map();
35+
private packageRoots: Map<string, ProjectEnvironment> = new Map();
3836
private disposables: Disposable[] = [];
3937
private debouncedUpdateProject = createSimpleDebounce(500, () => this.updateProject());
4038
public constructor(private envManagers: EnvironmentManagers, private projectManager: PythonProjectManager) {
@@ -83,7 +81,8 @@ export class ProjectView implements TreeDataProvider<ProjectTreeItem> {
8381

8482
private updatePackagesForEnvironment(e: PythonEnvironment): void {
8583
const views: ProjectTreeItem[] = [];
86-
this.packageRoots.forEach((v) => {
84+
// Look for environments matching this environment ID and refresh them
85+
this.revealMap.forEach((v) => {
8786
if (v.environment.envId.id === e.envId.id) {
8887
views.push(v);
8988
}
@@ -193,32 +192,24 @@ export class ProjectView implements TreeDataProvider<ProjectTreeItem> {
193192
const pkgManager = this.envManagers.getPackageManager(uri);
194193
const environment = environmentItem.environment;
195194

196-
const views: ProjectTreeItem[] = [];
195+
if (!pkgManager) {
196+
return [new ProjectEnvironmentInfo(environmentItem, ProjectViews.noPackageManager)];
197+
}
197198

198-
if (pkgManager) {
199-
const item = new ProjectPackageRootTreeItem(environmentItem, pkgManager, environment);
200-
this.packageRoots.set(uri ? uri.fsPath : 'global', item);
201-
views.push(item);
202-
} else {
203-
views.push(new ProjectEnvironmentInfo(environmentItem, ProjectViews.noPackageManager));
199+
let packages = await pkgManager.getPackages(environment);
200+
if (!packages) {
201+
return [new ProjectEnvironmentInfo(environmentItem, ProjectViews.noPackages)];
204202
}
205-
return views;
206-
}
207203

208-
if (element.kind === ProjectTreeItemKind.packageRoot) {
209-
const root = element as ProjectPackageRootTreeItem;
210-
const manager = root.manager;
211-
const environment = root.environment;
212-
let packages = await manager.getPackages(environment);
213-
const views: ProjectTreeItem[] = [];
204+
// Store the reference for refreshing packages
205+
this.packageRoots.set(uri ? uri.fsPath : 'global', environmentItem);
214206

215-
if (packages) {
216-
return packages.map((p) => new ProjectPackage(root, p, manager));
217-
} else {
218-
views.push(new ProjectPackageRootInfoTreeItem(root, ProjectViews.noPackages));
219-
}
207+
// Return packages directly under the environment
208+
return packages.map((p) => new ProjectPackage(environmentItem, p, pkgManager));
220209
}
221210

211+
// We no longer need to handle packageRoot items as they are not created anymore
212+
222213
return undefined;
223214
}
224215
getParent(element: ProjectTreeItem): ProviderResult<ProjectTreeItem> {

src/features/views/treeViewItems.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ export class ProjectPackage implements ProjectTreeItem {
382382
public readonly id: string;
383383
public readonly treeItem: TreeItem;
384384
constructor(
385-
public readonly parent: ProjectPackageRootTreeItem,
385+
public readonly parent: ProjectEnvironment,
386386
public readonly pkg: Package,
387387
public readonly manager: InternalPackageManager,
388388
) {
@@ -395,7 +395,7 @@ export class ProjectPackage implements ProjectTreeItem {
395395
this.treeItem = item;
396396
}
397397

398-
static getId(projectEnv: ProjectPackageRootTreeItem, pkg: Package): string {
398+
static getId(projectEnv: ProjectEnvironment, pkg: Package): string {
399399
return `${projectEnv.id}>>>${pkg.pkgId}`;
400400
}
401401
}

0 commit comments

Comments
 (0)