@@ -12,7 +12,6 @@ import { areSameExtensions } from 'vs/platform/extensionManagement/common/extens
1212import { IFileService } from 'vs/platform/files/common/files' ;
1313import { IConfigurationService } from 'vs/platform/configuration/common/configuration' ;
1414import { merge , getIgnoredExtensions } from 'vs/platform/userDataSync/common/extensionsMerge' ;
15- import { isNonEmptyArray } from 'vs/base/common/arrays' ;
1615import { AbstractSynchroniser , IRemoteUserData , ISyncData } from 'vs/platform/userDataSync/common/abstractSynchronizer' ;
1716import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' ;
1817import { URI } from 'vs/base/common/uri' ;
@@ -95,7 +94,8 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse
9594 await this . apply ( {
9695 added, removed, updated, remote, remoteUserData, localExtensions, skippedExtensions : [ ] , lastSyncUserData,
9796 hasLocalChanged : added . length > 0 || removed . length > 0 || updated . length > 0 ,
98- hasRemoteChanged : remote !== null
97+ hasRemoteChanged : remote !== null ,
98+ isLastSyncFromCurrentMachine : false
9999 } ) ;
100100 }
101101
@@ -131,7 +131,8 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse
131131 await this . apply ( {
132132 added, removed, updated, remote, remoteUserData, localExtensions, skippedExtensions : [ ] , lastSyncUserData,
133133 hasLocalChanged : added . length > 0 || removed . length > 0 || updated . length > 0 ,
134- hasRemoteChanged : remote !== null
134+ hasRemoteChanged : remote !== null ,
135+ isLastSyncFromCurrentMachine : false
135136 } , true ) ;
136137
137138 this . logService . info ( `${ this . syncResourceLogLabel } : Finished pushing extensions.` ) ;
@@ -196,7 +197,7 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse
196197 try {
197198 const installedExtensions = await this . extensionManagementService . getInstalled ( ) ;
198199 const localExtensions = this . getLocalExtensions ( installedExtensions ) ;
199- if ( isNonEmptyArray ( localExtensions ) ) {
200+ if ( localExtensions . some ( e => e . installed || e . disabled ) ) {
200201 return true ;
201202 }
202203 } catch ( error ) {
@@ -221,14 +222,23 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse
221222 await this . apply ( {
222223 added, removed, updated, remote : syncExtensions , remoteUserData, localExtensions, skippedExtensions : [ ] , lastSyncUserData,
223224 hasLocalChanged : added . length > 0 || removed . length > 0 || updated . length > 0 ,
224- hasRemoteChanged : true
225+ hasRemoteChanged : true ,
226+ isLastSyncFromCurrentMachine : false
225227 } ) ;
226228 }
227229
228230 protected async generatePreview ( remoteUserData : IRemoteUserData , lastSyncUserData : ILastSyncUserData | null ) : Promise < IExtensionsSyncPreviewResult > {
229231 const remoteExtensions : ISyncExtension [ ] | null = remoteUserData . syncData ? await this . parseAndMigrateExtensions ( remoteUserData . syncData ) : null ;
230- const lastSyncExtensions : ISyncExtension [ ] | null = lastSyncUserData ? await this . parseAndMigrateExtensions ( lastSyncUserData . syncData ! ) : null ;
231232 const skippedExtensions : ISyncExtension [ ] = lastSyncUserData ? lastSyncUserData . skippedExtensions || [ ] : [ ] ;
233+ const isLastSyncFromCurrentMachine = await this . isLastSyncFromCurrentMachine ( remoteUserData ) ;
234+ let lastSyncExtensions : ISyncExtension [ ] | null = null ;
235+ if ( lastSyncUserData === null ) {
236+ if ( isLastSyncFromCurrentMachine ) {
237+ lastSyncExtensions = await this . parseAndMigrateExtensions ( remoteUserData . syncData ! ) ;
238+ }
239+ } else {
240+ lastSyncExtensions = await this . parseAndMigrateExtensions ( lastSyncUserData . syncData ! ) ;
241+ }
232242
233243 const installedExtensions = await this . extensionManagementService . getInstalled ( ) ;
234244 const localExtensions = this . getLocalExtensions ( installedExtensions ) ;
@@ -252,7 +262,8 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse
252262 localExtensions,
253263 lastSyncUserData,
254264 hasLocalChanged : added . length > 0 || removed . length > 0 || updated . length > 0 ,
255- hasRemoteChanged : remote !== null
265+ hasRemoteChanged : remote !== null ,
266+ isLastSyncFromCurrentMachine
256267 } ;
257268 }
258269
0 commit comments