@@ -76,15 +76,17 @@ export interface IMergeResult extends IAcceptResult {
7676 readonly hasConflicts : boolean ;
7777}
7878
79- export interface IResourcePreviewResult extends IBaseResourcePreview , IResourcePreview {
80- mergeResult ?: IMergeResult ;
79+ interface IEditableResourcePreview extends IBaseResourcePreview , IResourcePreview {
80+ localChange : Change ;
81+ remoteChange : Change ;
82+ mergeState : MergeState ;
8183 acceptResult ?: IAcceptResult ;
8284}
8385
84- export interface ISyncResourcePreview extends IBaseSyncResourcePreview {
86+ interface ISyncResourcePreview extends IBaseSyncResourcePreview {
8587 readonly remoteUserData : IRemoteUserData ;
8688 readonly lastSyncUserData : IRemoteUserData | null ;
87- readonly resourcePreviews : IResourcePreviewResult [ ] ;
89+ readonly resourcePreviews : IEditableResourcePreview [ ] ;
8890}
8991
9092export abstract class AbstractSynchroniser extends Disposable {
@@ -100,10 +102,10 @@ export abstract class AbstractSynchroniser extends Disposable {
100102 private _onDidChangStatus : Emitter < SyncStatus > = this . _register ( new Emitter < SyncStatus > ( ) ) ;
101103 readonly onDidChangeStatus : Event < SyncStatus > = this . _onDidChangStatus . event ;
102104
103- private _conflicts : IResourcePreviewResult [ ] = [ ] ;
104- get conflicts ( ) : IResourcePreviewResult [ ] { return this . _conflicts ; }
105- private _onDidChangeConflicts : Emitter < IResourcePreviewResult [ ] > = this . _register ( new Emitter < IResourcePreviewResult [ ] > ( ) ) ;
106- readonly onDidChangeConflicts : Event < IResourcePreviewResult [ ] > = this . _onDidChangeConflicts . event ;
105+ private _conflicts : IBaseResourcePreview [ ] = [ ] ;
106+ get conflicts ( ) : IBaseResourcePreview [ ] { return this . _conflicts ; }
107+ private _onDidChangeConflicts : Emitter < IBaseResourcePreview [ ] > = this . _register ( new Emitter < IBaseResourcePreview [ ] > ( ) ) ;
108+ readonly onDidChangeConflicts : Event < IBaseResourcePreview [ ] > = this . _onDidChangeConflicts . event ;
107109
108110 private readonly localChangeTriggerScheduler = new RunOnceScheduler ( ( ) => this . doTriggerLocalChange ( ) , 50 ) ;
109111 private readonly _onDidChangeLocal : Emitter < void > = this . _register ( new Emitter < void > ( ) ) ;
@@ -371,29 +373,23 @@ export abstract class AbstractSynchroniser extends Disposable {
371373 const acceptResult : IAcceptResult | undefined = mergeResult && ! mergeResult . hasConflicts
372374 ? await this . getAcceptResult ( resourcePreview , resourcePreview . previewResource , undefined , CancellationToken . None )
373375 : undefined ;
374- return {
375- ...resourcePreview ,
376- mergeResult,
377- acceptResult,
378- mergeState : mergeResult . hasConflicts ? MergeState . Conflict : acceptResult ? MergeState . Accepted : MergeState . Preview ,
379- localChange : acceptResult ? acceptResult . localChange : mergeResult . localChange ,
380- remoteChange : acceptResult ? acceptResult . remoteChange : mergeResult . remoteChange
381- } ;
376+ resourcePreview . acceptResult = acceptResult ;
377+ resourcePreview . mergeState = mergeResult . hasConflicts ? MergeState . Conflict : acceptResult ? MergeState . Accepted : MergeState . Preview ;
378+ resourcePreview . localChange = acceptResult ? acceptResult . localChange : mergeResult . localChange ;
379+ resourcePreview . remoteChange = acceptResult ? acceptResult . remoteChange : mergeResult . remoteChange ;
380+ return resourcePreview ;
382381 } ) ;
383382 return this . syncPreviewPromise ;
384383 }
385384
386385 async accept ( resource : URI , content ?: string | null ) : Promise < ISyncResourcePreview | null > {
387386 await this . updateSyncResourcePreview ( resource , async ( resourcePreview ) => {
388387 const acceptResult = await this . getAcceptResult ( resourcePreview , resource , content , CancellationToken . None ) ;
389- return {
390- ...resourcePreview ,
391- acceptResult,
392- mergeResult : undefined ,
393- mergeState : MergeState . Accepted ,
394- localChange : acceptResult . localChange ,
395- remoteChange : acceptResult . remoteChange
396- } ;
388+ resourcePreview . acceptResult = acceptResult ;
389+ resourcePreview . mergeState = MergeState . Accepted ;
390+ resourcePreview . localChange = acceptResult . localChange ;
391+ resourcePreview . remoteChange = acceptResult . remoteChange ;
392+ return resourcePreview ;
397393 } ) ;
398394 return this . syncPreviewPromise ;
399395 }
@@ -402,19 +398,16 @@ export abstract class AbstractSynchroniser extends Disposable {
402398 await this . updateSyncResourcePreview ( resource , async ( resourcePreview ) => {
403399 const mergeResult = await this . getMergeResult ( resourcePreview , CancellationToken . None ) ;
404400 await this . fileService . writeFile ( resourcePreview . previewResource , VSBuffer . fromString ( mergeResult . content || '' ) ) ;
405- return {
406- ...resourcePreview ,
407- mergeResult : undefined ,
408- acceptResult : undefined ,
409- mergeState : MergeState . Preview ,
410- localChange : mergeResult . localChange ,
411- remoteChange : mergeResult . remoteChange
412- } ;
401+ resourcePreview . acceptResult = undefined ;
402+ resourcePreview . mergeState = MergeState . Preview ;
403+ resourcePreview . localChange = mergeResult . localChange ;
404+ resourcePreview . remoteChange = mergeResult . remoteChange ;
405+ return resourcePreview ;
413406 } ) ;
414407 return this . syncPreviewPromise ;
415408 }
416409
417- private async updateSyncResourcePreview ( resource : URI , updateResourcePreview : ( resourcePreview : IResourcePreviewResult ) => Promise < IResourcePreviewResult > ) : Promise < void > {
410+ private async updateSyncResourcePreview ( resource : URI , updateResourcePreview : ( resourcePreview : IEditableResourcePreview ) => Promise < IEditableResourcePreview > ) : Promise < void > {
418411 if ( ! this . syncPreviewPromise ) {
419412 return ;
420413 }
@@ -452,12 +445,12 @@ export abstract class AbstractSynchroniser extends Disposable {
452445 const preview = await this . syncPreviewPromise ;
453446
454447 // check for conflicts
455- if ( preview . resourcePreviews . some ( ( { mergeResult } ) => mergeResult ?. hasConflicts ) ) {
448+ if ( preview . resourcePreviews . some ( ( { mergeState } ) => mergeState === MergeState . Conflict ) ) {
456449 return SyncStatus . HasConflicts ;
457450 }
458451
459452 // check if all are accepted
460- if ( preview . resourcePreviews . some ( ( { localChange , remoteChange , acceptResult } ) => ! acceptResult ) ) {
453+ if ( preview . resourcePreviews . some ( ( { mergeState } ) => mergeState !== MergeState . Accepted ) ) {
461454 return SyncStatus . Syncing ;
462455 }
463456
@@ -479,8 +472,8 @@ export abstract class AbstractSynchroniser extends Disposable {
479472 } catch ( error ) { /* Ignore */ }
480473 }
481474
482- private updateConflicts ( resourcePreviews : IResourcePreviewResult [ ] ) : void {
483- const conflicts = resourcePreviews . filter ( r => r . mergeResult ?. hasConflicts ) ;
475+ private updateConflicts ( resourcePreviews : IEditableResourcePreview [ ] ) : void {
476+ const conflicts = resourcePreviews . filter ( ( { mergeState } ) => mergeState === MergeState . Conflict ) ;
484477 if ( ! equals ( this . _conflicts , conflicts , ( a , b ) => isEqual ( a . previewResource , b . previewResource ) ) ) {
485478 this . _conflicts = conflicts ;
486479 this . _onDidChangeConflicts . fire ( conflicts ) ;
@@ -566,7 +559,7 @@ export abstract class AbstractSynchroniser extends Disposable {
566559 const lastSyncUserDataForPreview = lastSyncUserData === null && isLastSyncFromCurrentMachine ? remoteUserData : lastSyncUserData ;
567560 const resourcePreviewResults = await this . generateSyncPreview ( remoteUserData , lastSyncUserDataForPreview , token ) ;
568561
569- const resourcePreviews : IResourcePreviewResult [ ] = [ ] ;
562+ const resourcePreviews : IEditableResourcePreview [ ] = [ ] ;
570563 for ( const resourcePreviewResult of resourcePreviewResults ) {
571564 const acceptedResource = resourcePreviewResult . previewResource . with ( { scheme : USER_DATA_SYNC_SCHEME , authority : 'accepted' } ) ;
572565
@@ -598,7 +591,6 @@ export abstract class AbstractSynchroniser extends Disposable {
598591 resourcePreviews . push ( {
599592 ...resourcePreviewResult ,
600593 acceptedResource : resourcePreviewResult . previewResource . with ( { scheme : USER_DATA_SYNC_SCHEME , authority : 'accepted' } ) ,
601- mergeResult,
602594 acceptResult,
603595 mergeState : mergeResult ?. hasConflicts ? MergeState . Conflict : acceptResult ? MergeState . Accepted : MergeState . Preview ,
604596 localChange : acceptResult ? acceptResult . localChange : mergeResult ? mergeResult . localChange : resourcePreviewResult . localChange ,
0 commit comments