Skip to content

Commit 4d21831

Browse files
committed
1 parent 196a30d commit 4d21831

2 files changed

Lines changed: 29 additions & 11 deletions

File tree

src/vs/workbench/contrib/userDataSync/browser/userDataManualSyncView.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,16 @@ export class UserDataManualSyncViewPane extends TreeViewPane {
282282
}
283283

284284
private async apply(): Promise<void> {
285+
this.closeAll();
285286
this.syncButton.label = localize('turning on', "Turning on...");
286287
this.syncButton.enabled = false;
287288
this.cancelButton.enabled = false;
288-
return this.withProgress(async () => this.userDataSyncPreview.apply());
289+
try {
290+
await this.withProgress(async () => this.userDataSyncPreview.apply());
291+
} catch (error) {
292+
this.syncButton.enabled = false;
293+
this.cancelButton.enabled = true;
294+
}
289295
}
290296

291297
private async cancel(): Promise<void> {
@@ -331,7 +337,7 @@ export class UserDataManualSyncViewPane extends TreeViewPane {
331337
}
332338
}
333339

334-
private close(previewResource: IUserDataSyncResource) {
340+
private close(previewResource: IUserDataSyncResource): void {
335341
for (const input of this.editorService.editors) {
336342
if (input instanceof DiffEditorInput) {
337343
// Close all diff editors
@@ -360,6 +366,12 @@ export class UserDataManualSyncViewPane extends TreeViewPane {
360366
}
361367
}
362368

369+
private closeAll() {
370+
for (const previewResource of this.userDataSyncPreview.resources) {
371+
this.close(previewResource);
372+
}
373+
}
374+
363375
private withProgress(task: () => Promise<void>): Promise<void> {
364376
return this.progressService.withProgress({ location: MANUAL_SYNC_VIEW_ID, delay: 500 }, task);
365377
}

src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat
337337
await this.waitForActiveSyncViews();
338338
await this.viewsService.openView(MANUAL_SYNC_VIEW_ID);
339339

340-
const completed = await Event.toPromise(this.userDataSyncPreview.onDidCompleteManualSync);
340+
const error = await Event.toPromise(this.userDataSyncPreview.onDidCompleteManualSync);
341341
this.userDataSyncPreview.unsetManualSyncPreview();
342342

343343
this.manualSyncViewEnablementContext.set(false);
@@ -348,8 +348,8 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat
348348
this.viewsService.closeViewContainer(viewContainer!.id);
349349
}
350350

351-
if (!completed) {
352-
throw canceled();
351+
if (error) {
352+
throw error;
353353
}
354354
}
355355

@@ -567,7 +567,7 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
567567
private _onDidChangeConflicts = this._register(new Emitter<ReadonlyArray<IUserDataSyncResource>>());
568568
readonly onDidChangeConflicts = this._onDidChangeConflicts.event;
569569

570-
private _onDidCompleteManualSync = this._register(new Emitter<boolean>());
570+
private _onDidCompleteManualSync = this._register(new Emitter<Error | undefined>());
571571
readonly onDidCompleteManualSync = this._onDidCompleteManualSync.event;
572572
private manualSync: { preview: [SyncResource, ISyncResourcePreview][], task: IManualSyncTask, disposables: DisposableStore } | undefined;
573573

@@ -623,10 +623,16 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
623623
throw new Error('Can apply only while syncing manually');
624624
}
625625

626-
const syncPreview = await this.manualSync.task.apply();
627-
this.updatePreview(syncPreview);
628-
if (!this._resources.length) {
629-
this._onDidCompleteManualSync.fire(true);
626+
try {
627+
const syncPreview = await this.manualSync.task.apply();
628+
this.updatePreview(syncPreview);
629+
if (!this._resources.length) {
630+
this._onDidCompleteManualSync.fire(undefined);
631+
}
632+
} catch (error) {
633+
await this.manualSync.task.stop();
634+
this.updatePreview([]);
635+
this._onDidCompleteManualSync.fire(error);
630636
}
631637
}
632638

@@ -636,7 +642,7 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
636642
}
637643
await this.manualSync.task.stop();
638644
this.updatePreview([]);
639-
this._onDidCompleteManualSync.fire(false);
645+
this._onDidCompleteManualSync.fire(canceled());
640646
}
641647

642648
async pull(): Promise<void> {

0 commit comments

Comments
 (0)