This commit is contained in:
Sandeep Somavarapu
2020-07-20 12:40:32 +02:00
parent 196a30d179
commit 4d21831e50
2 changed files with 29 additions and 11 deletions
@@ -282,10 +282,16 @@ export class UserDataManualSyncViewPane extends TreeViewPane {
}
private async apply(): Promise<void> {
this.closeAll();
this.syncButton.label = localize('turning on', "Turning on...");
this.syncButton.enabled = false;
this.cancelButton.enabled = false;
return this.withProgress(async () => this.userDataSyncPreview.apply());
try {
await this.withProgress(async () => this.userDataSyncPreview.apply());
} catch (error) {
this.syncButton.enabled = false;
this.cancelButton.enabled = true;
}
}
private async cancel(): Promise<void> {
@@ -331,7 +337,7 @@ export class UserDataManualSyncViewPane extends TreeViewPane {
}
}
private close(previewResource: IUserDataSyncResource) {
private close(previewResource: IUserDataSyncResource): void {
for (const input of this.editorService.editors) {
if (input instanceof DiffEditorInput) {
// Close all diff editors
@@ -360,6 +366,12 @@ export class UserDataManualSyncViewPane extends TreeViewPane {
}
}
private closeAll() {
for (const previewResource of this.userDataSyncPreview.resources) {
this.close(previewResource);
}
}
private withProgress(task: () => Promise<void>): Promise<void> {
return this.progressService.withProgress({ location: MANUAL_SYNC_VIEW_ID, delay: 500 }, task);
}
@@ -337,7 +337,7 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat
await this.waitForActiveSyncViews();
await this.viewsService.openView(MANUAL_SYNC_VIEW_ID);
const completed = await Event.toPromise(this.userDataSyncPreview.onDidCompleteManualSync);
const error = await Event.toPromise(this.userDataSyncPreview.onDidCompleteManualSync);
this.userDataSyncPreview.unsetManualSyncPreview();
this.manualSyncViewEnablementContext.set(false);
@@ -348,8 +348,8 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat
this.viewsService.closeViewContainer(viewContainer!.id);
}
if (!completed) {
throw canceled();
if (error) {
throw error;
}
}
@@ -567,7 +567,7 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
private _onDidChangeConflicts = this._register(new Emitter<ReadonlyArray<IUserDataSyncResource>>());
readonly onDidChangeConflicts = this._onDidChangeConflicts.event;
private _onDidCompleteManualSync = this._register(new Emitter<boolean>());
private _onDidCompleteManualSync = this._register(new Emitter<Error | undefined>());
readonly onDidCompleteManualSync = this._onDidCompleteManualSync.event;
private manualSync: { preview: [SyncResource, ISyncResourcePreview][], task: IManualSyncTask, disposables: DisposableStore } | undefined;
@@ -623,10 +623,16 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
throw new Error('Can apply only while syncing manually');
}
const syncPreview = await this.manualSync.task.apply();
this.updatePreview(syncPreview);
if (!this._resources.length) {
this._onDidCompleteManualSync.fire(true);
try {
const syncPreview = await this.manualSync.task.apply();
this.updatePreview(syncPreview);
if (!this._resources.length) {
this._onDidCompleteManualSync.fire(undefined);
}
} catch (error) {
await this.manualSync.task.stop();
this.updatePreview([]);
this._onDidCompleteManualSync.fire(error);
}
}
@@ -636,7 +642,7 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
}
await this.manualSync.task.stop();
this.updatePreview([]);
this._onDidCompleteManualSync.fire(false);
this._onDidCompleteManualSync.fire(canceled());
}
async pull(): Promise<void> {