From 02fa61feceea59c56b051be230c77b3d90acf6bb Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Sun, 12 Jul 2020 14:34:58 +0200 Subject: [PATCH] #100346 pass sync resoure while accepting content --- src/vs/platform/userDataSync/common/userDataSync.ts | 2 +- src/vs/platform/userDataSync/common/userDataSyncIpc.ts | 2 +- .../platform/userDataSync/common/userDataSyncService.ts | 9 +++------ .../contrib/userDataSync/browser/userDataSync.ts | 6 +++--- .../userDataSync/electron-browser/userDataSyncService.ts | 4 ++-- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/vs/platform/userDataSync/common/userDataSync.ts b/src/vs/platform/userDataSync/common/userDataSync.ts index e963a2302e5..a2712afe8b8 100644 --- a/src/vs/platform/userDataSync/common/userDataSync.ts +++ b/src/vs/platform/userDataSync/common/userDataSync.ts @@ -404,7 +404,7 @@ export interface IUserDataSyncService { isFirstTimeSyncingWithAnotherMachine(): Promise; hasPreviouslySynced(): Promise; resolveContent(resource: URI): Promise; - acceptPreviewContent(conflictResource: URI, content: string): Promise; + acceptPreviewContent(resource: SyncResource, conflictResource: URI, content: string): Promise; getLocalSyncResourceHandles(resource: SyncResource): Promise; getRemoteSyncResourceHandles(resource: SyncResource): Promise; diff --git a/src/vs/platform/userDataSync/common/userDataSyncIpc.ts b/src/vs/platform/userDataSync/common/userDataSyncIpc.ts index bddddb9252b..6e50bd869ce 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncIpc.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncIpc.ts @@ -54,7 +54,7 @@ export class UserDataSyncChannel implements IServerChannel { case 'hasPreviouslySynced': return this.service.hasPreviouslySynced(); case 'hasLocalData': return this.service.hasLocalData(); case 'isFirstTimeSyncingWithAnotherMachine': return this.service.isFirstTimeSyncingWithAnotherMachine(); - case 'acceptPreviewContent': return this.service.acceptPreviewContent(URI.revive(args[0]), args[1]); + case 'acceptPreviewContent': return this.service.acceptPreviewContent(args[0], URI.revive(args[1]), args[2]); case 'resolveContent': return this.service.resolveContent(URI.revive(args[0])); case 'getLocalSyncResourceHandles': return this.service.getLocalSyncResourceHandles(args[0]); case 'getRemoteSyncResourceHandles': return this.service.getRemoteSyncResourceHandles(args[0]); diff --git a/src/vs/platform/userDataSync/common/userDataSyncService.ts b/src/vs/platform/userDataSync/common/userDataSyncService.ts index a1b20602b09..88a7d116bc4 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncService.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncService.ts @@ -259,13 +259,10 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ } } - async acceptPreviewContent(resource: URI, content: string, executionId: string = generateUuid()): Promise { + async acceptPreviewContent(syncResource: SyncResource, resource: URI, content: string, executionId: string = generateUuid()): Promise { await this.checkEnablement(); - const synchroniser = this.synchronisers.find(synchroniser => synchroniser.resourcePreviews.some(({ localResource, previewResource, remoteResource }) => - isEqual(resource, localResource) || isEqual(resource, previewResource) || isEqual(resource, remoteResource))); - if (synchroniser) { - await synchroniser.acceptPreviewContent(resource, content, false, { 'X-Execution-Id': executionId }); - } + const synchroniser = this.getSynchroniser(syncResource); + await synchroniser.acceptPreviewContent(resource, content, false, { 'X-Execution-Id': executionId }); } async resolveContent(resource: URI): Promise { diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts index df9541e4ca4..3df289d8e9f 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts @@ -243,7 +243,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo for (const conflict of conflicts) { const modelRef = await this.textModelResolverService.createModelReference(conflict.remoteResource); try { - await this.userDataSyncService.acceptPreviewContent(conflict.remoteResource, modelRef.object.textEditorModel.getValue()); + await this.userDataSyncService.acceptPreviewContent(syncResource, conflict.remoteResource, modelRef.object.textEditorModel.getValue()); } finally { modelRef.dispose(); } @@ -258,7 +258,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo for (const conflict of conflicts) { const modelRef = await this.textModelResolverService.createModelReference(conflict.previewResource); try { - await this.userDataSyncService.acceptPreviewContent(conflict.previewResource, modelRef.object.textEditorModel.getValue()); + await this.userDataSyncService.acceptPreviewContent(syncResource, conflict.previewResource, modelRef.object.textEditorModel.getValue()); } finally { modelRef.dispose(); } @@ -1163,7 +1163,7 @@ class AcceptChangesContribution extends Disposable implements IEditorContributio }); if (result.confirmed) { try { - await this.userDataSyncService.acceptPreviewContent(model.uri, model.getValue()); + await this.userDataSyncService.acceptPreviewContent(syncResourceConflicts.syncResource, model.uri, model.getValue()); } catch (e) { if (e instanceof UserDataSyncError && e.code === UserDataSyncErrorCode.LocalPreconditionFailed) { const syncResourceCoflicts = this.userDataSyncService.conflicts.filter(({ syncResource }) => syncResource === syncResourceConflicts.syncResource)[0]; diff --git a/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts b/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts index e0308ca25e2..50af70abb5c 100644 --- a/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts +++ b/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts @@ -104,8 +104,8 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ return this.channel.call('isFirstTimeSyncingWithAnotherMachine'); } - acceptPreviewContent(resource: URI, content: string): Promise { - return this.channel.call('acceptPreviewContent', [resource, content]); + acceptPreviewContent(syncResource: SyncResource, resource: URI, content: string): Promise { + return this.channel.call('acceptPreviewContent', [syncResource, resource, content]); } resolveContent(resource: URI): Promise {