Still load other projects even if one doesn't exist (#14585)

* still load other projects if one doesn't exist

* show all errors at the end

* update error message

* remove project(s)
This commit is contained in:
Kim Santiago
2021-03-05 18:39:56 -08:00
committed by GitHub
parent 972b649beb
commit cecc83c89d
2 changed files with 29 additions and 18 deletions

View File

@@ -6,7 +6,7 @@
import * as vscode from 'vscode';
import * as path from 'path';
import { IWorkspaceService } from './interfaces';
import { UnknownProjectsError } from './constants';
import { ProjectsFailedToLoad, UnknownProjectsError } from './constants';
import { WorkspaceTreeItem } from 'dataworkspace';
import { TelemetryReporter } from './telemetry';
@@ -45,28 +45,38 @@ export class WorkspaceTreeDataProvider implements vscode.TreeDataProvider<Worksp
const typeMetric: Record<string, number> = {};
let errorCount = 0;
for (const project of projects) {
const projectProvider = await this._workspaceService.getProjectProvider(project);
try {
const projectProvider = await this._workspaceService.getProjectProvider(project);
this.incrementProjectTypeMetric(typeMetric, project);
this.incrementProjectTypeMetric(typeMetric, project);
if (projectProvider === undefined) {
unknownProjects.push(project.path);
continue;
}
const treeDataProvider = await projectProvider.getProjectTreeDataProvider(project);
if (treeDataProvider.onDidChangeTreeData) {
treeDataProvider.onDidChangeTreeData((e: any) => {
this._onDidChangeTreeData?.fire(e);
if (projectProvider === undefined) {
unknownProjects.push(project.path);
continue;
}
const treeDataProvider = await projectProvider.getProjectTreeDataProvider(project);
if (treeDataProvider.onDidChangeTreeData) {
treeDataProvider.onDidChangeTreeData((e: any) => {
this._onDidChangeTreeData?.fire(e);
});
}
const children = await treeDataProvider.getChildren(element);
children?.forEach(child => {
treeItems.push({
treeDataProvider: treeDataProvider,
element: child
});
});
} catch (e) {
errorCount++;
console.error(e.message);
}
const children = await treeDataProvider.getChildren(element);
children?.forEach(child => {
treeItems.push({
treeDataProvider: treeDataProvider,
element: child
});
});
}
if (errorCount > 0) {
vscode.window.showErrorMessage(ProjectsFailedToLoad);
}
TelemetryReporter.sendMetricsEvent(typeMetric, 'OpenWorkspaceProjectTypes');