749
750
async sync(manifestOrLatestData: IUserDataManifest | IUserDataSyncLatestData | null, preview: boolean, executionId: string, token: CancellationToken): Promise<[SyncResource, UserDataSyncError][]> {
752
>
// Return if cancellation is requested
753
>
if (token.isCancellationRequested) {
754
return [];
755
}
757
>
const synchronizers = this.enabled;
758
>
if (!synchronizers.length) {
759
return [];
760
}
762
>
try {
763
>
const syncErrors: [SyncResource, UserDataSyncError][] = [];
764
>
const syncHeaders = createSyncHeaders(executionId);
765
>
const userDataSyncConfiguration = preview ? await this.getUserDataSyncConfiguration(manifestOrLatestData) : this.getLocalUserDataSyncConfiguration();
766
>
for (const synchroniser of synchronizers) {
767
>
// Return if cancellation is requested
768
>
if (token.isCancellationRequested) {
769
return [];
770
}
772
>
// Return if resource is not enabled
773
>
if (!this.userDataSyncEnablementService.isResourceEnabled(synchroniser.resource)) {
774
return [];
775
}
777
>
try {
778
>
const refOrUserData = getRefOrUserData(manifestOrLatestData, this.collection, synchroniser.resource) ?? null;
779
>
await synchroniser.sync(refOrUserData, preview, userDataSyncConfiguration, syncHeaders);
780
>
} catch (e) {
781
const userDataSyncError = UserDataSyncError.toUserDataSyncError(e);
782
reportUserDataSyncError(userDataSyncError, executionId, this.userDataSyncStoreManagementService, this.telemetryService);