Skip to content

Commit 0595b3d

Browse files
author
Rachel Macfarlane
committed
Improve error handling when opening issue reporter
1 parent a0a1bd8 commit 0595b3d

4 files changed

Lines changed: 32 additions & 17 deletions

File tree

src/vs/code/electron-browser/issue/issueReporterMain.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import { OcticonLabel } from 'vs/base/browser/ui/octiconLabel/octiconLabel';
4040
import { normalizeGitHubUrl } from 'vs/code/electron-browser/issue/issueReporterUtil';
4141
import { Button } from 'vs/base/browser/ui/button/button';
4242
import { withUndefinedAsNull } from 'vs/base/common/types';
43-
import { SystemInfo } from 'vs/platform/diagnostics/common/diagnosticsService';
43+
import { SystemInfo, isRemoteDiagnosticError } from 'vs/platform/diagnostics/common/diagnosticsService';
4444

4545
const MAX_URL_LENGTH = platform.isWindows ? 2081 : 5400;
4646

@@ -938,15 +938,24 @@ export class IssueReporter extends Disposable {
938938
</table>`;
939939

940940
systemInfo.remoteData.forEach(remote => {
941-
renderedData += `
942-
<hr>
943-
<table>
944-
<tr><td>Remote</td><td>${remote.hostName}</td></tr>
945-
<tr><td>OS</td><td>${remote.machineInfo.os}</td></tr>
946-
<tr><td>CPUs</td><td>${remote.machineInfo.cpus}</td></tr>
947-
<tr><td>Memory (System)</td><td>${remote.machineInfo.memory}</td></tr>
948-
<tr><td>VM</td><td>${remote.machineInfo.vmHint}</td></tr>
949-
</table>`;
941+
if (isRemoteDiagnosticError(remote)) {
942+
renderedData += `
943+
<hr>
944+
<table>
945+
<tr><td>Remote</td><td>${remote.hostName}</td></tr>
946+
<tr><td></td><td>${remote.errorMessage}</td></tr>
947+
</table>`;
948+
} else {
949+
renderedData += `
950+
<hr>
951+
<table>
952+
<tr><td>Remote</td><td>${remote.hostName}</td></tr>
953+
<tr><td>OS</td><td>${remote.machineInfo.os}</td></tr>
954+
<tr><td>CPUs</td><td>${remote.machineInfo.cpus}</td></tr>
955+
<tr><td>Memory (System)</td><td>${remote.machineInfo.memory}</td></tr>
956+
<tr><td>VM</td><td>${remote.machineInfo.vmHint}</td></tr>
957+
</table>`;
958+
}
950959
});
951960

952961
target.innerHTML = renderedData;

src/vs/code/electron-browser/issue/issueReporterModel.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { assign } from 'vs/base/common/objects';
77
import { IssueType, ISettingSearchResult, IssueReporterExtensionData } from 'vs/platform/issue/common/issue';
8-
import { SystemInfo } from 'vs/platform/diagnostics/common/diagnosticsService';
8+
import { SystemInfo, isRemoteDiagnosticError } from 'vs/platform/diagnostics/common/diagnosticsService';
99

1010
export interface IssueReporterData {
1111
issueType: IssueType;
@@ -75,7 +75,8 @@ ${this.getInfos()}
7575

7676
private getRemoteOSes(): string {
7777
if (this._data.systemInfo && this._data.systemInfo.remoteData.length) {
78-
return this._data.systemInfo.remoteData.map(remote => `Remote OS version: ${remote.machineInfo.os}`).join('\n') + '\n';
78+
return this._data.systemInfo.remoteData
79+
.map(remote => isRemoteDiagnosticError(remote) ? remote.errorMessage : `Remote OS version: ${remote.machineInfo.os}`).join('\n') + '\n';
7980
}
8081

8182
return '';
@@ -168,7 +169,10 @@ ${this.getInfos()}
168169
|VM|${this._data.systemInfo.vmHint}|`;
169170

170171
this._data.systemInfo.remoteData.forEach(remote => {
171-
md += `
172+
if (isRemoteDiagnosticError(remote)) {
173+
md += `\n\n${remote.errorMessage}`;
174+
} else {
175+
md += `
172176
173177
|Item|Value|
174178
|---|---|
@@ -177,6 +181,7 @@ ${this.getInfos()}
177181
|CPUs|${remote.machineInfo.cpus}|
178182
|Memory (System)|${remote.machineInfo.memory}|
179183
|VM|${remote.machineInfo.vmHint}|`;
184+
}
180185
});
181186
}
182187

src/vs/platform/diagnostics/common/diagnosticsService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export interface SystemInfo extends IMachineInfo {
2222
processArgs: string;
2323
gpuStatus: any;
2424
screenReader: string;
25-
remoteData: IRemoteDiagnosticInfo[];
25+
remoteData: (IRemoteDiagnosticInfo | IRemoteDiagnosticError)[];
2626
load?: string;
2727
}
2828

src/vs/workbench/services/extensions/node/multiExtensionManagement.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
IExtensionManagementService, ILocalExtension, IGalleryExtension, InstallExtensionEvent, DidInstallExtensionEvent, IExtensionIdentifier, DidUninstallExtensionEvent, IReportedExtension, IGalleryMetadata,
99
IExtensionManagementServerService, IExtensionManagementServer, IExtensionGalleryService
1010
} from 'vs/platform/extensionManagement/common/extensionManagement';
11-
import { flatten } from 'vs/base/common/arrays';
1211
import { ExtensionType, IExtensionManifest, isLanguagePackExtension } from 'vs/platform/extensions/common/extensions';
1312
import { URI } from 'vs/base/common/uri';
1413
import { Disposable } from 'vs/base/common/lifecycle';
@@ -46,8 +45,10 @@ export class MultiExtensionManagementService extends Disposable implements IExte
4645
}
4746

4847
getInstalled(type?: ExtensionType): Promise<ILocalExtension[]> {
49-
return Promise.all(this.servers.map(({ extensionManagementService }) => extensionManagementService.getInstalled(type)))
50-
.then(result => flatten(result));
48+
const installedExtensions: ILocalExtension[] = [];
49+
return Promise.all(this.servers.map(({ extensionManagementService }) => extensionManagementService.getInstalled(type).then(extensions => installedExtensions.push(...extensions))))
50+
.then(_ => installedExtensions)
51+
.catch(e => installedExtensions);
5152
}
5253

5354
async uninstall(extension: ILocalExtension, force?: boolean): Promise<void> {

0 commit comments

Comments
 (0)