@codingame/monaco-vscode-user-data-sync-service-override 37.3.3 → 37.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.js +76 -76
- package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncConflictsView.js +8 -8
- package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.js +32 -32
- package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js +27 -27
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-user-data-sync-service-override",
|
|
3
|
-
"version": "37.3.
|
|
3
|
+
"version": "37.3.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - user-data-sync service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-api": "37.3.
|
|
19
|
-
"@codingame/monaco-vscode-user-data-profile-service-override": "37.3.
|
|
18
|
+
"@codingame/monaco-vscode-api": "37.3.4",
|
|
19
|
+
"@codingame/monaco-vscode-user-data-profile-service-override": "37.3.4"
|
|
20
20
|
},
|
|
21
21
|
"main": "index.js",
|
|
22
22
|
"module": "index.js",
|
|
@@ -39,11 +39,11 @@ let UserDataSyncReportIssueContribution = class UserDataSyncReportIssueContribut
|
|
|
39
39
|
case UserDataSyncErrorCode.LocalTooManyRequests:
|
|
40
40
|
{
|
|
41
41
|
const message = isWeb ? ( localize(
|
|
42
|
-
|
|
42
|
+
20860,
|
|
43
43
|
"Settings sync is suspended temporarily because the current device is making too many requests. Please reload {0} to resume.",
|
|
44
44
|
this.productService.nameLong
|
|
45
45
|
)) : ( localize(
|
|
46
|
-
|
|
46
|
+
20861,
|
|
47
47
|
"Settings sync is suspended temporarily because the current device is making too many requests. Please restart {0} to resume.",
|
|
48
48
|
this.productService.nameLong
|
|
49
49
|
));
|
|
@@ -53,11 +53,11 @@ let UserDataSyncReportIssueContribution = class UserDataSyncReportIssueContribut
|
|
|
53
53
|
actions: {
|
|
54
54
|
primary: [toAction({
|
|
55
55
|
id: "Show Sync Logs",
|
|
56
|
-
label: ( localize(
|
|
56
|
+
label: ( localize(20862, "Show Log")),
|
|
57
57
|
run: () => this.commandService.executeCommand(SHOW_SYNC_LOG_COMMAND_ID)
|
|
58
58
|
}), toAction({
|
|
59
59
|
id: "Restart",
|
|
60
|
-
label: isWeb ? ( localize(
|
|
60
|
+
label: isWeb ? ( localize(20863, "Reload")) : ( localize(20864, "Restart")),
|
|
61
61
|
run: () => this.hostService.restart()
|
|
62
62
|
})]
|
|
63
63
|
}
|
|
@@ -66,19 +66,19 @@ let UserDataSyncReportIssueContribution = class UserDataSyncReportIssueContribut
|
|
|
66
66
|
}
|
|
67
67
|
case UserDataSyncErrorCode.TooManyRequests:
|
|
68
68
|
{
|
|
69
|
-
const operationId = error.operationId ? ( localize(
|
|
69
|
+
const operationId = error.operationId ? ( localize(20865, "Operation Id: {0}", error.operationId)) : undefined;
|
|
70
70
|
const message = ( localize(
|
|
71
|
-
|
|
71
|
+
20866,
|
|
72
72
|
"Settings sync is disabled because the current device is making too many requests. Please wait for 10 minutes and turn on sync."
|
|
73
73
|
));
|
|
74
74
|
this.notificationService.notify({
|
|
75
75
|
severity: Severity.Error,
|
|
76
76
|
message: operationId ? `${message} ${operationId}` : message,
|
|
77
|
-
source: error.operationId ? ( localize(
|
|
77
|
+
source: error.operationId ? ( localize(20867, "Settings Sync. Operation Id: {0}", error.operationId)) : undefined,
|
|
78
78
|
actions: {
|
|
79
79
|
primary: [toAction({
|
|
80
80
|
id: "Show Sync Logs",
|
|
81
|
-
label: ( localize(
|
|
81
|
+
label: ( localize(20862, "Show Log")),
|
|
82
82
|
run: () => this.commandService.executeCommand(SHOW_SYNC_LOG_COMMAND_ID)
|
|
83
83
|
})]
|
|
84
84
|
}
|
|
@@ -51,33 +51,33 @@ import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severit
|
|
|
51
51
|
|
|
52
52
|
const turnOffSyncCommand = {
|
|
53
53
|
id: "workbench.userDataSync.actions.turnOff",
|
|
54
|
-
title: ( localize2(
|
|
54
|
+
title: ( localize2(20868, "Turn Off"))
|
|
55
55
|
};
|
|
56
56
|
const configureSyncCommand = {
|
|
57
57
|
id: CONFIGURE_SYNC_COMMAND_ID,
|
|
58
|
-
title: ( localize2(
|
|
58
|
+
title: ( localize2(20869, "Configure..."))
|
|
59
59
|
};
|
|
60
60
|
const showConflictsCommandId = "workbench.userDataSync.actions.showConflicts";
|
|
61
61
|
const syncNowCommand = {
|
|
62
62
|
id: "workbench.userDataSync.actions.syncNow",
|
|
63
|
-
title: ( localize2(
|
|
63
|
+
title: ( localize2(20870, "Sync Now")),
|
|
64
64
|
description(userDataSyncService) {
|
|
65
65
|
if (userDataSyncService.status === SyncStatus.Syncing) {
|
|
66
|
-
return localize(
|
|
66
|
+
return localize(20871, "syncing");
|
|
67
67
|
}
|
|
68
68
|
if (userDataSyncService.lastSyncTime) {
|
|
69
|
-
return localize(
|
|
69
|
+
return localize(20872, "synced {0}", fromNow(userDataSyncService.lastSyncTime, true));
|
|
70
70
|
}
|
|
71
71
|
return undefined;
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
const showSyncSettingsCommand = {
|
|
75
75
|
id: "workbench.userDataSync.actions.settings",
|
|
76
|
-
title: ( localize2(
|
|
76
|
+
title: ( localize2(20873, "Show Settings"))
|
|
77
77
|
};
|
|
78
78
|
const showSyncedDataCommand = {
|
|
79
79
|
id: "workbench.userDataSync.actions.showSyncedData",
|
|
80
|
-
title: ( localize2(
|
|
80
|
+
title: ( localize2(20874, "Show Synced Data"))
|
|
81
81
|
};
|
|
82
82
|
const CONTEXT_TURNING_ON_STATE = new RawContextKey("userDataSyncTurningOn", false);
|
|
83
83
|
let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution extends Disposable {
|
|
@@ -203,21 +203,21 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
203
203
|
if (!( this.conflictsDisposables.has(key))) {
|
|
204
204
|
const conflictsArea = getSyncAreaLabel(conflict.syncResource);
|
|
205
205
|
const handle = this.notificationService.prompt(Severity.Warning, ( localize(
|
|
206
|
-
|
|
206
|
+
20875,
|
|
207
207
|
"Unable to sync due to conflicts in {0}. Please resolve them to continue.",
|
|
208
208
|
conflictsArea.toLowerCase()
|
|
209
209
|
)), [{
|
|
210
|
-
label: ( localize(
|
|
210
|
+
label: ( localize(20876, "Replace Remote")),
|
|
211
211
|
run: () => {
|
|
212
212
|
this.acceptLocal(conflict, conflict.conflicts[0]);
|
|
213
213
|
}
|
|
214
214
|
}, {
|
|
215
|
-
label: ( localize(
|
|
215
|
+
label: ( localize(20877, "Replace Local")),
|
|
216
216
|
run: () => {
|
|
217
217
|
this.acceptRemote(conflict, conflict.conflicts[0]);
|
|
218
218
|
}
|
|
219
219
|
}, {
|
|
220
|
-
label: ( localize(
|
|
220
|
+
label: ( localize(20878, "Show Conflicts")),
|
|
221
221
|
run: () => {
|
|
222
222
|
this.telemetryService.publicLog2("sync/showConflicts", {
|
|
223
223
|
source: conflict.syncResource
|
|
@@ -248,7 +248,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
248
248
|
);
|
|
249
249
|
} catch (e) {
|
|
250
250
|
this.notificationService.error(( localize(
|
|
251
|
-
|
|
251
|
+
20879,
|
|
252
252
|
"Error while accepting changes. Please check [logs]({0}) for more details.",
|
|
253
253
|
`command:${SHOW_SYNC_LOG_COMMAND_ID}`
|
|
254
254
|
)));
|
|
@@ -264,7 +264,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
264
264
|
);
|
|
265
265
|
} catch (e) {
|
|
266
266
|
this.notificationService.error(( localize(
|
|
267
|
-
|
|
267
|
+
20879,
|
|
268
268
|
"Error while accepting changes. Please check [logs]({0}) for more details.",
|
|
269
269
|
`command:${SHOW_SYNC_LOG_COMMAND_ID}`
|
|
270
270
|
)));
|
|
@@ -276,13 +276,13 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
276
276
|
this.notificationService.notify({
|
|
277
277
|
severity: Severity.Info,
|
|
278
278
|
message: ( localize(
|
|
279
|
-
|
|
279
|
+
20880,
|
|
280
280
|
"Settings sync was turned off because current session is expired, please sign in again to turn on sync."
|
|
281
281
|
)),
|
|
282
282
|
actions: {
|
|
283
283
|
primary: [toAction({
|
|
284
284
|
id: "turn on sync",
|
|
285
|
-
label: ( localize(
|
|
285
|
+
label: ( localize(20881, "Turn on Settings Sync...")),
|
|
286
286
|
run: () => this.turnOn()
|
|
287
287
|
})]
|
|
288
288
|
}
|
|
@@ -292,13 +292,13 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
292
292
|
this.notificationService.notify({
|
|
293
293
|
severity: Severity.Info,
|
|
294
294
|
message: ( localize(
|
|
295
|
-
|
|
295
|
+
20882,
|
|
296
296
|
"Settings sync was turned off from another device, please turn on sync again."
|
|
297
297
|
)),
|
|
298
298
|
actions: {
|
|
299
299
|
primary: [toAction({
|
|
300
300
|
id: "turn on sync",
|
|
301
|
-
label: ( localize(
|
|
301
|
+
label: ( localize(20881, "Turn on Settings Sync...")),
|
|
302
302
|
run: () => this.turnOn()
|
|
303
303
|
})]
|
|
304
304
|
}
|
|
@@ -309,7 +309,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
309
309
|
this.disableSync(error.resource);
|
|
310
310
|
const sourceArea = getSyncAreaLabel(error.resource);
|
|
311
311
|
this.handleTooLargeError(error.resource, ( localize(
|
|
312
|
-
|
|
312
|
+
20883,
|
|
313
313
|
"Disabled syncing {0} because size of the {1} file to sync is larger than {2}. Please open the file and reduce the size and enable sync",
|
|
314
314
|
sourceArea.toLowerCase(),
|
|
315
315
|
sourceArea.toLowerCase(),
|
|
@@ -320,7 +320,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
320
320
|
case UserDataSyncErrorCode.LocalTooManyProfiles:
|
|
321
321
|
this.disableSync(SyncResource.Profiles);
|
|
322
322
|
this.notificationService.error(( localize(
|
|
323
|
-
|
|
323
|
+
20884,
|
|
324
324
|
"Disabled syncing profiles because there are too many profiles to sync. Settings Sync supports syncing maximum 20 profiles. Please reduce the number of profiles and enable sync"
|
|
325
325
|
)));
|
|
326
326
|
break;
|
|
@@ -329,12 +329,12 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
329
329
|
case UserDataSyncErrorCode.UpgradeRequired:
|
|
330
330
|
{
|
|
331
331
|
const message = ( localize(
|
|
332
|
-
|
|
332
|
+
20885,
|
|
333
333
|
"Settings sync is disabled because the current version ({0}, {1}) is not compatible with the sync service. Please update before turning on sync.",
|
|
334
334
|
this.productService.version,
|
|
335
335
|
this.productService.commit
|
|
336
336
|
));
|
|
337
|
-
const operationId = error.operationId ? ( localize(
|
|
337
|
+
const operationId = error.operationId ? ( localize(20886, "Operation Id: {0}", error.operationId)) : undefined;
|
|
338
338
|
this.notificationService.notify({
|
|
339
339
|
severity: Severity.Error,
|
|
340
340
|
message: operationId ? `${message} ${operationId}` : message
|
|
@@ -344,21 +344,21 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
344
344
|
case UserDataSyncErrorCode.MethodNotFound:
|
|
345
345
|
{
|
|
346
346
|
const message = ( localize(
|
|
347
|
-
|
|
347
|
+
20887,
|
|
348
348
|
"Settings sync is disabled because the client is making invalid requests. Please report an issue with the logs."
|
|
349
349
|
));
|
|
350
|
-
const operationId = error.operationId ? ( localize(
|
|
350
|
+
const operationId = error.operationId ? ( localize(20886, "Operation Id: {0}", error.operationId)) : undefined;
|
|
351
351
|
this.notificationService.notify({
|
|
352
352
|
severity: Severity.Error,
|
|
353
353
|
message: operationId ? `${message} ${operationId}` : message,
|
|
354
354
|
actions: {
|
|
355
355
|
primary: [toAction({
|
|
356
356
|
id: "Show Sync Logs",
|
|
357
|
-
label: ( localize(
|
|
357
|
+
label: ( localize(20888, "Show Log")),
|
|
358
358
|
run: () => this.commandService.executeCommand(SHOW_SYNC_LOG_COMMAND_ID)
|
|
359
359
|
}), toAction({
|
|
360
360
|
id: "Report Issue",
|
|
361
|
-
label: ( localize(
|
|
361
|
+
label: ( localize(20889, "Report Issue")),
|
|
362
362
|
run: () => this.workbenchIssueService.openReporter()
|
|
363
363
|
})]
|
|
364
364
|
}
|
|
@@ -369,17 +369,17 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
369
369
|
this.notificationService.notify({
|
|
370
370
|
severity: Severity.Error,
|
|
371
371
|
message: ( localize(
|
|
372
|
-
|
|
372
|
+
20890,
|
|
373
373
|
"Settings sync is disabled because your data in the cloud is older than that of the client. Please clear your data in the cloud before turning on sync."
|
|
374
374
|
)),
|
|
375
375
|
actions: {
|
|
376
376
|
primary: [toAction({
|
|
377
377
|
id: "reset",
|
|
378
|
-
label: ( localize(
|
|
378
|
+
label: ( localize(20891, "Clear Data in Cloud...")),
|
|
379
379
|
run: () => this.userDataSyncWorkbenchService.resetSyncedData()
|
|
380
380
|
}), toAction({
|
|
381
381
|
id: "show synced data",
|
|
382
|
-
label: ( localize(
|
|
382
|
+
label: ( localize(20892, "Show Synced Data")),
|
|
383
383
|
run: () => this.userDataSyncWorkbenchService.showSyncActivity()
|
|
384
384
|
})]
|
|
385
385
|
}
|
|
@@ -388,7 +388,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
388
388
|
case UserDataSyncErrorCode.ServiceChanged:
|
|
389
389
|
this.notificationService.notify({
|
|
390
390
|
severity: Severity.Info,
|
|
391
|
-
message: this.userDataSyncStoreManagementService.userDataSyncStore?.type === "insiders" ? ( localize(
|
|
391
|
+
message: this.userDataSyncStoreManagementService.userDataSyncStore?.type === "insiders" ? ( localize(20893, "Settings Sync has been switched to insiders service")) : ( localize(20894, "Settings Sync has been switched to stable service"))
|
|
392
392
|
});
|
|
393
393
|
return;
|
|
394
394
|
case UserDataSyncErrorCode.DefaultServiceChanged:
|
|
@@ -396,7 +396,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
396
396
|
this.notificationService.notify({
|
|
397
397
|
severity: Severity.Info,
|
|
398
398
|
message: ( localize(
|
|
399
|
-
|
|
399
|
+
20895,
|
|
400
400
|
"Settings sync now uses a separate service, more information is available in the [Settings Sync Documentation](https://aka.ms/vscode-settings-sync-help#_syncing-stable-versus-insiders)."
|
|
401
401
|
))
|
|
402
402
|
});
|
|
@@ -405,14 +405,14 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
405
405
|
this.notificationService.notify({
|
|
406
406
|
severity: Severity.Info,
|
|
407
407
|
message: ( localize(
|
|
408
|
-
|
|
408
|
+
20896,
|
|
409
409
|
"Settings sync was turned off because {0} now uses a separate service. Please turn on sync again.",
|
|
410
410
|
this.productService.nameLong
|
|
411
411
|
)),
|
|
412
412
|
actions: {
|
|
413
413
|
primary: [toAction({
|
|
414
414
|
id: "turn on sync",
|
|
415
|
-
label: ( localize(
|
|
415
|
+
label: ( localize(20881, "Turn on Settings Sync...")),
|
|
416
416
|
run: () => this.turnOn()
|
|
417
417
|
})]
|
|
418
418
|
}
|
|
@@ -422,14 +422,14 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
422
422
|
}
|
|
423
423
|
}
|
|
424
424
|
handleTooLargeError(resource, message, error) {
|
|
425
|
-
const operationId = error.operationId ? ( localize(
|
|
425
|
+
const operationId = error.operationId ? ( localize(20886, "Operation Id: {0}", error.operationId)) : undefined;
|
|
426
426
|
this.notificationService.notify({
|
|
427
427
|
severity: Severity.Error,
|
|
428
428
|
message: operationId ? `${message} ${operationId}` : message,
|
|
429
429
|
actions: {
|
|
430
430
|
primary: [toAction({
|
|
431
431
|
id: "open sync file",
|
|
432
|
-
label: ( localize(
|
|
432
|
+
label: ( localize(20897, "Open {0} File", getSyncAreaLabel(resource))),
|
|
433
433
|
run: () => resource === SyncResource.Settings ? this.preferencesService.openUserSettings({
|
|
434
434
|
jsonEditor: true
|
|
435
435
|
}) : this.preferencesService.openGlobalKeybindingSettings(true)
|
|
@@ -497,14 +497,14 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
497
497
|
const handle = this.notificationService.notify({
|
|
498
498
|
severity: Severity.Error,
|
|
499
499
|
message: ( localize(
|
|
500
|
-
|
|
500
|
+
20898,
|
|
501
501
|
"Unable to sync {0} because the content in the file is not valid. Please open the file and correct it.",
|
|
502
502
|
errorArea.toLowerCase()
|
|
503
503
|
)),
|
|
504
504
|
actions: {
|
|
505
505
|
primary: [toAction({
|
|
506
506
|
id: "open sync file",
|
|
507
|
-
label: ( localize(
|
|
507
|
+
label: ( localize(20897, "Open {0} File", errorArea)),
|
|
508
508
|
run: () => source === SyncResource.Settings ? this.preferencesService.openUserSettings({
|
|
509
509
|
jsonEditor: true
|
|
510
510
|
}) : this.preferencesService.openGlobalKeybindingSettings(true)
|
|
@@ -530,9 +530,9 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
530
530
|
this.globalActivityBadgeDisposable.clear();
|
|
531
531
|
let badge = undefined;
|
|
532
532
|
if (this.userDataSyncService.conflicts.length && this.userDataSyncEnablementService.isEnabled()) {
|
|
533
|
-
badge = ( new NumberBadge(this.getConflictsCount(), () => ( localize(
|
|
533
|
+
badge = ( new NumberBadge(this.getConflictsCount(), () => ( localize(20899, "{0}: Conflicts Detected", SYNC_TITLE.value))));
|
|
534
534
|
} else if (this.turningOnSync) {
|
|
535
|
-
badge = ( new ProgressBadge(() => ( localize(
|
|
535
|
+
badge = ( new ProgressBadge(() => ( localize(20900, "Turning on Settings Sync..."))));
|
|
536
536
|
}
|
|
537
537
|
if (badge) {
|
|
538
538
|
this.globalActivityBadgeDisposable.value = this.activityService.showGlobalActivity({
|
|
@@ -544,7 +544,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
544
544
|
this.accountBadgeDisposable.clear();
|
|
545
545
|
let badge = undefined;
|
|
546
546
|
if (this.userDataSyncService.status !== SyncStatus.Uninitialized && this.userDataSyncEnablementService.isEnabled() && this.userDataSyncWorkbenchService.accountStatus === AccountStatus.Unavailable) {
|
|
547
|
-
badge = ( new NumberBadge(1, () => ( localize(
|
|
547
|
+
badge = ( new NumberBadge(1, () => ( localize(20901, "Sign in to Sync Settings"))));
|
|
548
548
|
}
|
|
549
549
|
if (badge) {
|
|
550
550
|
this.accountBadgeDisposable.value = this.activityService.showAccountsActivity({
|
|
@@ -555,7 +555,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
555
555
|
async turnOn() {
|
|
556
556
|
try {
|
|
557
557
|
if (!this.userDataSyncWorkbenchService.authenticationProviders.length) {
|
|
558
|
-
throw ( new Error(( localize(
|
|
558
|
+
throw ( new Error(( localize(20902, "No authentication providers are available."))));
|
|
559
559
|
}
|
|
560
560
|
const turnOn = await this.askToConfigure();
|
|
561
561
|
if (!turnOn) {
|
|
@@ -574,7 +574,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
574
574
|
case UserDataSyncErrorCode.TooLarge:
|
|
575
575
|
if (e.resource === SyncResource.Keybindings || e.resource === SyncResource.Settings || e.resource === SyncResource.Tasks) {
|
|
576
576
|
this.handleTooLargeError(e.resource, ( localize(
|
|
577
|
-
|
|
577
|
+
20903,
|
|
578
578
|
"Settings sync cannot be turned on because size of the {0} file to sync is larger than {1}. Please open the file and reduce the size and turn on sync",
|
|
579
579
|
getSyncAreaLabel(e.resource).toLowerCase(),
|
|
580
580
|
"100kb"
|
|
@@ -587,12 +587,12 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
587
587
|
case UserDataSyncErrorCode.UpgradeRequired:
|
|
588
588
|
{
|
|
589
589
|
const message = ( localize(
|
|
590
|
-
|
|
590
|
+
20904,
|
|
591
591
|
"Settings sync cannot be turned on because the current version ({0}, {1}) is not compatible with the sync service. Please update before turning on sync.",
|
|
592
592
|
this.productService.version,
|
|
593
593
|
this.productService.commit
|
|
594
594
|
));
|
|
595
|
-
const operationId = e.operationId ? ( localize(
|
|
595
|
+
const operationId = e.operationId ? ( localize(20886, "Operation Id: {0}", e.operationId)) : undefined;
|
|
596
596
|
this.notificationService.notify({
|
|
597
597
|
severity: Severity.Error,
|
|
598
598
|
message: operationId ? `${message} ${operationId}` : message
|
|
@@ -603,17 +603,17 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
603
603
|
this.notificationService.notify({
|
|
604
604
|
severity: Severity.Error,
|
|
605
605
|
message: ( localize(
|
|
606
|
-
|
|
606
|
+
20905,
|
|
607
607
|
"Settings sync cannot be turned on because your data in the cloud is older than that of the client. Please clear your data in the cloud before turning on sync."
|
|
608
608
|
)),
|
|
609
609
|
actions: {
|
|
610
610
|
primary: [toAction({
|
|
611
611
|
id: "reset",
|
|
612
|
-
label: ( localize(
|
|
612
|
+
label: ( localize(20891, "Clear Data in Cloud...")),
|
|
613
613
|
run: () => this.userDataSyncWorkbenchService.resetSyncedData()
|
|
614
614
|
}), toAction({
|
|
615
615
|
id: "show synced data",
|
|
616
|
-
label: ( localize(
|
|
616
|
+
label: ( localize(20892, "Show Synced Data")),
|
|
617
617
|
run: () => this.userDataSyncWorkbenchService.showSyncActivity()
|
|
618
618
|
})]
|
|
619
619
|
}
|
|
@@ -621,16 +621,16 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
621
621
|
return;
|
|
622
622
|
case UserDataSyncErrorCode.Unauthorized:
|
|
623
623
|
case UserDataSyncErrorCode.Forbidden:
|
|
624
|
-
this.notificationService.error(( localize(
|
|
624
|
+
this.notificationService.error(( localize(20906, "Error while turning on Settings Sync: Authentication failed.")));
|
|
625
625
|
return;
|
|
626
626
|
}
|
|
627
627
|
this.notificationService.error(( localize(
|
|
628
|
-
|
|
628
|
+
20907,
|
|
629
629
|
"Error while turning on Settings Sync. Please check [logs]({0}) for more details.",
|
|
630
630
|
`command:${SHOW_SYNC_LOG_COMMAND_ID}`
|
|
631
631
|
)));
|
|
632
632
|
} else {
|
|
633
|
-
this.notificationService.error(( localize(
|
|
633
|
+
this.notificationService.error(( localize(20908, "Error while turning on Settings Sync. {0}", getErrorMessage(e))));
|
|
634
634
|
}
|
|
635
635
|
}
|
|
636
636
|
}
|
|
@@ -642,8 +642,8 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
642
642
|
quickPick.title = SYNC_TITLE.value;
|
|
643
643
|
quickPick.ok = false;
|
|
644
644
|
quickPick.customButton = true;
|
|
645
|
-
quickPick.customLabel = ( localize(
|
|
646
|
-
quickPick.description = ( localize(
|
|
645
|
+
quickPick.customLabel = ( localize(20909, "Sign in"));
|
|
646
|
+
quickPick.description = ( localize(20910, "Please sign in to backup and sync your data across devices."));
|
|
647
647
|
quickPick.canSelectMany = true;
|
|
648
648
|
quickPick.ignoreFocusOut = true;
|
|
649
649
|
quickPick.hideInput = true;
|
|
@@ -718,8 +718,8 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
718
718
|
const disposables = ( new DisposableStore());
|
|
719
719
|
const quickPick = this.quickInputService.createQuickPick();
|
|
720
720
|
disposables.add(quickPick);
|
|
721
|
-
quickPick.title = ( localize(
|
|
722
|
-
quickPick.placeholder = ( localize(
|
|
721
|
+
quickPick.title = ( localize(20911, "{0}: Configure...", SYNC_TITLE.value));
|
|
722
|
+
quickPick.placeholder = ( localize(20912, "Choose what to sync"));
|
|
723
723
|
quickPick.canSelectMany = true;
|
|
724
724
|
quickPick.ignoreFocusOut = true;
|
|
725
725
|
quickPick.ok = true;
|
|
@@ -741,15 +741,15 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
741
741
|
}
|
|
742
742
|
async turnOff() {
|
|
743
743
|
const result = await this.dialogService.confirm({
|
|
744
|
-
message: ( localize(
|
|
744
|
+
message: ( localize(20913, "Do you want to turn off sync?")),
|
|
745
745
|
detail: ( localize(
|
|
746
|
-
|
|
746
|
+
20914,
|
|
747
747
|
"Your settings, keybindings, extensions, snippets and UI State will no longer be synced."
|
|
748
748
|
)),
|
|
749
|
-
primaryButton: ( localize(
|
|
749
|
+
primaryButton: ( localize(20915, "&&Turn off")),
|
|
750
750
|
checkbox: this.userDataSyncWorkbenchService.accountStatus === AccountStatus.Available ? {
|
|
751
751
|
label: ( localize(
|
|
752
|
-
|
|
752
|
+
20916,
|
|
753
753
|
"Turn off sync on all your devices and clear the data from the cloud."
|
|
754
754
|
))
|
|
755
755
|
} : undefined
|
|
@@ -783,9 +783,9 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
783
783
|
return (new Promise((c, e) => {
|
|
784
784
|
const disposables = ( new DisposableStore());
|
|
785
785
|
const quickPick = disposables.add(this.quickInputService.createQuickPick());
|
|
786
|
-
quickPick.title = ( localize(
|
|
786
|
+
quickPick.title = ( localize(20917, "{0}: Select Service", SYNC_TITLE.value));
|
|
787
787
|
quickPick.description = ( localize(
|
|
788
|
-
|
|
788
|
+
20918,
|
|
789
789
|
"Ensure you are using the same settings sync service when syncing with multiple environments"
|
|
790
790
|
));
|
|
791
791
|
quickPick.hideInput = true;
|
|
@@ -793,17 +793,17 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
793
793
|
const getDescription = url => {
|
|
794
794
|
const isDefault = isEqual(url, userDataSyncStore.defaultUrl);
|
|
795
795
|
if (isDefault) {
|
|
796
|
-
return localize(
|
|
796
|
+
return localize(20919, "Default");
|
|
797
797
|
}
|
|
798
798
|
return undefined;
|
|
799
799
|
};
|
|
800
800
|
quickPick.items = [{
|
|
801
801
|
id: "insiders",
|
|
802
|
-
label: ( localize(
|
|
802
|
+
label: ( localize(20920, "Insiders")),
|
|
803
803
|
description: getDescription(userDataSyncStore.insidersUrl)
|
|
804
804
|
}, {
|
|
805
805
|
id: "stable",
|
|
806
|
-
label: ( localize(
|
|
806
|
+
label: ( localize(20921, "Stable")),
|
|
807
807
|
description: getDescription(userDataSyncStore.stableUrl)
|
|
808
808
|
}];
|
|
809
809
|
disposables.add(quickPick.onDidAccept(async () => {
|
|
@@ -849,7 +849,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
849
849
|
constructor() {
|
|
850
850
|
super({
|
|
851
851
|
id: "workbench.userDataSync.actions.turnOn",
|
|
852
|
-
title: ( localize2(
|
|
852
|
+
title: ( localize2(20922, "Backup and Sync Settings...")),
|
|
853
853
|
category: SYNC_TITLE,
|
|
854
854
|
f1: true,
|
|
855
855
|
precondition: when,
|
|
@@ -882,7 +882,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
882
882
|
constructor() {
|
|
883
883
|
super({
|
|
884
884
|
id: "workbench.userData.actions.turningOn",
|
|
885
|
-
title: ( localize(
|
|
885
|
+
title: ( localize(20923, "Turning on Settings Sync...")),
|
|
886
886
|
precondition: ( ContextKeyExpr.false()),
|
|
887
887
|
menu: [{
|
|
888
888
|
group: "3_configuration",
|
|
@@ -905,7 +905,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
905
905
|
constructor() {
|
|
906
906
|
super({
|
|
907
907
|
id: "workbench.userData.actions.cancelTurnOn",
|
|
908
|
-
title: ( localize(
|
|
908
|
+
title: ( localize(20924, "Cancel")),
|
|
909
909
|
icon: Codicon.stopCircle,
|
|
910
910
|
menu: {
|
|
911
911
|
id: MenuId.ViewContainerTitle,
|
|
@@ -928,7 +928,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
928
928
|
constructor() {
|
|
929
929
|
super({
|
|
930
930
|
id: "workbench.userData.actions.signin",
|
|
931
|
-
title: ( localize(
|
|
931
|
+
title: ( localize(20925, "Sign in to Sync Settings")),
|
|
932
932
|
menu: {
|
|
933
933
|
group: "3_configuration",
|
|
934
934
|
id: MenuId.GlobalActivity,
|
|
@@ -949,13 +949,13 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
949
949
|
group: "1_settings",
|
|
950
950
|
command: {
|
|
951
951
|
id,
|
|
952
|
-
title: ( localize(
|
|
952
|
+
title: ( localize(20926, "Sign in to Sync Settings (1)"))
|
|
953
953
|
},
|
|
954
954
|
when
|
|
955
955
|
})));
|
|
956
956
|
}
|
|
957
957
|
getShowConflictsTitle() {
|
|
958
|
-
return localize2(
|
|
958
|
+
return localize2(20927, "Show Conflicts ({0})", this.getConflictsCount());
|
|
959
959
|
}
|
|
960
960
|
registerShowConflictsAction() {
|
|
961
961
|
this.conflictsActionDisposable.value = undefined;
|
|
@@ -995,7 +995,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
995
995
|
constructor() {
|
|
996
996
|
super({
|
|
997
997
|
id: "workbench.userDataSync.actions.manage",
|
|
998
|
-
title: ( localize(
|
|
998
|
+
title: ( localize(20928, "Settings Sync is On")),
|
|
999
999
|
toggled: ContextKeyTrueExpr.INSTANCE,
|
|
1000
1000
|
menu: [{
|
|
1001
1001
|
id: MenuId.GlobalActivity,
|
|
@@ -1137,7 +1137,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1137
1137
|
} catch (e) {
|
|
1138
1138
|
if (!isCancellationError(e)) {
|
|
1139
1139
|
that.notificationService.error(( localize(
|
|
1140
|
-
|
|
1140
|
+
20929,
|
|
1141
1141
|
"Error while turning off Settings Sync. Please check [logs]({0}) for more details.",
|
|
1142
1142
|
`command:${SHOW_SYNC_LOG_COMMAND_ID}`
|
|
1143
1143
|
)));
|
|
@@ -1156,7 +1156,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1156
1156
|
title: configureSyncCommand.title,
|
|
1157
1157
|
category: SYNC_TITLE,
|
|
1158
1158
|
icon: Codicon.settingsGear,
|
|
1159
|
-
tooltip: ( localize(
|
|
1159
|
+
tooltip: ( localize(20930, "Configure...")),
|
|
1160
1160
|
menu: [{
|
|
1161
1161
|
id: MenuId.CommandPalette,
|
|
1162
1162
|
when
|
|
@@ -1179,8 +1179,8 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1179
1179
|
constructor() {
|
|
1180
1180
|
super({
|
|
1181
1181
|
id: SHOW_SYNC_LOG_COMMAND_ID,
|
|
1182
|
-
title: ( localize(
|
|
1183
|
-
tooltip: ( localize(
|
|
1182
|
+
title: ( localize(20931, "{0}: Show Log", SYNC_TITLE.value)),
|
|
1183
|
+
tooltip: ( localize(20932, "Show Log")),
|
|
1184
1184
|
icon: Codicon.output,
|
|
1185
1185
|
menu: [{
|
|
1186
1186
|
id: MenuId.CommandPalette,
|
|
@@ -1252,7 +1252,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1252
1252
|
constructor() {
|
|
1253
1253
|
super({
|
|
1254
1254
|
id: "workbench.userDataSync.actions.acceptMerges",
|
|
1255
|
-
title: ( localize(
|
|
1255
|
+
title: ( localize(20933, "Complete Merge")),
|
|
1256
1256
|
menu: [{
|
|
1257
1257
|
id: MenuId.EditorContent,
|
|
1258
1258
|
when: ( ContextKeyExpr.and(ctxIsMergeResultEditor, ( ContextKeyExpr.regex(ctxMergeBaseUri.key, ( new RegExp(`^${USER_DATA_SYNC_SCHEME}:`))))))
|
|
@@ -1293,7 +1293,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1293
1293
|
const notificationService = accessor.get(INotificationService);
|
|
1294
1294
|
const folder = await userDataSyncWorkbenchService.downloadSyncActivity();
|
|
1295
1295
|
if (folder) {
|
|
1296
|
-
notificationService.info(( localize(
|
|
1296
|
+
notificationService.info(( localize(20934, "Successfully downloaded Settings Sync activity.")));
|
|
1297
1297
|
}
|
|
1298
1298
|
}
|
|
1299
1299
|
}));
|
|
@@ -1319,7 +1319,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1319
1319
|
constructor() {
|
|
1320
1320
|
super({
|
|
1321
1321
|
id: "workbench.actions.syncData.reset",
|
|
1322
|
-
title: ( localize(
|
|
1322
|
+
title: ( localize(20935, "Clear Data in Cloud...")),
|
|
1323
1323
|
menu: [{
|
|
1324
1324
|
id: MenuId.ViewContainerTitle,
|
|
1325
1325
|
when: ( ContextKeyExpr.equals("viewContainer", SYNC_VIEW_CONTAINER_ID)),
|
|
@@ -76,7 +76,7 @@ let UserDataSyncConflictsViewPane = class UserDataSyncConflictsViewPane extends
|
|
|
76
76
|
renderTreeView(container) {
|
|
77
77
|
super.renderTreeView(append(container, $("")));
|
|
78
78
|
const that = this;
|
|
79
|
-
this.treeView.message = ( localize(
|
|
79
|
+
this.treeView.message = ( localize(20936, "Please go through each entry and merge to resolve conflicts."));
|
|
80
80
|
this.treeView.dataProvider = {
|
|
81
81
|
getChildren() {
|
|
82
82
|
return that.getTreeItems();
|
|
@@ -157,7 +157,7 @@ let UserDataSyncConflictsViewPane = class UserDataSyncConflictsViewPane extends
|
|
|
157
157
|
constructor() {
|
|
158
158
|
super({
|
|
159
159
|
id: `workbench.actions.sync.openConflicts`,
|
|
160
|
-
title: ( localize(
|
|
160
|
+
title: ( localize(20937, "Show Conflicts"))
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
163
|
async run(accessor, handle) {
|
|
@@ -169,7 +169,7 @@ let UserDataSyncConflictsViewPane = class UserDataSyncConflictsViewPane extends
|
|
|
169
169
|
constructor() {
|
|
170
170
|
super({
|
|
171
171
|
id: `workbench.actions.sync.acceptRemote`,
|
|
172
|
-
title: ( localize(
|
|
172
|
+
title: ( localize(20938, "Accept Remote")),
|
|
173
173
|
icon: Codicon.cloudDownload,
|
|
174
174
|
menu: {
|
|
175
175
|
id: MenuId.ViewItemContext,
|
|
@@ -191,7 +191,7 @@ let UserDataSyncConflictsViewPane = class UserDataSyncConflictsViewPane extends
|
|
|
191
191
|
constructor() {
|
|
192
192
|
super({
|
|
193
193
|
id: `workbench.actions.sync.acceptLocal`,
|
|
194
|
-
title: ( localize(
|
|
194
|
+
title: ( localize(20939, "Accept Local")),
|
|
195
195
|
icon: Codicon.cloudUpload,
|
|
196
196
|
menu: {
|
|
197
197
|
id: MenuId.ViewItemContext,
|
|
@@ -222,17 +222,17 @@ let UserDataSyncConflictsViewPane = class UserDataSyncConflictsViewPane extends
|
|
|
222
222
|
) => isEqual(localResource, conflictToOpen.localResource)))))) {
|
|
223
223
|
return;
|
|
224
224
|
}
|
|
225
|
-
const remoteResourceName = ( localize(
|
|
226
|
-
const localResourceName = ( localize(
|
|
225
|
+
const remoteResourceName = ( localize(20940, "{0} (Remote)", basename(conflictToOpen.remoteResource)));
|
|
226
|
+
const localResourceName = ( localize(20941, "{0} (Local)", basename(conflictToOpen.remoteResource)));
|
|
227
227
|
await this.editorService.openEditor({
|
|
228
228
|
input1: {
|
|
229
229
|
resource: conflictToOpen.remoteResource,
|
|
230
|
-
label: ( localize(
|
|
230
|
+
label: ( localize(20942, "Theirs")),
|
|
231
231
|
description: remoteResourceName
|
|
232
232
|
},
|
|
233
233
|
input2: {
|
|
234
234
|
resource: conflictToOpen.localResource,
|
|
235
|
-
label: ( localize(
|
|
235
|
+
label: ( localize(20943, "Yours")),
|
|
236
236
|
description: localResourceName
|
|
237
237
|
},
|
|
238
238
|
base: {
|
|
@@ -61,7 +61,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
61
61
|
}
|
|
62
62
|
registerConflictsView(container) {
|
|
63
63
|
const viewsRegistry = ( Registry.as(Extensions.ViewsRegistry));
|
|
64
|
-
const viewName = ( localize2(
|
|
64
|
+
const viewName = ( localize2(20944, "Conflicts"));
|
|
65
65
|
const viewDescriptor = {
|
|
66
66
|
id: SYNC_CONFLICTS_VIEW_ID,
|
|
67
67
|
name: viewName,
|
|
@@ -77,7 +77,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
77
77
|
}
|
|
78
78
|
registerMachinesView(container) {
|
|
79
79
|
const id = `workbench.views.sync.machines`;
|
|
80
|
-
const name = ( localize2(
|
|
80
|
+
const name = ( localize2(20945, "Synced Machines"));
|
|
81
81
|
const treeView = this.instantiationService.createInstance(TreeView, id, name.value);
|
|
82
82
|
const dataProvider = this.instantiationService.createInstance(UserDataSyncMachinesViewDataProvider, treeView);
|
|
83
83
|
treeView.showRefreshAction = true;
|
|
@@ -104,7 +104,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
104
104
|
constructor() {
|
|
105
105
|
super({
|
|
106
106
|
id: `workbench.actions.sync.editMachineName`,
|
|
107
|
-
title: ( localize(
|
|
107
|
+
title: ( localize(20946, "Edit Name")),
|
|
108
108
|
icon: Codicon.edit,
|
|
109
109
|
menu: {
|
|
110
110
|
id: MenuId.ViewItemContext,
|
|
@@ -124,7 +124,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
124
124
|
constructor() {
|
|
125
125
|
super({
|
|
126
126
|
id: `workbench.actions.sync.turnOffSyncOnMachine`,
|
|
127
|
-
title: ( localize(
|
|
127
|
+
title: ( localize(20947, "Turn off Settings Sync")),
|
|
128
128
|
menu: {
|
|
129
129
|
id: MenuId.ViewItemContext,
|
|
130
130
|
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals("view", id)), ( ContextKeyExpr.equals("viewItem", "sync-machine"))))
|
|
@@ -140,7 +140,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
140
140
|
}
|
|
141
141
|
registerActivityView(container, remote) {
|
|
142
142
|
const id = `workbench.views.sync.${remote ? "remote" : "local"}Activity`;
|
|
143
|
-
const name = remote ? ( localize2(
|
|
143
|
+
const name = remote ? ( localize2(20948, "Sync Activity (Remote)")) : ( localize2(20949, "Sync Activity (Local)"));
|
|
144
144
|
const treeView = this.instantiationService.createInstance(TreeView, id, name.value);
|
|
145
145
|
treeView.showCollapseAllAction = true;
|
|
146
146
|
treeView.showRefreshAction = true;
|
|
@@ -169,7 +169,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
169
169
|
}
|
|
170
170
|
registerExternalActivityView(container) {
|
|
171
171
|
const id = `workbench.views.sync.externalActivity`;
|
|
172
|
-
const name = ( localize2(
|
|
172
|
+
const name = ( localize2(20950, "Sync Activity (Developer)"));
|
|
173
173
|
const dataProvider = this.instantiationService.createInstance(ExtractedUserDataSyncActivityViewDataProvider, undefined);
|
|
174
174
|
const treeView = this.instantiationService.createInstance(TreeView, id, name.value);
|
|
175
175
|
treeView.showCollapseAllAction = false;
|
|
@@ -192,7 +192,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
192
192
|
constructor() {
|
|
193
193
|
super({
|
|
194
194
|
id: `workbench.actions.sync.loadActivity`,
|
|
195
|
-
title: ( localize(
|
|
195
|
+
title: ( localize(20951, "Load Sync Activity")),
|
|
196
196
|
icon: Codicon.cloudUpload,
|
|
197
197
|
menu: {
|
|
198
198
|
id: MenuId.ViewTitle,
|
|
@@ -204,7 +204,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
204
204
|
async run(accessor) {
|
|
205
205
|
const fileDialogService = accessor.get(IFileDialogService);
|
|
206
206
|
const result = await fileDialogService.showOpenDialog({
|
|
207
|
-
title: ( localize(
|
|
207
|
+
title: ( localize(20952, "Select Sync Activity File or Folder")),
|
|
208
208
|
canSelectFiles: true,
|
|
209
209
|
canSelectFolders: true,
|
|
210
210
|
canSelectMany: false
|
|
@@ -222,7 +222,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
222
222
|
constructor() {
|
|
223
223
|
super({
|
|
224
224
|
id: `workbench.actions.sync.${viewId}.resolveResource`,
|
|
225
|
-
title: ( localize(
|
|
225
|
+
title: ( localize(20953, "Show raw JSON sync data")),
|
|
226
226
|
menu: {
|
|
227
227
|
id: MenuId.ViewItemContext,
|
|
228
228
|
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals("view", viewId)), ( ContextKeyExpr.regex("viewItem", /sync-resource-.*/i))))
|
|
@@ -246,7 +246,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
246
246
|
constructor() {
|
|
247
247
|
super({
|
|
248
248
|
id: `workbench.actions.sync.${viewId}.compareWithLocal`,
|
|
249
|
-
title: ( localize(
|
|
249
|
+
title: ( localize(20954, "Compare with Local")),
|
|
250
250
|
menu: {
|
|
251
251
|
id: MenuId.ViewItemContext,
|
|
252
252
|
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals("view", viewId)), ( ContextKeyExpr.regex("viewItem", /sync-associatedResource-.*/i))))
|
|
@@ -266,10 +266,10 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
266
266
|
remoteResource,
|
|
267
267
|
localResource,
|
|
268
268
|
( localize(
|
|
269
|
-
|
|
269
|
+
20955,
|
|
270
270
|
"{0} ↔ {1}",
|
|
271
|
-
localize(
|
|
272
|
-
localize(
|
|
271
|
+
localize(20956, "{0} (Remote)", basename(remoteResource)),
|
|
272
|
+
localize(20957, "{0} (Local)", basename(localResource))
|
|
273
273
|
)),
|
|
274
274
|
undefined
|
|
275
275
|
);
|
|
@@ -279,7 +279,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
279
279
|
constructor() {
|
|
280
280
|
super({
|
|
281
281
|
id: `workbench.actions.sync.${viewId}.replaceCurrent`,
|
|
282
|
-
title: ( localize(
|
|
282
|
+
title: ( localize(20958, "Restore")),
|
|
283
283
|
icon: Codicon.discard,
|
|
284
284
|
menu: {
|
|
285
285
|
id: MenuId.ViewItemContext,
|
|
@@ -297,7 +297,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
297
297
|
} = JSON.parse(handle.$treeItemHandle);
|
|
298
298
|
const result = await dialogService.confirm({
|
|
299
299
|
message: ( localize(
|
|
300
|
-
|
|
300
|
+
20959,
|
|
301
301
|
"Would you like to replace your current {0} with selected?",
|
|
302
302
|
getSyncAreaLabel(syncResource)
|
|
303
303
|
)),
|
|
@@ -315,7 +315,7 @@ let UserDataSyncDataViews = class UserDataSyncDataViews extends Disposable {
|
|
|
315
315
|
}
|
|
316
316
|
registerTroubleShootView(container) {
|
|
317
317
|
const id = `workbench.views.sync.troubleshoot`;
|
|
318
|
-
const name = ( localize2(
|
|
318
|
+
const name = ( localize2(20960, "Troubleshoot"));
|
|
319
319
|
const treeView = this.instantiationService.createInstance(TreeView, id, name.value);
|
|
320
320
|
const dataProvider = this.instantiationService.createInstance(UserDataSyncTroubleshootViewDataProvider);
|
|
321
321
|
treeView.showRefreshAction = true;
|
|
@@ -381,7 +381,7 @@ let UserDataSyncActivityViewDataProvider = class UserDataSyncActivityViewDataPro
|
|
|
381
381
|
actions: {
|
|
382
382
|
primary: [toAction({
|
|
383
383
|
id: "reset",
|
|
384
|
-
label: ( localize(
|
|
384
|
+
label: ( localize(20961, "Reset Synced Data")),
|
|
385
385
|
run: () => this.userDataSyncWorkbenchService.resetSyncedData()
|
|
386
386
|
})]
|
|
387
387
|
}
|
|
@@ -445,7 +445,7 @@ let UserDataSyncActivityViewDataProvider = class UserDataSyncActivityViewDataPro
|
|
|
445
445
|
id: API_OPEN_DIFF_EDITOR_COMMAND_ID,
|
|
446
446
|
title: "",
|
|
447
447
|
arguments: [previousResource, resource, ( localize(
|
|
448
|
-
|
|
448
|
+
20962,
|
|
449
449
|
"{0} ↔ {1}",
|
|
450
450
|
`${basename(resource)} (${fromNow(syncResourceHandle.previous.created, true)})`,
|
|
451
451
|
`${basename(resource)} (${fromNow(syncResourceHandle.created, true)})`
|
|
@@ -553,7 +553,7 @@ let RemoteUserDataSyncActivityViewDataProvider = class RemoteUserDataSyncActivit
|
|
|
553
553
|
id
|
|
554
554
|
}
|
|
555
555
|
) => id === machineId);
|
|
556
|
-
children[0].description = machine?.isCurrent ? ( localize(
|
|
556
|
+
children[0].description = machine?.isCurrent ? ( localize(20963, "Current")) : machine?.name;
|
|
557
557
|
}
|
|
558
558
|
}
|
|
559
559
|
return children;
|
|
@@ -625,7 +625,7 @@ let ExtractedUserDataSyncActivityViewDataProvider = class ExtractedUserDataSyncA
|
|
|
625
625
|
id
|
|
626
626
|
}
|
|
627
627
|
) => id === machineId);
|
|
628
|
-
children[0].description = machine?.isCurrent ? ( localize(
|
|
628
|
+
children[0].description = machine?.isCurrent ? ( localize(20963, "Current")) : machine?.name;
|
|
629
629
|
}
|
|
630
630
|
}
|
|
631
631
|
return children;
|
|
@@ -661,7 +661,7 @@ let UserDataSyncMachinesViewDataProvider = class UserDataSyncMachinesViewDataPro
|
|
|
661
661
|
try {
|
|
662
662
|
let machines = await this.getMachines();
|
|
663
663
|
machines = machines.filter(m => !m.disabled).sort((m1, m2) => m1.isCurrent ? -1 : 1);
|
|
664
|
-
this.treeView.message = machines.length ? undefined : ( localize(
|
|
664
|
+
this.treeView.message = machines.length ? undefined : ( localize(20964, "No Machines"));
|
|
665
665
|
return machines.map((
|
|
666
666
|
{
|
|
667
667
|
id,
|
|
@@ -675,7 +675,7 @@ let UserDataSyncMachinesViewDataProvider = class UserDataSyncMachinesViewDataPro
|
|
|
675
675
|
label: {
|
|
676
676
|
label: name
|
|
677
677
|
},
|
|
678
|
-
description: isCurrent ? ( localize(
|
|
678
|
+
description: isCurrent ? ( localize(20963, "Current")) : undefined,
|
|
679
679
|
themeIcon: platform && isWebPlatform(platform) ? Codicon.globe : Codicon.vm,
|
|
680
680
|
contextValue: "sync-machine"
|
|
681
681
|
}));
|
|
@@ -698,16 +698,16 @@ let UserDataSyncMachinesViewDataProvider = class UserDataSyncMachinesViewDataPro
|
|
|
698
698
|
}
|
|
699
699
|
) => machineIds.includes(id));
|
|
700
700
|
if (!machinesToDisable.length) {
|
|
701
|
-
throw ( new Error(( localize(
|
|
701
|
+
throw ( new Error(( localize(20965, "machine not found with id: {0}", machineIds.join(",")))));
|
|
702
702
|
}
|
|
703
703
|
const result = await this.dialogService.confirm({
|
|
704
704
|
type: "info",
|
|
705
|
-
message: machinesToDisable.length > 1 ? ( localize(
|
|
706
|
-
|
|
705
|
+
message: machinesToDisable.length > 1 ? ( localize(20966, "Are you sure you want to turn off sync on selected machines?")) : ( localize(
|
|
706
|
+
20967,
|
|
707
707
|
"Are you sure you want to turn off sync on {0}?",
|
|
708
708
|
machinesToDisable[0].name
|
|
709
709
|
)),
|
|
710
|
-
primaryButton: ( localize(
|
|
710
|
+
primaryButton: ( localize(20968, "&&Turn off"))
|
|
711
711
|
});
|
|
712
712
|
if (!result.confirmed) {
|
|
713
713
|
return false;
|
|
@@ -724,7 +724,7 @@ let UserDataSyncMachinesViewDataProvider = class UserDataSyncMachinesViewDataPro
|
|
|
724
724
|
async rename(machineId) {
|
|
725
725
|
const disposableStore = ( new DisposableStore());
|
|
726
726
|
const inputBox = disposableStore.add(this.quickInputService.createInputBox());
|
|
727
|
-
inputBox.placeholder = ( localize(
|
|
727
|
+
inputBox.placeholder = ( localize(20969, "Enter the name of the machine"));
|
|
728
728
|
inputBox.busy = true;
|
|
729
729
|
inputBox.show();
|
|
730
730
|
const machines = await this.getMachines();
|
|
@@ -741,7 +741,7 @@ let UserDataSyncMachinesViewDataProvider = class UserDataSyncMachinesViewDataPro
|
|
|
741
741
|
if (!machine) {
|
|
742
742
|
inputBox.hide();
|
|
743
743
|
disposableStore.dispose();
|
|
744
|
-
throw ( new Error(( localize(
|
|
744
|
+
throw ( new Error(( localize(20965, "machine not found with id: {0}", machineId))));
|
|
745
745
|
}
|
|
746
746
|
inputBox.busy = false;
|
|
747
747
|
inputBox.value = machine.name;
|
|
@@ -750,7 +750,7 @@ let UserDataSyncMachinesViewDataProvider = class UserDataSyncMachinesViewDataPro
|
|
|
750
750
|
return machineName && !( enabledMachines.some(m => m.id !== machineId && m.name === machineName)) ? machineName : null;
|
|
751
751
|
};
|
|
752
752
|
disposableStore.add(inputBox.onDidChangeValue(
|
|
753
|
-
() => inputBox.validationMessage = validateMachineName(inputBox.value) ? "" : ( localize(
|
|
753
|
+
() => inputBox.validationMessage = validateMachineName(inputBox.value) ? "" : ( localize(20970, "Machine name should be unique and not empty"))
|
|
754
754
|
));
|
|
755
755
|
return ( new Promise((c, e) => {
|
|
756
756
|
disposableStore.add(inputBox.onDidAccept(async () => {
|
|
@@ -789,14 +789,14 @@ let UserDataSyncTroubleshootViewDataProvider = class UserDataSyncTroubleshootVie
|
|
|
789
789
|
handle: "SYNC_LOGS",
|
|
790
790
|
collapsibleState: TreeItemCollapsibleState.Collapsed,
|
|
791
791
|
label: {
|
|
792
|
-
label: ( localize(
|
|
792
|
+
label: ( localize(20971, "Logs"))
|
|
793
793
|
},
|
|
794
794
|
themeIcon: Codicon.folder
|
|
795
795
|
}, {
|
|
796
796
|
handle: "LAST_SYNC_STATES",
|
|
797
797
|
collapsibleState: TreeItemCollapsibleState.Collapsed,
|
|
798
798
|
label: {
|
|
799
|
-
label: ( localize(
|
|
799
|
+
label: ( localize(20972, "Last Synced Remotes"))
|
|
800
800
|
},
|
|
801
801
|
themeIcon: Codicon.folder
|
|
802
802
|
}];
|
|
@@ -848,7 +848,7 @@ let UserDataSyncTroubleshootViewDataProvider = class UserDataSyncTroubleshootVie
|
|
|
848
848
|
label: {
|
|
849
849
|
label: this.uriIdentityService.extUri.basename(logFolder)
|
|
850
850
|
},
|
|
851
|
-
description: this.uriIdentityService.extUri.isEqual(logFolder, this.environmentService.logsHome) ? ( localize(
|
|
851
|
+
description: this.uriIdentityService.extUri.isEqual(logFolder, this.environmentService.logsHome) ? ( localize(20963, "Current")) : undefined,
|
|
852
852
|
command: {
|
|
853
853
|
id: API_OPEN_EDITOR_COMMAND_ID,
|
|
854
854
|
title: "",
|
package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js
CHANGED
|
@@ -350,7 +350,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
350
350
|
async turnOn() {
|
|
351
351
|
if (!this.authenticationProviders.length) {
|
|
352
352
|
throw ( new Error(( localize(
|
|
353
|
-
|
|
353
|
+
22595,
|
|
354
354
|
"Settings sync cannot be turned on because there are no authentication providers available."
|
|
355
355
|
))));
|
|
356
356
|
}
|
|
@@ -365,7 +365,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
365
365
|
throw ( new CancellationError());
|
|
366
366
|
}
|
|
367
367
|
if (this.accountStatus !== AccountStatus.Available) {
|
|
368
|
-
throw ( new Error(( localize(
|
|
368
|
+
throw ( new Error(( localize(22596, "No account available"))));
|
|
369
369
|
}
|
|
370
370
|
const turnOnSyncCancellationToken = this.turnOnSyncCancellationToken = ( new CancellationTokenSource());
|
|
371
371
|
const disposable = isWeb ? Disposable.None : this.lifecycleService.onBeforeShutdown(e => e.veto((async () => {
|
|
@@ -373,10 +373,10 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
373
373
|
confirmed
|
|
374
374
|
} = await this.dialogService.confirm({
|
|
375
375
|
type: "warning",
|
|
376
|
-
message: ( localize(
|
|
377
|
-
title: ( localize(
|
|
378
|
-
primaryButton: ( localize(
|
|
379
|
-
cancelButton: ( localize(
|
|
376
|
+
message: ( localize(22597, "Settings Sync is being turned on. Would you like to cancel it?")),
|
|
377
|
+
title: ( localize(22598, "Settings Sync")),
|
|
378
|
+
primaryButton: ( localize(22599, "&&Yes")),
|
|
379
|
+
cancelButton: ( localize(22600, "No"))
|
|
380
380
|
});
|
|
381
381
|
if (confirmed) {
|
|
382
382
|
turnOnSyncCancellationToken.cancel();
|
|
@@ -397,7 +397,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
397
397
|
if (this.environmentService.options?.settingsSyncOptions?.enablementHandler && this.currentAuthenticationProviderId) {
|
|
398
398
|
this.environmentService.options.settingsSyncOptions.enablementHandler(true, this.currentAuthenticationProviderId);
|
|
399
399
|
}
|
|
400
|
-
this.notificationService.info(( localize(
|
|
400
|
+
this.notificationService.info(( localize(22601, "{0} is turned on", SYNC_TITLE.value)));
|
|
401
401
|
this._onDidTurnOnSync.fire();
|
|
402
402
|
}
|
|
403
403
|
async turnoff(everywhere) {
|
|
@@ -445,16 +445,16 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
445
445
|
delay: 500
|
|
446
446
|
}, async progress => {
|
|
447
447
|
progress.report({
|
|
448
|
-
message: ( localize(
|
|
448
|
+
message: ( localize(22602, "Turning on..."))
|
|
449
449
|
});
|
|
450
450
|
disposables.add(this.userDataSyncService.onDidChangeStatus(status => {
|
|
451
451
|
if (status === SyncStatus.HasConflicts) {
|
|
452
452
|
progress.report({
|
|
453
|
-
message: ( localize(
|
|
453
|
+
message: ( localize(22603, "Resolving conflicts..."))
|
|
454
454
|
});
|
|
455
455
|
} else {
|
|
456
456
|
progress.report({
|
|
457
|
-
message: ( localize(
|
|
457
|
+
message: ( localize(22604, "Turning on..."))
|
|
458
458
|
});
|
|
459
459
|
}
|
|
460
460
|
}));
|
|
@@ -473,7 +473,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
473
473
|
}
|
|
474
474
|
async handleConflictsWhileTurningOn(token) {
|
|
475
475
|
const conflicts = this.userDataSyncService.conflicts;
|
|
476
|
-
const andSeparator = ( localize(
|
|
476
|
+
const andSeparator = ( localize(22605, " and "));
|
|
477
477
|
let conflictsText = "";
|
|
478
478
|
for (let i = 0; i < conflicts.length; i++) {
|
|
479
479
|
if (i === conflicts.length - 1 && i !== 0) {
|
|
@@ -486,10 +486,10 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
486
486
|
const singleConflictResource = conflicts.length === 1 ? getSyncAreaLabel(conflicts[0].syncResource) : undefined;
|
|
487
487
|
await this.dialogService.prompt({
|
|
488
488
|
type: Severity.Warning,
|
|
489
|
-
message: ( localize(
|
|
490
|
-
detail: ( localize(
|
|
489
|
+
message: ( localize(22606, "Conflicts Detected in {0}", conflictsText)),
|
|
490
|
+
detail: ( localize(22607, "Please resolve conflicts to turn on...")),
|
|
491
491
|
buttons: [{
|
|
492
|
-
label: ( localize(
|
|
492
|
+
label: ( localize(22608, "&&Show Conflicts")),
|
|
493
493
|
run: async () => {
|
|
494
494
|
const waitUntilConflictsAreResolvedPromise = raceCancellationError(Event.toPromise(Event.filter(
|
|
495
495
|
this.userDataSyncService.onDidChangeConflicts,
|
|
@@ -499,10 +499,10 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
499
499
|
await waitUntilConflictsAreResolvedPromise;
|
|
500
500
|
}
|
|
501
501
|
}, {
|
|
502
|
-
label: singleConflictResource ? ( localize(
|
|
502
|
+
label: singleConflictResource ? ( localize(22609, "Accept &&Remote {0}", singleConflictResource)) : ( localize(22610, "Accept &&Remote")),
|
|
503
503
|
run: async () => this.replace(true)
|
|
504
504
|
}, {
|
|
505
|
-
label: singleConflictResource ? ( localize(
|
|
505
|
+
label: singleConflictResource ? ( localize(22611, "Accept &&Local {0}", singleConflictResource)) : ( localize(22612, "Accept &&Local")),
|
|
506
506
|
run: () => this.replace(false)
|
|
507
507
|
}],
|
|
508
508
|
cancelButton: {
|
|
@@ -543,11 +543,11 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
543
543
|
} = await this.dialogService.confirm({
|
|
544
544
|
type: "info",
|
|
545
545
|
message: ( localize(
|
|
546
|
-
|
|
546
|
+
22613,
|
|
547
547
|
"This will clear your data in the cloud and stop sync on all your devices."
|
|
548
548
|
)),
|
|
549
|
-
title: ( localize(
|
|
550
|
-
primaryButton: ( localize(
|
|
549
|
+
title: ( localize(22614, "Clear")),
|
|
550
|
+
primaryButton: ( localize(22615, "&&Reset"))
|
|
551
551
|
});
|
|
552
552
|
if (confirmed) {
|
|
553
553
|
await this.userDataSyncService.resetRemote();
|
|
@@ -580,11 +580,11 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
580
580
|
}
|
|
581
581
|
async downloadSyncActivity() {
|
|
582
582
|
const result = await this.fileDialogService.showOpenDialog({
|
|
583
|
-
title: ( localize(
|
|
583
|
+
title: ( localize(22616, "Select folder to download Settings Sync activity")),
|
|
584
584
|
canSelectFiles: false,
|
|
585
585
|
canSelectFolders: true,
|
|
586
586
|
canSelectMany: false,
|
|
587
|
-
openLabel: ( localize(
|
|
587
|
+
openLabel: ( localize(22617, "Save"))
|
|
588
588
|
});
|
|
589
589
|
if (!result?.[0]) {
|
|
590
590
|
return;
|
|
@@ -653,7 +653,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
653
653
|
} else {
|
|
654
654
|
if (!this.authenticationProviders.length) {
|
|
655
655
|
throw ( new Error(( localize(
|
|
656
|
-
|
|
656
|
+
22618,
|
|
657
657
|
"Cannot sign in because there are no authentication providers available."
|
|
658
658
|
))));
|
|
659
659
|
}
|
|
@@ -700,7 +700,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
700
700
|
quickPick.title = SYNC_TITLE.value;
|
|
701
701
|
quickPick.ok = false;
|
|
702
702
|
quickPick.ignoreFocusOut = true;
|
|
703
|
-
quickPick.placeholder = ( localize(
|
|
703
|
+
quickPick.placeholder = ( localize(22619, "Select an account to sign in"));
|
|
704
704
|
quickPick.show();
|
|
705
705
|
if (authenticationProviders.length > 1) {
|
|
706
706
|
quickPick.busy = true;
|
|
@@ -747,7 +747,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
747
747
|
if (allAccounts.size) {
|
|
748
748
|
quickPickItems.push({
|
|
749
749
|
type: "separator",
|
|
750
|
-
label: ( localize(
|
|
750
|
+
label: ( localize(22620, "Signed in"))
|
|
751
751
|
});
|
|
752
752
|
for (const authenticationProvider of authenticationProviders) {
|
|
753
753
|
const accounts = (allAccounts.get(authenticationProvider.id) || []).sort((
|
|
@@ -759,7 +759,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
759
759
|
for (const account of accounts) {
|
|
760
760
|
quickPickItems.push({
|
|
761
761
|
label: `${account.accountName} (${providerName})`,
|
|
762
|
-
description: account.sessionId === this.current?.sessionId ? ( localize(
|
|
762
|
+
description: account.sessionId === this.current?.sessionId ? ( localize(22621, "Last Used with Sync")) : undefined,
|
|
763
763
|
account,
|
|
764
764
|
authenticationProvider
|
|
765
765
|
});
|
|
@@ -767,7 +767,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
767
767
|
}
|
|
768
768
|
quickPickItems.push({
|
|
769
769
|
type: "separator",
|
|
770
|
-
label: ( localize(
|
|
770
|
+
label: ( localize(22622, "Others"))
|
|
771
771
|
});
|
|
772
772
|
}
|
|
773
773
|
for (const authenticationProvider of authenticationProviders) {
|
|
@@ -775,7 +775,7 @@ let UserDataSyncWorkbenchService = class UserDataSyncWorkbenchService extends Di
|
|
|
775
775
|
if (!( allAccounts.has(authenticationProvider.id)) || provider.supportsMultipleAccounts) {
|
|
776
776
|
const providerName = provider.label;
|
|
777
777
|
quickPickItems.push({
|
|
778
|
-
label: ( localize(
|
|
778
|
+
label: ( localize(22623, "Sign in with {0}", providerName)),
|
|
779
779
|
authenticationProvider
|
|
780
780
|
});
|
|
781
781
|
}
|