@codingame/monaco-vscode-user-data-sync-service-override 37.6.0 → 38.0.0
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/platform/userDataSync/common/userDataAutoSyncService.js +7 -7
- package/vscode/src/vs/platform/userDataSync/common/userDataSyncLog.js +1 -1
- package/vscode/src/vs/platform/userDataSync/common/userDataSyncResourceProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.js +88 -96
- 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": "
|
|
3
|
+
"version": "38.0.0",
|
|
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": "
|
|
19
|
-
"@codingame/monaco-vscode-user-data-profile-service-override": "
|
|
18
|
+
"@codingame/monaco-vscode-api": "38.0.0",
|
|
19
|
+
"@codingame/monaco-vscode-user-data-profile-service-override": "38.0.0"
|
|
20
20
|
},
|
|
21
21
|
"main": "index.js",
|
|
22
22
|
"module": "index.js",
|
|
@@ -479,24 +479,24 @@ class AutoSync extends Disposable {
|
|
|
479
479
|
if (this.manifest === null && (await this.userDataSyncService.hasPreviouslySynced())) {
|
|
480
480
|
if (this.hasSyncServiceChanged()) {
|
|
481
481
|
if (await this.hasDefaultServiceChanged()) {
|
|
482
|
-
throw ( new UserDataAutoSyncError(( localize(
|
|
482
|
+
throw ( new UserDataAutoSyncError(( localize(3316, "Cannot sync because default service has changed")), UserDataSyncErrorCode.DefaultServiceChanged));
|
|
483
483
|
} else {
|
|
484
|
-
throw ( new UserDataAutoSyncError(( localize(
|
|
484
|
+
throw ( new UserDataAutoSyncError(( localize(3317, "Cannot sync because sync service has changed")), UserDataSyncErrorCode.ServiceChanged));
|
|
485
485
|
}
|
|
486
486
|
} else {
|
|
487
|
-
throw ( new UserDataAutoSyncError(( localize(
|
|
487
|
+
throw ( new UserDataAutoSyncError(( localize(3318, "Cannot sync because syncing is turned off in the cloud")), UserDataSyncErrorCode.TurnedOff));
|
|
488
488
|
}
|
|
489
489
|
}
|
|
490
490
|
const sessionId = this.storageService.get(sessionIdKey, StorageScope.APPLICATION);
|
|
491
491
|
if (sessionId && this.manifest && sessionId !== this.manifest.session) {
|
|
492
492
|
if (this.hasSyncServiceChanged()) {
|
|
493
493
|
if (await this.hasDefaultServiceChanged()) {
|
|
494
|
-
throw ( new UserDataAutoSyncError(( localize(
|
|
494
|
+
throw ( new UserDataAutoSyncError(( localize(3316, "Cannot sync because default service has changed")), UserDataSyncErrorCode.DefaultServiceChanged));
|
|
495
495
|
} else {
|
|
496
|
-
throw ( new UserDataAutoSyncError(( localize(
|
|
496
|
+
throw ( new UserDataAutoSyncError(( localize(3317, "Cannot sync because sync service has changed")), UserDataSyncErrorCode.ServiceChanged));
|
|
497
497
|
}
|
|
498
498
|
} else {
|
|
499
|
-
throw ( new UserDataAutoSyncError(( localize(
|
|
499
|
+
throw ( new UserDataAutoSyncError(( localize(3319, "Cannot sync because current session is expired")), UserDataSyncErrorCode.SessionExpired));
|
|
500
500
|
}
|
|
501
501
|
}
|
|
502
502
|
const machines = await this.userDataSyncMachinesService.getMachines(this.manifest || undefined);
|
|
@@ -506,7 +506,7 @@ class AutoSync extends Disposable {
|
|
|
506
506
|
const currentMachine = machines.find(machine => machine.isCurrent);
|
|
507
507
|
if (currentMachine?.disabled) {
|
|
508
508
|
throw ( new UserDataAutoSyncError(( localize(
|
|
509
|
-
|
|
509
|
+
3320,
|
|
510
510
|
"Cannot sync because syncing is turned off on this machine from another machine."
|
|
511
511
|
)), UserDataSyncErrorCode.TurnedOff));
|
|
512
512
|
}
|
|
@@ -13,7 +13,7 @@ let UserDataSyncLogService = class UserDataSyncLogService extends AbstractLogger
|
|
|
13
13
|
this.logger = this._register(
|
|
14
14
|
loggerService.createLogger(joinPath(environmentService.logsHome, `${USER_DATA_SYNC_LOG_ID}.log`), {
|
|
15
15
|
id: USER_DATA_SYNC_LOG_ID,
|
|
16
|
-
name: ( localize(
|
|
16
|
+
name: ( localize(3326, "Settings Sync"))
|
|
17
17
|
})
|
|
18
18
|
);
|
|
19
19
|
}
|
|
@@ -580,7 +580,7 @@ let UserDataSyncResourceProviderService = class UserDataSyncResourceProviderServ
|
|
|
580
580
|
this.logService.error(error);
|
|
581
581
|
}
|
|
582
582
|
throw ( new UserDataSyncError(( localize(
|
|
583
|
-
|
|
583
|
+
3328,
|
|
584
584
|
"Cannot parse sync data as it is not compatible with the current version."
|
|
585
585
|
)), UserDataSyncErrorCode.IncompatibleRemoteContent, syncResource));
|
|
586
586
|
}
|
|
@@ -39,11 +39,11 @@ let UserDataSyncReportIssueContribution = class UserDataSyncReportIssueContribut
|
|
|
39
39
|
case UserDataSyncErrorCode.LocalTooManyRequests:
|
|
40
40
|
{
|
|
41
41
|
const message = isWeb ? ( localize(
|
|
42
|
-
|
|
42
|
+
23428,
|
|
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
|
+
23429,
|
|
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(23430, "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(23431, "Reload")) : ( localize(23432, "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(23433, "Operation Id: {0}", error.operationId)) : undefined;
|
|
70
70
|
const message = ( localize(
|
|
71
|
-
|
|
71
|
+
23434,
|
|
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(23435, "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(23430, "Show Log")),
|
|
82
82
|
run: () => this.commandService.executeCommand(SHOW_SYNC_LOG_COMMAND_ID)
|
|
83
83
|
})]
|
|
84
84
|
}
|
|
@@ -4,6 +4,7 @@ import { toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/act
|
|
|
4
4
|
import { isCancellationError, getErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
5
5
|
import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
6
6
|
import { Disposable, MutableDisposable, toDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
7
|
+
import { NotificationText } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notificationMessage';
|
|
7
8
|
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
8
9
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
9
10
|
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
@@ -36,7 +37,7 @@ import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/regist
|
|
|
36
37
|
import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors';
|
|
37
38
|
import { Extensions, ViewContainerLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views';
|
|
38
39
|
import { UserDataSyncDataViews } from './userDataSyncViews.js';
|
|
39
|
-
import { CONFIGURE_SYNC_COMMAND_ID,
|
|
40
|
+
import { CONFIGURE_SYNC_COMMAND_ID, SHOW_SYNC_LOG_COMMAND_ID, getSyncAreaLabel, SYNC_TITLE, AccountStatus, CONTEXT_SYNC_STATE, CONTEXT_SYNC_ENABLEMENT, SYNC_VIEW_CONTAINER_ID, CONTEXT_ACCOUNT_STATE, CONTEXT_HAS_CONFLICTS, DOWNLOAD_ACTIVITY_ACTION_DESCRIPTOR, SYNC_VIEW_ICON } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataSync/common/userDataSync';
|
|
40
41
|
import { IUserDataSyncWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataSync/common/userDataSync.service';
|
|
41
42
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
42
43
|
import { ViewPaneContainer } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/views/viewPaneContainer';
|
|
@@ -51,33 +52,34 @@ import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severit
|
|
|
51
52
|
|
|
52
53
|
const turnOffSyncCommand = {
|
|
53
54
|
id: "workbench.userDataSync.actions.turnOff",
|
|
54
|
-
title: ( localize2(
|
|
55
|
+
title: ( localize2(23436, "Turn Off"))
|
|
55
56
|
};
|
|
56
57
|
const configureSyncCommand = {
|
|
57
58
|
id: CONFIGURE_SYNC_COMMAND_ID,
|
|
58
|
-
title: ( localize2(
|
|
59
|
+
title: ( localize2(23437, "Configure..."))
|
|
59
60
|
};
|
|
60
61
|
const showConflictsCommandId = "workbench.userDataSync.actions.showConflicts";
|
|
62
|
+
const syncLogLink = NotificationText.link(( localize(23438, "logs")), `command:${SHOW_SYNC_LOG_COMMAND_ID}`);
|
|
61
63
|
const syncNowCommand = {
|
|
62
64
|
id: "workbench.userDataSync.actions.syncNow",
|
|
63
|
-
title: ( localize2(
|
|
65
|
+
title: ( localize2(23439, "Sync Now")),
|
|
64
66
|
description(userDataSyncService) {
|
|
65
67
|
if (userDataSyncService.status === SyncStatus.Syncing) {
|
|
66
|
-
return localize(
|
|
68
|
+
return localize(23440, "syncing");
|
|
67
69
|
}
|
|
68
70
|
if (userDataSyncService.lastSyncTime) {
|
|
69
|
-
return localize(
|
|
71
|
+
return localize(23441, "synced {0}", fromNow(userDataSyncService.lastSyncTime, true));
|
|
70
72
|
}
|
|
71
73
|
return undefined;
|
|
72
74
|
}
|
|
73
75
|
};
|
|
74
76
|
const showSyncSettingsCommand = {
|
|
75
77
|
id: "workbench.userDataSync.actions.settings",
|
|
76
|
-
title: ( localize2(
|
|
78
|
+
title: ( localize2(23442, "Show Settings"))
|
|
77
79
|
};
|
|
78
80
|
const showSyncedDataCommand = {
|
|
79
81
|
id: "workbench.userDataSync.actions.showSyncedData",
|
|
80
|
-
title: ( localize2(
|
|
82
|
+
title: ( localize2(23443, "Show Synced Data"))
|
|
81
83
|
};
|
|
82
84
|
const CONTEXT_TURNING_ON_STATE = new RawContextKey("userDataSyncTurningOn", false);
|
|
83
85
|
let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution extends Disposable {
|
|
@@ -203,21 +205,21 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
203
205
|
if (!( this.conflictsDisposables.has(key))) {
|
|
204
206
|
const conflictsArea = getSyncAreaLabel(conflict.syncResource);
|
|
205
207
|
const handle = this.notificationService.prompt(Severity.Warning, ( localize(
|
|
206
|
-
|
|
208
|
+
23444,
|
|
207
209
|
"Unable to sync due to conflicts in {0}. Please resolve them to continue.",
|
|
208
210
|
conflictsArea.toLowerCase()
|
|
209
211
|
)), [{
|
|
210
|
-
label: ( localize(
|
|
212
|
+
label: ( localize(23445, "Replace Remote")),
|
|
211
213
|
run: () => {
|
|
212
214
|
this.acceptLocal(conflict, conflict.conflicts[0]);
|
|
213
215
|
}
|
|
214
216
|
}, {
|
|
215
|
-
label: ( localize(
|
|
217
|
+
label: ( localize(23446, "Replace Local")),
|
|
216
218
|
run: () => {
|
|
217
219
|
this.acceptRemote(conflict, conflict.conflicts[0]);
|
|
218
220
|
}
|
|
219
221
|
}, {
|
|
220
|
-
label: ( localize(
|
|
222
|
+
label: ( localize(23447, "Show Conflicts")),
|
|
221
223
|
run: () => {
|
|
222
224
|
this.telemetryService.publicLog2("sync/showConflicts", {
|
|
223
225
|
source: conflict.syncResource
|
|
@@ -247,11 +249,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
247
249
|
this.userDataSyncEnablementService.isEnabled()
|
|
248
250
|
);
|
|
249
251
|
} catch (e) {
|
|
250
|
-
this.notificationService.error(( localize(
|
|
251
|
-
20882,
|
|
252
|
-
"Error while accepting changes. Please check [logs]({0}) for more details.",
|
|
253
|
-
`command:${SHOW_SYNC_LOG_COMMAND_ID}`
|
|
254
|
-
)));
|
|
252
|
+
this.notificationService.error(NotificationText.format(( localize(23448, "Error while accepting changes. Please check {0} for more details.")), syncLogLink));
|
|
255
253
|
}
|
|
256
254
|
}
|
|
257
255
|
async acceptLocal(syncResource, conflict) {
|
|
@@ -263,11 +261,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
263
261
|
this.userDataSyncEnablementService.isEnabled()
|
|
264
262
|
);
|
|
265
263
|
} catch (e) {
|
|
266
|
-
this.notificationService.error(( localize(
|
|
267
|
-
20882,
|
|
268
|
-
"Error while accepting changes. Please check [logs]({0}) for more details.",
|
|
269
|
-
`command:${SHOW_SYNC_LOG_COMMAND_ID}`
|
|
270
|
-
)));
|
|
264
|
+
this.notificationService.error(NotificationText.format(( localize(23448, "Error while accepting changes. Please check {0} for more details.")), syncLogLink));
|
|
271
265
|
}
|
|
272
266
|
}
|
|
273
267
|
onAutoSyncError(error) {
|
|
@@ -276,13 +270,13 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
276
270
|
this.notificationService.notify({
|
|
277
271
|
severity: Severity.Info,
|
|
278
272
|
message: ( localize(
|
|
279
|
-
|
|
273
|
+
23449,
|
|
280
274
|
"Settings sync was turned off because current session is expired, please sign in again to turn on sync."
|
|
281
275
|
)),
|
|
282
276
|
actions: {
|
|
283
277
|
primary: [toAction({
|
|
284
278
|
id: "turn on sync",
|
|
285
|
-
label: ( localize(
|
|
279
|
+
label: ( localize(23450, "Turn on Settings Sync...")),
|
|
286
280
|
run: () => this.turnOn()
|
|
287
281
|
})]
|
|
288
282
|
}
|
|
@@ -292,13 +286,13 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
292
286
|
this.notificationService.notify({
|
|
293
287
|
severity: Severity.Info,
|
|
294
288
|
message: ( localize(
|
|
295
|
-
|
|
289
|
+
23451,
|
|
296
290
|
"Settings sync was turned off from another device, please turn on sync again."
|
|
297
291
|
)),
|
|
298
292
|
actions: {
|
|
299
293
|
primary: [toAction({
|
|
300
294
|
id: "turn on sync",
|
|
301
|
-
label: ( localize(
|
|
295
|
+
label: ( localize(23450, "Turn on Settings Sync...")),
|
|
302
296
|
run: () => this.turnOn()
|
|
303
297
|
})]
|
|
304
298
|
}
|
|
@@ -309,7 +303,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
309
303
|
this.disableSync(error.resource);
|
|
310
304
|
const sourceArea = getSyncAreaLabel(error.resource);
|
|
311
305
|
this.handleTooLargeError(error.resource, ( localize(
|
|
312
|
-
|
|
306
|
+
23452,
|
|
313
307
|
"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
308
|
sourceArea.toLowerCase(),
|
|
315
309
|
sourceArea.toLowerCase(),
|
|
@@ -320,7 +314,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
320
314
|
case UserDataSyncErrorCode.LocalTooManyProfiles:
|
|
321
315
|
this.disableSync(SyncResource.Profiles);
|
|
322
316
|
this.notificationService.error(( localize(
|
|
323
|
-
|
|
317
|
+
23453,
|
|
324
318
|
"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
319
|
)));
|
|
326
320
|
break;
|
|
@@ -329,12 +323,12 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
329
323
|
case UserDataSyncErrorCode.UpgradeRequired:
|
|
330
324
|
{
|
|
331
325
|
const message = ( localize(
|
|
332
|
-
|
|
326
|
+
23454,
|
|
333
327
|
"Settings sync is disabled because the current version ({0}, {1}) is not compatible with the sync service. Please update before turning on sync.",
|
|
334
328
|
this.productService.version,
|
|
335
329
|
this.productService.commit
|
|
336
330
|
));
|
|
337
|
-
const operationId = error.operationId ? ( localize(
|
|
331
|
+
const operationId = error.operationId ? ( localize(23455, "Operation Id: {0}", error.operationId)) : undefined;
|
|
338
332
|
this.notificationService.notify({
|
|
339
333
|
severity: Severity.Error,
|
|
340
334
|
message: operationId ? `${message} ${operationId}` : message
|
|
@@ -344,21 +338,21 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
344
338
|
case UserDataSyncErrorCode.MethodNotFound:
|
|
345
339
|
{
|
|
346
340
|
const message = ( localize(
|
|
347
|
-
|
|
341
|
+
23456,
|
|
348
342
|
"Settings sync is disabled because the client is making invalid requests. Please report an issue with the logs."
|
|
349
343
|
));
|
|
350
|
-
const operationId = error.operationId ? ( localize(
|
|
344
|
+
const operationId = error.operationId ? ( localize(23455, "Operation Id: {0}", error.operationId)) : undefined;
|
|
351
345
|
this.notificationService.notify({
|
|
352
346
|
severity: Severity.Error,
|
|
353
347
|
message: operationId ? `${message} ${operationId}` : message,
|
|
354
348
|
actions: {
|
|
355
349
|
primary: [toAction({
|
|
356
350
|
id: "Show Sync Logs",
|
|
357
|
-
label: ( localize(
|
|
351
|
+
label: ( localize(23457, "Show Log")),
|
|
358
352
|
run: () => this.commandService.executeCommand(SHOW_SYNC_LOG_COMMAND_ID)
|
|
359
353
|
}), toAction({
|
|
360
354
|
id: "Report Issue",
|
|
361
|
-
label: ( localize(
|
|
355
|
+
label: ( localize(23458, "Report Issue")),
|
|
362
356
|
run: () => this.workbenchIssueService.openReporter()
|
|
363
357
|
})]
|
|
364
358
|
}
|
|
@@ -369,17 +363,17 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
369
363
|
this.notificationService.notify({
|
|
370
364
|
severity: Severity.Error,
|
|
371
365
|
message: ( localize(
|
|
372
|
-
|
|
366
|
+
23459,
|
|
373
367
|
"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
368
|
)),
|
|
375
369
|
actions: {
|
|
376
370
|
primary: [toAction({
|
|
377
371
|
id: "reset",
|
|
378
|
-
label: ( localize(
|
|
372
|
+
label: ( localize(23460, "Clear Data in Cloud...")),
|
|
379
373
|
run: () => this.userDataSyncWorkbenchService.resetSyncedData()
|
|
380
374
|
}), toAction({
|
|
381
375
|
id: "show synced data",
|
|
382
|
-
label: ( localize(
|
|
376
|
+
label: ( localize(23461, "Show Synced Data")),
|
|
383
377
|
run: () => this.userDataSyncWorkbenchService.showSyncActivity()
|
|
384
378
|
})]
|
|
385
379
|
}
|
|
@@ -388,31 +382,31 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
388
382
|
case UserDataSyncErrorCode.ServiceChanged:
|
|
389
383
|
this.notificationService.notify({
|
|
390
384
|
severity: Severity.Info,
|
|
391
|
-
message: this.userDataSyncStoreManagementService.userDataSyncStore?.type === "insiders" ? ( localize(
|
|
385
|
+
message: this.userDataSyncStoreManagementService.userDataSyncStore?.type === "insiders" ? ( localize(23462, "Settings Sync has been switched to insiders service")) : ( localize(23463, "Settings Sync has been switched to stable service"))
|
|
392
386
|
});
|
|
393
387
|
return;
|
|
394
388
|
case UserDataSyncErrorCode.DefaultServiceChanged:
|
|
395
389
|
if (this.userDataSyncEnablementService.isEnabled()) {
|
|
396
390
|
this.notificationService.notify({
|
|
397
391
|
severity: Severity.Info,
|
|
398
|
-
message: ( localize(
|
|
399
|
-
|
|
400
|
-
"Settings sync now uses a separate service, more information is available in the
|
|
401
|
-
))
|
|
392
|
+
message: NotificationText.format(( localize(
|
|
393
|
+
23464,
|
|
394
|
+
"Settings sync now uses a separate service, more information is available in the {0}."
|
|
395
|
+
)), NotificationText.link(( localize(23465, "Settings Sync Documentation")), "https://aka.ms/vscode-settings-sync-help#_syncing-stable-versus-insiders"))
|
|
402
396
|
});
|
|
403
397
|
}
|
|
404
398
|
else {
|
|
405
399
|
this.notificationService.notify({
|
|
406
400
|
severity: Severity.Info,
|
|
407
401
|
message: ( localize(
|
|
408
|
-
|
|
402
|
+
23466,
|
|
409
403
|
"Settings sync was turned off because {0} now uses a separate service. Please turn on sync again.",
|
|
410
404
|
this.productService.nameLong
|
|
411
405
|
)),
|
|
412
406
|
actions: {
|
|
413
407
|
primary: [toAction({
|
|
414
408
|
id: "turn on sync",
|
|
415
|
-
label: ( localize(
|
|
409
|
+
label: ( localize(23450, "Turn on Settings Sync...")),
|
|
416
410
|
run: () => this.turnOn()
|
|
417
411
|
})]
|
|
418
412
|
}
|
|
@@ -422,14 +416,14 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
422
416
|
}
|
|
423
417
|
}
|
|
424
418
|
handleTooLargeError(resource, message, error) {
|
|
425
|
-
const operationId = error.operationId ? ( localize(
|
|
419
|
+
const operationId = error.operationId ? ( localize(23455, "Operation Id: {0}", error.operationId)) : undefined;
|
|
426
420
|
this.notificationService.notify({
|
|
427
421
|
severity: Severity.Error,
|
|
428
422
|
message: operationId ? `${message} ${operationId}` : message,
|
|
429
423
|
actions: {
|
|
430
424
|
primary: [toAction({
|
|
431
425
|
id: "open sync file",
|
|
432
|
-
label: ( localize(
|
|
426
|
+
label: ( localize(23467, "Open {0} File", getSyncAreaLabel(resource))),
|
|
433
427
|
run: () => resource === SyncResource.Settings ? this.preferencesService.openUserSettings({
|
|
434
428
|
jsonEditor: true
|
|
435
429
|
}) : this.preferencesService.openGlobalKeybindingSettings(true)
|
|
@@ -497,14 +491,14 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
497
491
|
const handle = this.notificationService.notify({
|
|
498
492
|
severity: Severity.Error,
|
|
499
493
|
message: ( localize(
|
|
500
|
-
|
|
494
|
+
23468,
|
|
501
495
|
"Unable to sync {0} because the content in the file is not valid. Please open the file and correct it.",
|
|
502
496
|
errorArea.toLowerCase()
|
|
503
497
|
)),
|
|
504
498
|
actions: {
|
|
505
499
|
primary: [toAction({
|
|
506
500
|
id: "open sync file",
|
|
507
|
-
label: ( localize(
|
|
501
|
+
label: ( localize(23467, "Open {0} File", errorArea)),
|
|
508
502
|
run: () => source === SyncResource.Settings ? this.preferencesService.openUserSettings({
|
|
509
503
|
jsonEditor: true
|
|
510
504
|
}) : this.preferencesService.openGlobalKeybindingSettings(true)
|
|
@@ -530,9 +524,9 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
530
524
|
this.globalActivityBadgeDisposable.clear();
|
|
531
525
|
let badge = undefined;
|
|
532
526
|
if (this.userDataSyncService.conflicts.length && this.userDataSyncEnablementService.isEnabled()) {
|
|
533
|
-
badge = ( new NumberBadge(this.getConflictsCount(), () => ( localize(
|
|
527
|
+
badge = ( new NumberBadge(this.getConflictsCount(), () => ( localize(23469, "{0}: Conflicts Detected", SYNC_TITLE.value))));
|
|
534
528
|
} else if (this.turningOnSync) {
|
|
535
|
-
badge = ( new ProgressBadge(() => ( localize(
|
|
529
|
+
badge = ( new ProgressBadge(() => ( localize(23470, "Turning on Settings Sync..."))));
|
|
536
530
|
}
|
|
537
531
|
if (badge) {
|
|
538
532
|
this.globalActivityBadgeDisposable.value = this.activityService.showGlobalActivity({
|
|
@@ -544,7 +538,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
544
538
|
this.accountBadgeDisposable.clear();
|
|
545
539
|
let badge = undefined;
|
|
546
540
|
if (this.userDataSyncService.status !== SyncStatus.Uninitialized && this.userDataSyncEnablementService.isEnabled() && this.userDataSyncWorkbenchService.accountStatus === AccountStatus.Unavailable) {
|
|
547
|
-
badge = ( new NumberBadge(1, () => ( localize(
|
|
541
|
+
badge = ( new NumberBadge(1, () => ( localize(23471, "Sign in to Sync Settings"))));
|
|
548
542
|
}
|
|
549
543
|
if (badge) {
|
|
550
544
|
this.accountBadgeDisposable.value = this.activityService.showAccountsActivity({
|
|
@@ -555,7 +549,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
555
549
|
async turnOn() {
|
|
556
550
|
try {
|
|
557
551
|
if (!this.userDataSyncWorkbenchService.authenticationProviders.length) {
|
|
558
|
-
throw ( new Error(( localize(
|
|
552
|
+
throw ( new Error(( localize(23472, "No authentication providers are available."))));
|
|
559
553
|
}
|
|
560
554
|
const turnOn = await this.askToConfigure();
|
|
561
555
|
if (!turnOn) {
|
|
@@ -574,7 +568,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
574
568
|
case UserDataSyncErrorCode.TooLarge:
|
|
575
569
|
if (e.resource === SyncResource.Keybindings || e.resource === SyncResource.Settings || e.resource === SyncResource.Tasks) {
|
|
576
570
|
this.handleTooLargeError(e.resource, ( localize(
|
|
577
|
-
|
|
571
|
+
23473,
|
|
578
572
|
"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
573
|
getSyncAreaLabel(e.resource).toLowerCase(),
|
|
580
574
|
"100kb"
|
|
@@ -587,12 +581,12 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
587
581
|
case UserDataSyncErrorCode.UpgradeRequired:
|
|
588
582
|
{
|
|
589
583
|
const message = ( localize(
|
|
590
|
-
|
|
584
|
+
23474,
|
|
591
585
|
"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
586
|
this.productService.version,
|
|
593
587
|
this.productService.commit
|
|
594
588
|
));
|
|
595
|
-
const operationId = e.operationId ? ( localize(
|
|
589
|
+
const operationId = e.operationId ? ( localize(23455, "Operation Id: {0}", e.operationId)) : undefined;
|
|
596
590
|
this.notificationService.notify({
|
|
597
591
|
severity: Severity.Error,
|
|
598
592
|
message: operationId ? `${message} ${operationId}` : message
|
|
@@ -603,17 +597,17 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
603
597
|
this.notificationService.notify({
|
|
604
598
|
severity: Severity.Error,
|
|
605
599
|
message: ( localize(
|
|
606
|
-
|
|
600
|
+
23475,
|
|
607
601
|
"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
602
|
)),
|
|
609
603
|
actions: {
|
|
610
604
|
primary: [toAction({
|
|
611
605
|
id: "reset",
|
|
612
|
-
label: ( localize(
|
|
606
|
+
label: ( localize(23460, "Clear Data in Cloud...")),
|
|
613
607
|
run: () => this.userDataSyncWorkbenchService.resetSyncedData()
|
|
614
608
|
}), toAction({
|
|
615
609
|
id: "show synced data",
|
|
616
|
-
label: ( localize(
|
|
610
|
+
label: ( localize(23461, "Show Synced Data")),
|
|
617
611
|
run: () => this.userDataSyncWorkbenchService.showSyncActivity()
|
|
618
612
|
})]
|
|
619
613
|
}
|
|
@@ -621,16 +615,15 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
621
615
|
return;
|
|
622
616
|
case UserDataSyncErrorCode.Unauthorized:
|
|
623
617
|
case UserDataSyncErrorCode.Forbidden:
|
|
624
|
-
this.notificationService.error(( localize(
|
|
618
|
+
this.notificationService.error(( localize(23476, "Error while turning on Settings Sync: Authentication failed.")));
|
|
625
619
|
return;
|
|
626
620
|
}
|
|
627
|
-
this.notificationService.error(( localize(
|
|
628
|
-
|
|
629
|
-
"Error while turning on Settings Sync. Please check
|
|
630
|
-
|
|
631
|
-
)));
|
|
621
|
+
this.notificationService.error(NotificationText.format(( localize(
|
|
622
|
+
23477,
|
|
623
|
+
"Error while turning on Settings Sync. Please check {0} for more details."
|
|
624
|
+
)), syncLogLink));
|
|
632
625
|
} else {
|
|
633
|
-
this.notificationService.error(( localize(
|
|
626
|
+
this.notificationService.error(( localize(23478, "Error while turning on Settings Sync. {0}", getErrorMessage(e))));
|
|
634
627
|
}
|
|
635
628
|
}
|
|
636
629
|
}
|
|
@@ -642,8 +635,8 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
642
635
|
quickPick.title = SYNC_TITLE.value;
|
|
643
636
|
quickPick.ok = false;
|
|
644
637
|
quickPick.customButton = true;
|
|
645
|
-
quickPick.customLabel = ( localize(
|
|
646
|
-
quickPick.description = ( localize(
|
|
638
|
+
quickPick.customLabel = ( localize(23479, "Sign in"));
|
|
639
|
+
quickPick.description = ( localize(23480, "Please sign in to backup and sync your data across devices."));
|
|
647
640
|
quickPick.canSelectMany = true;
|
|
648
641
|
quickPick.ignoreFocusOut = true;
|
|
649
642
|
quickPick.hideInput = true;
|
|
@@ -718,8 +711,8 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
718
711
|
const disposables = ( new DisposableStore());
|
|
719
712
|
const quickPick = this.quickInputService.createQuickPick();
|
|
720
713
|
disposables.add(quickPick);
|
|
721
|
-
quickPick.title = ( localize(
|
|
722
|
-
quickPick.placeholder = ( localize(
|
|
714
|
+
quickPick.title = ( localize(23481, "{0}: Configure...", SYNC_TITLE.value));
|
|
715
|
+
quickPick.placeholder = ( localize(23482, "Choose what to sync"));
|
|
723
716
|
quickPick.canSelectMany = true;
|
|
724
717
|
quickPick.ignoreFocusOut = true;
|
|
725
718
|
quickPick.ok = true;
|
|
@@ -741,15 +734,15 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
741
734
|
}
|
|
742
735
|
async turnOff() {
|
|
743
736
|
const result = await this.dialogService.confirm({
|
|
744
|
-
message: ( localize(
|
|
737
|
+
message: ( localize(23483, "Do you want to turn off sync?")),
|
|
745
738
|
detail: ( localize(
|
|
746
|
-
|
|
739
|
+
23484,
|
|
747
740
|
"Your settings, keybindings, extensions, snippets and UI State will no longer be synced."
|
|
748
741
|
)),
|
|
749
|
-
primaryButton: ( localize(
|
|
742
|
+
primaryButton: ( localize(23485, "&&Turn off")),
|
|
750
743
|
checkbox: this.userDataSyncWorkbenchService.accountStatus === AccountStatus.Available ? {
|
|
751
744
|
label: ( localize(
|
|
752
|
-
|
|
745
|
+
23486,
|
|
753
746
|
"Turn off sync on all your devices and clear the data from the cloud."
|
|
754
747
|
))
|
|
755
748
|
} : undefined
|
|
@@ -783,9 +776,9 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
783
776
|
return (new Promise((c, e) => {
|
|
784
777
|
const disposables = ( new DisposableStore());
|
|
785
778
|
const quickPick = disposables.add(this.quickInputService.createQuickPick());
|
|
786
|
-
quickPick.title = ( localize(
|
|
779
|
+
quickPick.title = ( localize(23487, "{0}: Select Service", SYNC_TITLE.value));
|
|
787
780
|
quickPick.description = ( localize(
|
|
788
|
-
|
|
781
|
+
23488,
|
|
789
782
|
"Ensure you are using the same settings sync service when syncing with multiple environments"
|
|
790
783
|
));
|
|
791
784
|
quickPick.hideInput = true;
|
|
@@ -793,17 +786,17 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
793
786
|
const getDescription = url => {
|
|
794
787
|
const isDefault = isEqual(url, userDataSyncStore.defaultUrl);
|
|
795
788
|
if (isDefault) {
|
|
796
|
-
return localize(
|
|
789
|
+
return localize(23489, "Default");
|
|
797
790
|
}
|
|
798
791
|
return undefined;
|
|
799
792
|
};
|
|
800
793
|
quickPick.items = [{
|
|
801
794
|
id: "insiders",
|
|
802
|
-
label: ( localize(
|
|
795
|
+
label: ( localize(23490, "Insiders")),
|
|
803
796
|
description: getDescription(userDataSyncStore.insidersUrl)
|
|
804
797
|
}, {
|
|
805
798
|
id: "stable",
|
|
806
|
-
label: ( localize(
|
|
799
|
+
label: ( localize(23491, "Stable")),
|
|
807
800
|
description: getDescription(userDataSyncStore.stableUrl)
|
|
808
801
|
}];
|
|
809
802
|
disposables.add(quickPick.onDidAccept(async () => {
|
|
@@ -849,7 +842,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
849
842
|
constructor() {
|
|
850
843
|
super({
|
|
851
844
|
id: "workbench.userDataSync.actions.turnOn",
|
|
852
|
-
title: ( localize2(
|
|
845
|
+
title: ( localize2(23492, "Backup and Sync Settings...")),
|
|
853
846
|
category: SYNC_TITLE,
|
|
854
847
|
f1: true,
|
|
855
848
|
precondition: when,
|
|
@@ -882,7 +875,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
882
875
|
constructor() {
|
|
883
876
|
super({
|
|
884
877
|
id: "workbench.userData.actions.turningOn",
|
|
885
|
-
title: ( localize(
|
|
878
|
+
title: ( localize(23493, "Turning on Settings Sync...")),
|
|
886
879
|
precondition: ( ContextKeyExpr.false()),
|
|
887
880
|
menu: [{
|
|
888
881
|
group: "3_configuration",
|
|
@@ -905,7 +898,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
905
898
|
constructor() {
|
|
906
899
|
super({
|
|
907
900
|
id: "workbench.userData.actions.cancelTurnOn",
|
|
908
|
-
title: ( localize(
|
|
901
|
+
title: ( localize(23494, "Cancel")),
|
|
909
902
|
icon: Codicon.stopCircle,
|
|
910
903
|
menu: {
|
|
911
904
|
id: MenuId.ViewContainerTitle,
|
|
@@ -928,7 +921,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
928
921
|
constructor() {
|
|
929
922
|
super({
|
|
930
923
|
id: "workbench.userData.actions.signin",
|
|
931
|
-
title: ( localize(
|
|
924
|
+
title: ( localize(23495, "Sign in to Sync Settings")),
|
|
932
925
|
menu: {
|
|
933
926
|
group: "3_configuration",
|
|
934
927
|
id: MenuId.GlobalActivity,
|
|
@@ -949,13 +942,13 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
949
942
|
group: "1_settings",
|
|
950
943
|
command: {
|
|
951
944
|
id,
|
|
952
|
-
title: ( localize(
|
|
945
|
+
title: ( localize(23496, "Sign in to Sync Settings (1)"))
|
|
953
946
|
},
|
|
954
947
|
when
|
|
955
948
|
})));
|
|
956
949
|
}
|
|
957
950
|
getShowConflictsTitle() {
|
|
958
|
-
return localize2(
|
|
951
|
+
return localize2(23497, "Show Conflicts ({0})", this.getConflictsCount());
|
|
959
952
|
}
|
|
960
953
|
registerShowConflictsAction() {
|
|
961
954
|
this.conflictsActionDisposable.value = undefined;
|
|
@@ -995,7 +988,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
995
988
|
constructor() {
|
|
996
989
|
super({
|
|
997
990
|
id: "workbench.userDataSync.actions.manage",
|
|
998
|
-
title: ( localize(
|
|
991
|
+
title: ( localize(23498, "Settings Sync is On")),
|
|
999
992
|
toggled: ContextKeyTrueExpr.INSTANCE,
|
|
1000
993
|
menu: [{
|
|
1001
994
|
id: MenuId.GlobalActivity,
|
|
@@ -1136,11 +1129,10 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1136
1129
|
await that.turnOff();
|
|
1137
1130
|
} catch (e) {
|
|
1138
1131
|
if (!isCancellationError(e)) {
|
|
1139
|
-
that.notificationService.error(( localize(
|
|
1140
|
-
|
|
1141
|
-
"Error while turning off Settings Sync. Please check
|
|
1142
|
-
|
|
1143
|
-
)));
|
|
1132
|
+
that.notificationService.error(NotificationText.format(( localize(
|
|
1133
|
+
23499,
|
|
1134
|
+
"Error while turning off Settings Sync. Please check {0} for more details."
|
|
1135
|
+
)), syncLogLink));
|
|
1144
1136
|
}
|
|
1145
1137
|
}
|
|
1146
1138
|
}
|
|
@@ -1156,7 +1148,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1156
1148
|
title: configureSyncCommand.title,
|
|
1157
1149
|
category: SYNC_TITLE,
|
|
1158
1150
|
icon: Codicon.settingsGear,
|
|
1159
|
-
tooltip: ( localize(
|
|
1151
|
+
tooltip: ( localize(23500, "Configure...")),
|
|
1160
1152
|
menu: [{
|
|
1161
1153
|
id: MenuId.CommandPalette,
|
|
1162
1154
|
when
|
|
@@ -1179,8 +1171,8 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1179
1171
|
constructor() {
|
|
1180
1172
|
super({
|
|
1181
1173
|
id: SHOW_SYNC_LOG_COMMAND_ID,
|
|
1182
|
-
title: ( localize(
|
|
1183
|
-
tooltip: ( localize(
|
|
1174
|
+
title: ( localize(23501, "{0}: Show Log", SYNC_TITLE.value)),
|
|
1175
|
+
tooltip: ( localize(23502, "Show Log")),
|
|
1184
1176
|
icon: Codicon.output,
|
|
1185
1177
|
menu: [{
|
|
1186
1178
|
id: MenuId.CommandPalette,
|
|
@@ -1252,7 +1244,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1252
1244
|
constructor() {
|
|
1253
1245
|
super({
|
|
1254
1246
|
id: "workbench.userDataSync.actions.acceptMerges",
|
|
1255
|
-
title: ( localize(
|
|
1247
|
+
title: ( localize(23503, "Complete Merge")),
|
|
1256
1248
|
menu: [{
|
|
1257
1249
|
id: MenuId.EditorContent,
|
|
1258
1250
|
when: ( ContextKeyExpr.and(ctxIsMergeResultEditor, ( ContextKeyExpr.regex(ctxMergeBaseUri.key, ( new RegExp(`^${USER_DATA_SYNC_SCHEME}:`))))))
|
|
@@ -1293,7 +1285,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1293
1285
|
const notificationService = accessor.get(INotificationService);
|
|
1294
1286
|
const folder = await userDataSyncWorkbenchService.downloadSyncActivity();
|
|
1295
1287
|
if (folder) {
|
|
1296
|
-
notificationService.info(( localize(
|
|
1288
|
+
notificationService.info(( localize(23504, "Successfully downloaded Settings Sync activity.")));
|
|
1297
1289
|
}
|
|
1298
1290
|
}
|
|
1299
1291
|
}));
|
|
@@ -1319,7 +1311,7 @@ let UserDataSyncWorkbenchContribution = class UserDataSyncWorkbenchContribution
|
|
|
1319
1311
|
constructor() {
|
|
1320
1312
|
super({
|
|
1321
1313
|
id: "workbench.actions.syncData.reset",
|
|
1322
|
-
title: ( localize(
|
|
1314
|
+
title: ( localize(23505, "Clear Data in Cloud...")),
|
|
1323
1315
|
menu: [{
|
|
1324
1316
|
id: MenuId.ViewContainerTitle,
|
|
1325
1317
|
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(23506, "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(23507, "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(23508, "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(23509, "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(23510, "{0} (Remote)", basename(conflictToOpen.remoteResource)));
|
|
226
|
+
const localResourceName = ( localize(23511, "{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(23512, "Theirs")),
|
|
231
231
|
description: remoteResourceName
|
|
232
232
|
},
|
|
233
233
|
input2: {
|
|
234
234
|
resource: conflictToOpen.localResource,
|
|
235
|
-
label: ( localize(
|
|
235
|
+
label: ( localize(23513, "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(23514, "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(23515, "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(23516, "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(23517, "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(23518, "Sync Activity (Remote)")) : ( localize2(23519, "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(23520, "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(23521, "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(23522, "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(23523, "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(23524, "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
|
+
23525,
|
|
270
270
|
"{0} ↔ {1}",
|
|
271
|
-
localize(
|
|
272
|
-
localize(
|
|
271
|
+
localize(23526, "{0} (Remote)", basename(remoteResource)),
|
|
272
|
+
localize(23527, "{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(23528, "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
|
+
23529,
|
|
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(23530, "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(23531, "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
|
+
23532,
|
|
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(23533, "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(23533, "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(23534, "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(23533, "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(23535, "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(23536, "Are you sure you want to turn off sync on selected machines?")) : ( localize(
|
|
706
|
+
23537,
|
|
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(23538, "&&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(23539, "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(23535, "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(23540, "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(23541, "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(23542, "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(23533, "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
|
+
25193,
|
|
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(25194, "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(25195, "Settings Sync is being turned on. Would you like to cancel it?")),
|
|
377
|
+
title: ( localize(25196, "Settings Sync")),
|
|
378
|
+
primaryButton: ( localize(25197, "&&Yes")),
|
|
379
|
+
cancelButton: ( localize(25198, "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(25199, "{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(25200, "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(25201, "Resolving conflicts..."))
|
|
454
454
|
});
|
|
455
455
|
} else {
|
|
456
456
|
progress.report({
|
|
457
|
-
message: ( localize(
|
|
457
|
+
message: ( localize(25202, "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(25203, " 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(25204, "Conflicts Detected in {0}", conflictsText)),
|
|
490
|
+
detail: ( localize(25205, "Please resolve conflicts to turn on...")),
|
|
491
491
|
buttons: [{
|
|
492
|
-
label: ( localize(
|
|
492
|
+
label: ( localize(25206, "&&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(25207, "Accept &&Remote {0}", singleConflictResource)) : ( localize(25208, "Accept &&Remote")),
|
|
503
503
|
run: async () => this.replace(true)
|
|
504
504
|
}, {
|
|
505
|
-
label: singleConflictResource ? ( localize(
|
|
505
|
+
label: singleConflictResource ? ( localize(25209, "Accept &&Local {0}", singleConflictResource)) : ( localize(25210, "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
|
+
25211,
|
|
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(25212, "Clear")),
|
|
550
|
+
primaryButton: ( localize(25213, "&&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(25214, "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(25215, "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
|
+
25216,
|
|
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(25217, "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(25218, "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(25219, "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(25220, "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(25221, "Sign in with {0}", providerName)),
|
|
779
779
|
authenticationProvider
|
|
780
780
|
});
|
|
781
781
|
}
|