[go: nahoru, domu]

Skip to content

Commit

Permalink
propagate update service errors to UI
Browse files Browse the repository at this point in the history
fixes #57664
fixes #7426
  • Loading branch information
joaomoreno committed Sep 27, 2018
1 parent a7996af commit f586943
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 9 deletions.
4 changes: 2 additions & 2 deletions src/vs/platform/update/common/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export const enum UpdateType {
}

export type Uninitialized = { type: StateType.Uninitialized };
export type Idle = { type: StateType.Idle, updateType: UpdateType };
export type Idle = { type: StateType.Idle, updateType: UpdateType, error?: string; };
export type CheckingForUpdates = { type: StateType.CheckingForUpdates, context: any };
export type AvailableForDownload = { type: StateType.AvailableForDownload, update: IUpdate };
export type Downloading = { type: StateType.Downloading, update: IUpdate };
Expand All @@ -66,7 +66,7 @@ export type State = Uninitialized | Idle | CheckingForUpdates | AvailableForDown

export const State = {
Uninitialized: { type: StateType.Uninitialized } as Uninitialized,
Idle: (updateType: UpdateType) => ({ type: StateType.Idle, updateType }) as Idle,
Idle: (updateType: UpdateType, error?: string) => ({ type: StateType.Idle, updateType, error }) as Idle,
CheckingForUpdates: (context: any) => ({ type: StateType.CheckingForUpdates, context } as CheckingForUpdates),
AvailableForDownload: (update: IUpdate) => ({ type: StateType.AvailableForDownload, update } as AvailableForDownload),
Downloading: (update: IUpdate) => ({ type: StateType.Downloading, update } as Downloading),
Expand Down
4 changes: 2 additions & 2 deletions src/vs/platform/update/electron-main/updateService.darwin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ export class DarwinUpdateService extends AbstractUpdateService {
}

private onError(err: string): void {
this.logService.error('UpdateService error: ', err);
this.setState(State.Idle(UpdateType.Archive));
this.logService.error('UpdateService error:', err);
this.setState(State.Idle(UpdateType.Archive, err));
}

protected buildUpdateFeedUrl(quality: string): string | undefined {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export class LinuxUpdateService extends AbstractUpdateService {
}
*/
this.telemetryService.publicLog('update:notAvailable', { explicit: !!context });
this.setState(State.Idle(UpdateType.Archive));
this.setState(State.Idle(UpdateType.Archive, err.message || err));
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ export class Win32UpdateService extends AbstractUpdateService {
}
*/
this.telemetryService.publicLog('update:notAvailable', { explicit: !!context });
this.setState(State.Idle(getUpdateType()));
this.setState(State.Idle(getUpdateType(), err.message || err));
});
}

Expand Down
17 changes: 14 additions & 3 deletions src/vs/workbench/parts/update/electron-browser/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag
import { IUpdateService, State as UpdateState, StateType, IUpdate } from 'vs/platform/update/common/update';
import * as semver from 'semver';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { INotificationService, INotificationHandle } from 'vs/platform/notification/common/notification';
import { INotificationService, INotificationHandle, Severity } from 'vs/platform/notification/common/notification';
import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
import { IWindowService } from 'vs/platform/windows/common/windows';
import { ReleaseNotesManager } from './releaseNotesEditor';
Expand Down Expand Up @@ -179,7 +179,6 @@ export class Win3264BitContribution implements IWorkbenchContribution {

constructor(
@IStorageService storageService: IStorageService,
@IInstantiationService instantiationService: IInstantiationService,
@INotificationService notificationService: INotificationService,
@IEnvironmentService environmentService: IEnvironmentService
) {
Expand Down Expand Up @@ -277,7 +276,9 @@ export class UpdateContribution implements IGlobalActivity {
private onUpdateStateChange(state: UpdateState): void {
switch (state.type) {
case StateType.Idle:
if (this.state.type === StateType.CheckingForUpdates && this.state.context && this.state.context.windowId === this.windowService.getCurrentWindowId()) {
if (state.error) {
this.onError(state.error);
} else if (this.state.type === StateType.CheckingForUpdates && this.state.context && this.state.context.windowId === this.windowService.getCurrentWindowId()) {
this.onUpdateNotAvailable();
}
break;
Expand Down Expand Up @@ -318,6 +319,16 @@ export class UpdateContribution implements IGlobalActivity {
this.state = state;
}

private onError(error: string): void {
error = error.replace(/See (.*) for more information/, 'See [this link]($1) for more information');

this.notificationService.notify({
severity: Severity.Error,
message: error,
source: nls.localize('update service', "Update Service"),
});
}

private onUpdateNotAvailable(): void {
this.dialogService.show(
severity.Info,
Expand Down

0 comments on commit f586943

Please sign in to comment.