userDataSyncService.ts ×19

Frontier kind: Code frontier

unlabeled · c_e9f03366eaea

187 tests · 25086 LOC · 133 files · introduces 0 tests · 341 LOC · 11 files

Introduces — evidence that enters the hierarchy at this concept

Code
34 ranges341 lines · 11 files
Tests
0 tests

Contains — complete concept membership

All code (extent)
3911 ranges25086 lines · 133 files · Browse complete extent
All tests (intent)
187 testsBrowse complete intent

Neighbourhood graph

The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.

Introduced files, introduced tests, and structurally relevant concept specialization

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.

Native relationship evidence

Every exact file and test below is linked only from the concept that introduces it.

Introduced tests

Every collected test enters the hierarchy at exactly one concept.

No tests are introduced at this concept. Its intent tests are introduced by other concepts.

Introduced code

Every collected source range enters the hierarchy at exactly one concept.

11 files ranked by introduced lines: 341 introduced LOC across 34 ranges. Expand a file to inspect source; the > gutter marks introduced lines.

src/vs/platform/userDataSync/common/userDataSyncService.ts 94 introduced LOC · 19 ranges

Open complete file

579
580 private setStatus(status: SyncStatus): void {
581 > const oldStatus = this._status; userDataSyncService.ts
582 > if (this._status !== status) {
583 > this._status = status;
584 > this._onDidChangeStatus.fire(status);
585 > if (oldStatus === SyncStatus.HasConflicts) {
586 this.updateLastSyncTime();
587 }
589 > }
590
591 private updateConflicts(): void {
606
607 getOrCreateActiveProfileSynchronizer(profile: IUserDataProfile, syncProfile: ISyncUserDataProfile | undefined): ProfileSynchronizer {
608 > let activeProfileSynchronizer = this.activeProfileSynchronizers.get(profile.id); userDataSyncService.ts
609 > if (activeProfileSynchronizer && activeProfileSynchronizer[0].collection !== syncProfile?.collection) {
610 this.logService.error('Profile synchronizer collection does not match with the remote sync profile collection');
611 activeProfileSynchronizer[1].dispose();
613 this.activeProfileSynchronizers.delete(profile.id);
614 }
615 > if (!activeProfileSynchronizer) { userDataSyncService.ts
616 > const disposables = new DisposableStore();
617 > const profileSynchronizer = disposables.add(this.instantiationService.createInstance(ProfileSynchronizer, profile, syncProfile?.collection));
618 > disposables.add(profileSynchronizer.onDidChangeStatus(e => this.setStatus(e)));
619 > disposables.add(profileSynchronizer.onDidChangeConflicts(conflicts => this.updateConflicts()));
620 > disposables.add(profileSynchronizer.onDidChangeLocal(e => this._onDidChangeLocal.fire(e)));
621 > this.activeProfileSynchronizers.set(profile.id, activeProfileSynchronizer = [profileSynchronizer, disposables]);
622 > }
623 > return activeProfileSynchronizer[0];
624 > }
625
626 private getActiveProfileSynchronizers(): ProfileSynchronizer[] {
667
668 constructor(
669 > readonly profile: IUserDataProfile, userDataSyncService.ts
670 > readonly collection: string | undefined,
671 > @IUserDataSyncEnablementService private readonly userDataSyncEnablementService: IUserDataSyncEnablementService,
672 > @IInstantiationService private readonly instantiationService: IInstantiationService,
673 > @IExtensionGalleryService private readonly extensionGalleryService: IExtensionGalleryService,
674 > @IUserDataSyncStoreManagementService private readonly userDataSyncStoreManagementService: IUserDataSyncStoreManagementService,
675 > @ITelemetryService private readonly telemetryService: ITelemetryService,
676 > @IUserDataSyncLogService private readonly logService: IUserDataSyncLogService,
677 > @IConfigurationService private readonly configurationService: IConfigurationService,
678 > ) {
679 > super();
680 > this._register(userDataSyncEnablementService.onDidChangeResourceEnablement(([syncResource, enablement]) => this.onDidChangeResourceEnablement(syncResource, enablement)));
681 > this._register(toDisposable(() => this._enabled.splice(0, this._enabled.length).forEach(([, , disposable]) => disposable.dispose())));
682 > for (const syncResource of ALL_SYNC_RESOURCES) {
683 > if (userDataSyncEnablementService.isResourceEnabled(syncResource)) {
684 > this.registerSynchronizer(syncResource);
685 > }
686 > }
687 > }
688
689 private onDidChangeResourceEnablement(syncResource: SyncResource, enabled: boolean): void {
696
697 protected registerSynchronizer(syncResource: SyncResource): void {
698 > if (this._enabled.some(([synchronizer]) => synchronizer.resource === syncResource)) { userDataSyncService.ts
699 return;
700 }
701 > if (syncResource === SyncResource.Extensions && !this.extensionGalleryService.isEnabled()) { userDataSyncService.ts
702 this.logService.info('Skipping extensions sync because gallery is not configured');
703 return;
704 }
705 > if (syncResource === SyncResource.Profiles) { userDataSyncService.ts
706 > if (!this.profile.isDefault) {
707 return;
708 }
710 > if (syncResource === SyncResource.WorkspaceState) {
711 return;
712 }
713 > if (syncResource !== SyncResource.Profiles && this.profile.useDefaultFlags?.[syncResource]) { userDataSyncService.ts
714 this.logService.debug(`Skipping syncing ${syncResource} in ${this.profile.name} because it is already synced by default profile`);
715 return;
716 }
717 > const disposables = new DisposableStore(); userDataSyncService.ts
718 > const synchronizer = disposables.add(this.createSynchronizer(syncResource));
719 > disposables.add(synchronizer.onDidChangeStatus(() => this.updateStatus()));
720 > disposables.add(synchronizer.onDidChangeConflicts(() => this.updateConflicts()));
721 > disposables.add(synchronizer.onDidChangeLocal(() => this._onDidChangeLocal.fire(syncResource)));
722 > const order = this.getOrder(syncResource);
723 > this._enabled.push([synchronizer, order, disposables]);
724 > }
725
726 private deRegisterSynchronizer(syncResource: SyncResource): void {
735
736 createSynchronizer(syncResource: Exclude<SyncResource, SyncResource.WorkspaceState>): IUserDataSynchroniser & IDisposable {
737 > switch (syncResource) { userDataSyncService.ts
738 > case SyncResource.Settings: return this.instantiationService.createInstance(SettingsSynchroniser, this.profile, this.collection);
739 > case SyncResource.Keybindings: return this.instantiationService.createInstance(KeybindingsSynchroniser, this.profile, this.collection);
740 > case SyncResource.Snippets: return this.instantiationService.createInstance(SnippetsSynchroniser, this.profile, this.collection);
741 > case SyncResource.Prompts: return this.instantiationService.createInstance(PromptsSynchronizer, this.profile, this.collection);
742 > case SyncResource.Tasks: return this.instantiationService.createInstance(TasksSynchroniser, this.profile, this.collection);
743 > case SyncResource.Mcp: return this.instantiationService.createInstance(McpSynchroniser, this.profile, this.collection);
744 > case SyncResource.GlobalState: return this.instantiationService.createInstance(GlobalStateSynchroniser, this.profile, this.collection);
745 > case SyncResource.Extensions: return this.instantiationService.createInstance(ExtensionsSynchroniser, this.profile, this.collection);
746 > case SyncResource.Profiles: return this.instantiationService.createInstance(UserDataProfilesManifestSynchroniser, this.profile, this.collection);
747 > }
748 > }
749
750 async sync(manifestOrLatestData: IUserDataManifest | IUserDataSyncLatestData | null, preview: boolean, executionId: string, token: CancellationToken): Promise<[SyncResource, UserDataSyncError][]> {
861
862 private setStatus(status: SyncStatus): void {
863 > if (this._status !== status) { userDataSyncService.ts
864 > this._status = status;
865 > this._onDidChangeStatus.fire(status);
866 > }
867 > }
868
869 private updateStatus(): void {
870 > this.updateConflicts(); userDataSyncService.ts
871 > if (this.enabled.some(s => s.status === SyncStatus.HasConflicts)) {
872 return this.setStatus(SyncStatus.HasConflicts);
873 }
874 > if (this.enabled.some(s => s.status === SyncStatus.Syncing)) { userDataSyncService.ts
875 > return this.setStatus(SyncStatus.Syncing);
876 > }
877 return this.setStatus(SyncStatus.Idle);
879
880 private updateConflicts(): void {
881 > const conflicts = this.enabled.filter(s => s.status === SyncStatus.HasConflicts) userDataSyncService.ts
882 > .filter(s => s.conflicts.conflicts.length > 0)
883 > .map(s => s.conflicts);
884 > if (!equals(this._conflicts, conflicts, (a, b) => a.syncResource === b.syncResource && equals(a.conflicts, b.conflicts, (a, b) => isEqual(a.previewResource, b.previewResource)))) {
885 this._conflicts = conflicts;
886 this._onDidChangeConflicts.fire(conflicts);
887 }
889
890 private getOrder(syncResource: SyncResource): number {
891 > switch (syncResource) { userDataSyncService.ts
892 > case SyncResource.Settings: return 0;
893 > case SyncResource.Keybindings: return 1;
894 > case SyncResource.Snippets: return 2;
895 > case SyncResource.Tasks: return 3;
896 > case SyncResource.Mcp: return 4;
897 > case SyncResource.GlobalState: return 5;
898 > case SyncResource.Extensions: return 6;
899 > case SyncResource.Prompts: return 7;
900 > case SyncResource.Profiles: return 8;
901 > case SyncResource.WorkspaceState: return 9;
902 > }
903 > }
904 }
905
src/vs/platform/userDataSync/common/abstractSynchronizer.ts 39 introduced LOC · 3 ranges

Open complete file

788
789 constructor(
790 > protected readonly file: URI, abstractSynchronizer.ts
791 > syncResource: IUserDataSyncResource,
792 > collection: string | undefined,
793 > @IFileService fileService: IFileService,
794 > @IEnvironmentService environmentService: IEnvironmentService,
795 > @IStorageService storageService: IStorageService,
796 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
797 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
798 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
799 > @ITelemetryService telemetryService: ITelemetryService,
800 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
801 > @IConfigurationService configurationService: IConfigurationService,
802 > @IUriIdentityService uriIdentityService: IUriIdentityService,
803 > ) {
804 > super(syncResource, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
805 > this._register(this.fileService.watch(this.extUri.dirname(file)));
806 > this._register(this.fileService.onDidFilesChange(e => this.onFileChanges(e)));
807 > }
808
809 protected async getLocalFileContent(): Promise<IFileContent | null> {
856
857 constructor(
858 > file: URI, abstractSynchronizer.ts
859 > syncResource: IUserDataSyncResource,
860 > collection: string | undefined,
861 > @IFileService fileService: IFileService,
862 > @IEnvironmentService environmentService: IEnvironmentService,
863 > @IStorageService storageService: IStorageService,
864 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
865 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
866 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
867 > @ITelemetryService telemetryService: ITelemetryService,
868 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
869 > @IUserDataSyncUtilService protected readonly userDataSyncUtilService: IUserDataSyncUtilService,
870 > @IConfigurationService configurationService: IConfigurationService,
871 > @IUriIdentityService uriIdentityService: IUriIdentityService,
872 > ) {
873 > super(file, syncResource, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
874 > }
875 >
876 > protected hasErrors(content: string, isArray: boolean): boolean {
877 const parseErrors: ParseError[] = [];
878 const result = parse(content, parseErrors, { allowEmptyContent: true, allowTrailingComma: true });
879 return parseErrors.length > 0 || (!isUndefined(result) && isArray !== Array.isArray(result));
880 }
882 > private _formattingOptions: Promise<FormattingOptions> | undefined = undefined;
883 protected getFormattingOptions(): Promise<FormattingOptions> {
884 if (!this._formattingOptions) {
src/vs/platform/userDataSync/common/extensionsSync.ts 36 introduced LOC · 2 ranges

Open complete file

115
116 constructor(
117 > // profileLocation changes for default profile extensionsSync.ts
118 > profile: IUserDataProfile,
119 > collection: string | undefined,
120 > @IEnvironmentService environmentService: IEnvironmentService,
121 > @IFileService fileService: IFileService,
122 > @IStorageService storageService: IStorageService,
123 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
124 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
125 > @IExtensionManagementService private readonly extensionManagementService: IExtensionManagementService,
126 > @IIgnoredExtensionsManagementService private readonly ignoredExtensionsManagementService: IIgnoredExtensionsManagementService,
127 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
128 > @IConfigurationService configurationService: IConfigurationService,
129 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
130 > @ITelemetryService telemetryService: ITelemetryService,
131 > @IExtensionStorageService extensionStorageService: IExtensionStorageService,
132 > @IUriIdentityService uriIdentityService: IUriIdentityService,
133 > @IUserDataProfileStorageService userDataProfileStorageService: IUserDataProfileStorageService,
134 > @IInstantiationService private readonly instantiationService: IInstantiationService,
135 > ) {
136 > super({ syncResource: SyncResource.Extensions, profile }, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
137 > this.localExtensionsProvider = this.instantiationService.createInstance(LocalExtensionsProvider);
138 > this._register(
139 > Event.any<any>(
140 > Event.filter(this.extensionManagementService.onDidInstallExtensions, (e => e.some(({ local }) => !!local))),
141 > Event.filter(this.extensionManagementService.onDidUninstallExtension, (e => !e.error)),
142 > Event.filter(userDataProfileStorageService.onDidChange, e => e.valueChanges.some(({ profile, changes }) => this.syncResource.profile.id === profile.id && changes.some(change => change.key === DISABLED_EXTENSIONS_STORAGE_PATH))),
143 > extensionStorageService.onDidChangeExtensionStorageToSync)(() => this.triggerLocalChange()));
144 > }
145
146 protected async generateSyncPreview(remoteUserData: IRemoteUserData, lastSyncUserData: ILastSyncUserData | null): Promise<IExtensionResourcePreview[]> {
364
365 constructor(
366 > @IExtensionManagementService private readonly extensionManagementService: IExtensionManagementService, extensionsSync.ts
367 > @IUserDataProfileStorageService private readonly userDataProfileStorageService: IUserDataProfileStorageService,
368 > @IExtensionGalleryService private readonly extensionGalleryService: IExtensionGalleryService,
369 > @IIgnoredExtensionsManagementService private readonly ignoredExtensionsManagementService: IIgnoredExtensionsManagementService,
370 > @IInstantiationService private readonly instantiationService: IInstantiationService,
371 > @IUserDataSyncLogService private readonly logService: IUserDataSyncLogService,
372 > @IProductService private readonly productService: IProductService,
373 > ) { }
374
375 async getLocalExtensions(profile: IUserDataProfile): Promise<{ localExtensions: ILocalSyncExtension[]; ignoredExtensions: string[] }> {
src/vs/platform/userDataSync/common/promptsSync/promptsSync.ts 34 introduced LOC · 1 range

Open complete file

44
45 constructor(
46 > profile: IUserDataProfile, promptsSync.ts
47 > collection: string | undefined,
48 > @IEnvironmentService environmentService: IEnvironmentService,
49 > @IFileService fileService: IFileService,
50 > @IStorageService storageService: IStorageService,
51 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
52 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
53 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
54 > @IConfigurationService configurationService: IConfigurationService,
55 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
56 > @ITelemetryService telemetryService: ITelemetryService,
57 > @IUriIdentityService uriIdentityService: IUriIdentityService,
58 > ) {
59 > const syncResource = { syncResource: SyncResource.Prompts, profile };
60 > super(
61 > syncResource,
62 > collection,
63 > fileService,
64 > environmentService,
65 > storageService,
66 > userDataSyncStoreService,
67 > userDataSyncLocalStoreService,
68 > userDataSyncEnablementService,
69 > telemetryService,
70 > logService,
71 > configurationService,
72 > uriIdentityService,
73 > );
74 >
75 > this.promptsFolder = profile.promptsHome;
76 > this._register(this.fileService.watch(environmentService.userRoamingDataHome));
77 > this._register(this.fileService.watch(this.promptsFolder));
78 > this._register(Event.filter(this.fileService.onDidFilesChange, e => e.affects(this.promptsFolder))(() => this.triggerLocalChange()));
79 > }
80
81 protected async generateSyncPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, isRemoteDataFromCurrentMachine: boolean): Promise<IPromptsResourcePreview[]> {
src/vs/platform/userDataSync/common/globalStateSync.ts 32 introduced LOC · 3 ranges

Open complete file

79
80 constructor(
81 > profile: IUserDataProfile, globalStateSync.ts
82 > collection: string | undefined,
83 > @IUserDataProfileStorageService private readonly userDataProfileStorageService: IUserDataProfileStorageService,
84 > @IFileService fileService: IFileService,
85 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
86 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
87 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
88 > @IEnvironmentService environmentService: IEnvironmentService,
89 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
90 > @ITelemetryService telemetryService: ITelemetryService,
91 > @IConfigurationService configurationService: IConfigurationService,
92 > @IStorageService storageService: IStorageService,
93 > @IUriIdentityService uriIdentityService: IUriIdentityService,
94 > @IInstantiationService instantiationService: IInstantiationService,
95 > ) {
96 > super({ syncResource: SyncResource.GlobalState, profile }, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
97 > this.localGlobalStateProvider = instantiationService.createInstance(LocalGlobalStateProvider);
98 > this._register(fileService.watch(this.extUri.dirname(this.environmentService.argvResource)));
99 > this._register(
100 > Event.any(
101 > /* Locale change */
102 > Event.filter(fileService.onDidFilesChange, e => e.contains(this.environmentService.argvResource)),
103 > Event.filter(userDataProfileStorageService.onDidChange, e => {
104 /* StorageTarget has changed in profile storage */
105 if (e.targetChanges.some(profile => this.syncResource.profile.id === profile.id)) {
111 }
112 return false;
113 > }), globalStateSync.ts
114 > )((() => this.triggerLocalChange()))
115 > );
116 > }
117
118 protected async generateSyncPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, isRemoteDataFromCurrentMachine: boolean): Promise<IGlobalStateResourcePreview[]> {
320 export class LocalGlobalStateProvider {
321 constructor(
322 > @IFileService private readonly fileService: IFileService, globalStateSync.ts
323 > @IEnvironmentService private readonly environmentService: IEnvironmentService,
324 > @IUserDataProfileStorageService private readonly userDataProfileStorageService: IUserDataProfileStorageService,
325 > @IUserDataSyncLogService private readonly logService: IUserDataSyncLogService
326 > ) { }
327
328 async getLocalGlobalState(profile: IUserDataProfile): Promise<IGlobalState> {
src/vs/platform/userDataSync/common/abstractJsonSynchronizer.ts 23 introduced LOC · 1 range

Open complete file

30
31 constructor(
32 > fileResource: URI, abstractJsonSynchronizer.ts
33 > syncResourceMetadata: { syncResource: SyncResource; profile: IUserDataProfile },
34 > collection: string | undefined,
35 > previewFileName: string,
36 > @IFileService fileService: IFileService,
37 > @IEnvironmentService environmentService: IEnvironmentService,
38 > @IStorageService storageService: IStorageService,
39 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
40 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
41 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
42 > @ITelemetryService telemetryService: ITelemetryService,
43 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
44 > @IConfigurationService configurationService: IConfigurationService,
45 > @IUriIdentityService uriIdentityService: IUriIdentityService,
46 > ) {
47 > super(fileResource, syncResourceMetadata, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
48 >
49 > this.previewResource = this.extUri.joinPath(this.syncPreviewFolder, previewFileName);
50 > this.baseResource = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'base' });
51 > this.localResource = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'local' });
52 > this.remoteResource = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'remote' });
53 > this.acceptedResource = this.previewResource.with({ scheme: USER_DATA_SYNC_SCHEME, authority: 'accepted' });
54 > }
55
56 protected abstract getContentFromSyncContent(syncContent: string): string | null;
src/vs/platform/userDataSync/common/snippetsSync.ts 19 introduced LOC · 1 range

Open complete file

39
40 constructor(
41 > profile: IUserDataProfile, snippetsSync.ts
42 > collection: string | undefined,
43 > @IEnvironmentService environmentService: IEnvironmentService,
44 > @IFileService fileService: IFileService,
45 > @IStorageService storageService: IStorageService,
46 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
47 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
48 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
49 > @IConfigurationService configurationService: IConfigurationService,
50 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
51 > @ITelemetryService telemetryService: ITelemetryService,
52 > @IUriIdentityService uriIdentityService: IUriIdentityService,
53 > ) {
54 > super({ syncResource: SyncResource.Snippets, profile }, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
55 > this.snippetsFolder = profile.snippetsHome;
56 > this._register(this.fileService.watch(environmentService.userRoamingDataHome));
57 > this._register(this.fileService.watch(this.snippetsFolder));
58 > this._register(Event.filter(this.fileService.onDidFilesChange, e => e.affects(this.snippetsFolder))(() => this.triggerLocalChange()));
59 > }
60
61 protected async generateSyncPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, isRemoteDataFromCurrentMachine: boolean): Promise<ISnippetsResourcePreview[]> {
src/vs/platform/userDataSync/common/keybindingsSync.ts 17 introduced LOC · 1 range

Open complete file

71
72 constructor(
73 > profile: IUserDataProfile, keybindingsSync.ts
74 > collection: string | undefined,
75 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
76 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
77 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
78 > @IConfigurationService configurationService: IConfigurationService,
79 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
80 > @IFileService fileService: IFileService,
81 > @IEnvironmentService environmentService: IEnvironmentService,
82 > @IStorageService storageService: IStorageService,
83 > @IUserDataSyncUtilService userDataSyncUtilService: IUserDataSyncUtilService,
84 > @ITelemetryService telemetryService: ITelemetryService,
85 > @IUriIdentityService uriIdentityService: IUriIdentityService,
86 > ) {
87 > super(profile.keybindingsResource, { syncResource: SyncResource.Keybindings, profile }, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, userDataSyncUtilService, configurationService, uriIdentityService);
88 > this._register(Event.filter(configurationService.onDidChangeConfiguration, e => e.affectsConfiguration('settingsSync.keybindingsPerPlatform'))(() => this.triggerLocalChange()));
89 > }
90
91 protected async generateSyncPreview(remoteUserData: IRemoteUserData, lastSyncUserData: ILastSyncUserData | null, isRemoteDataFromCurrentMachine: boolean, userDataSyncConfiguration: IUserDataSyncConfiguration): Promise<IKeybindingsResourcePreview[]> {
src/vs/platform/userDataSync/common/userDataProfilesManifestSync.ts 17 introduced LOC · 1 range

Open complete file

38
39 constructor(
40 > profile: IUserDataProfile, userDataProfilesManifestSync.ts
41 > collection: string | undefined,
42 > @IUserDataProfilesService private readonly userDataProfilesService: IUserDataProfilesService,
43 > @IFileService fileService: IFileService,
44 > @IEnvironmentService environmentService: IEnvironmentService,
45 > @IStorageService storageService: IStorageService,
46 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
47 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
48 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
49 > @IConfigurationService configurationService: IConfigurationService,
50 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
51 > @ITelemetryService telemetryService: ITelemetryService,
52 > @IUriIdentityService uriIdentityService: IUriIdentityService,
53 > ) {
54 > super({ syncResource: SyncResource.Profiles, profile }, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
55 > this._register(userDataProfilesService.onDidChangeProfiles(() => this.triggerLocalChange()));
56 > }
57
58 async getLastSyncedProfiles(): Promise<ISyncUserDataProfile[] | null> {
src/vs/platform/userDataSync/common/mcpSync.ts 15 introduced LOC · 1 range

Open complete file

32
33 constructor(
34 > profile: IUserDataProfile, mcpSync.ts
35 > collection: string | undefined,
36 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
37 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
38 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
39 > @IConfigurationService configurationService: IConfigurationService,
40 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
41 > @IFileService fileService: IFileService,
42 > @IEnvironmentService environmentService: IEnvironmentService,
43 > @IStorageService storageService: IStorageService,
44 > @ITelemetryService telemetryService: ITelemetryService,
45 > @IUriIdentityService uriIdentityService: IUriIdentityService,
46 > ) {
47 > super(profile.mcpResource, { syncResource: SyncResource.Mcp, profile }, collection, 'mcp.json', fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
48 > }
49
50 protected getContentFromSyncContent(syncContent: string): string | null {
src/vs/platform/userDataSync/common/tasksSync.ts 15 introduced LOC · 1 range

Open complete file

34
35 constructor(
36 > profile: IUserDataProfile, tasksSync.ts
37 > collection: string | undefined,
38 > @IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
39 > @IUserDataSyncLocalStoreService userDataSyncLocalStoreService: IUserDataSyncLocalStoreService,
40 > @IUserDataSyncLogService logService: IUserDataSyncLogService,
41 > @IConfigurationService configurationService: IConfigurationService,
42 > @IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,
43 > @IFileService fileService: IFileService,
44 > @IEnvironmentService environmentService: IEnvironmentService,
45 > @IStorageService storageService: IStorageService,
46 > @ITelemetryService telemetryService: ITelemetryService,
47 > @IUriIdentityService uriIdentityService: IUriIdentityService,
48 > ) {
49 > super(profile.tasksResource, { syncResource: SyncResource.Tasks, profile }, collection, 'tasks.json', fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
50 > }
51
52 protected getContentFromSyncContent(syncContent: string): string | null {