@codingame/monaco-vscode-edit-sessions-service-override 9.0.2 → 10.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 +2 -2
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.js +70 -79
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsFileSystemProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.js +14 -15
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsViews.js +13 -13
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessions.js +3 -3
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsLogService.js +1 -1
- package/vscode/src/vs/workbench/contrib/editSessions/common/workspaceStateSync.js +5 -7
- package/vscode/src/vs/workbench/services/workspaces/common/editSessionIdentityService.js +0 -1
- package/vscode/src/vs/workbench/services/workspaces/common/workspaceIdentityService.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-edit-sessions-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"vscode": "npm:@codingame/monaco-vscode-api@
|
|
29
|
+
"vscode": "npm:@codingame/monaco-vscode-api@10.0.0"
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -2,7 +2,6 @@ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
|
2
2
|
import { Disposable, MutableDisposable, DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
3
|
import { Extensions as Extensions$1 } from 'vscode/vscode/vs/workbench/common/contributions';
|
|
4
4
|
import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
|
|
5
|
-
import { ShutdownReason, LifecyclePhase } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle';
|
|
6
5
|
import { ILifecycleService } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
|
|
7
6
|
import { registerAction2, Action2, MenuRegistry, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
|
|
8
7
|
import { localize2, localize } from 'vscode/vscode/vs/nls';
|
|
@@ -10,17 +9,15 @@ import { EDIT_SESSION_SYNC_CATEGORY, EDIT_SESSIONS_SHOW_VIEW, EDIT_SESSIONS_PEND
|
|
|
10
9
|
import { IEditSessionsStorageService, IEditSessionsLogService } from 'vscode/vscode/vs/workbench/contrib/editSessions/common/editSessions.service';
|
|
11
10
|
import { ISCMService } from 'vscode/vscode/vs/workbench/contrib/scm/common/scm.service';
|
|
12
11
|
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
|
|
13
|
-
import { WorkbenchState } from 'vscode/vscode/vs/platform/workspace/common/workspace';
|
|
14
12
|
import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace.service';
|
|
15
13
|
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
16
14
|
import { basename, joinPath, relativePath } from 'vscode/vscode/vs/base/common/resources';
|
|
17
15
|
import { encodeBase64 } from 'vscode/vscode/vs/base/common/buffer';
|
|
18
16
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
19
|
-
import { ProgressLocation } from 'vscode/vscode/vs/platform/progress/common/progress';
|
|
20
17
|
import { IProgressService } from 'vscode/vscode/vs/platform/progress/common/progress.service';
|
|
21
18
|
import './editSessionsStorageService.js';
|
|
22
|
-
import 'vscode/vscode/vs/platform/instantiation/common/
|
|
23
|
-
import { UserDataSyncStoreError
|
|
19
|
+
import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
|
|
20
|
+
import { UserDataSyncStoreError } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync';
|
|
24
21
|
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
25
22
|
import 'vscode/vscode/vs/platform/notification/common/notification';
|
|
26
23
|
import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification.service';
|
|
@@ -42,9 +39,8 @@ import { IsWebContext } from 'vscode/vscode/vs/platform/contextkey/common/contex
|
|
|
42
39
|
import { isProposedApiEnabled } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
|
|
43
40
|
import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
44
41
|
import '../common/editSessionsLogService.js';
|
|
45
|
-
import {
|
|
42
|
+
import { Extensions } from 'vscode/vscode/vs/workbench/common/views';
|
|
46
43
|
import { IViewsService } from 'vscode/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
47
|
-
import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
|
|
48
44
|
import { ViewPaneContainer } from 'vscode/vscode/vs/workbench/browser/parts/views/viewPaneContainer';
|
|
49
45
|
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
50
46
|
import { EditSessionsDataViews } from './editSessionsViews.js';
|
|
@@ -58,7 +54,6 @@ import { IEditSessionIdentityService } from 'vscode/vscode/vs/platform/workspace
|
|
|
58
54
|
import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
|
|
59
55
|
import { IOutputService } from 'vscode/vscode/vs/workbench/services/output/common/output.service';
|
|
60
56
|
import { sha1Hex } from '../../../../base/browser/hash.js';
|
|
61
|
-
import { StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
62
57
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
63
58
|
import { NumberBadge } from 'vscode/vscode/vs/workbench/services/activity/common/activity';
|
|
64
59
|
import { IActivityService } from 'vscode/vscode/vs/workbench/services/activity/common/activity.service';
|
|
@@ -66,8 +61,7 @@ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/commo
|
|
|
66
61
|
import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
|
|
67
62
|
import { CancellationError } from 'vscode/vscode/vs/base/common/errors';
|
|
68
63
|
import { IRemoteAgentService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteAgentService.service';
|
|
69
|
-
import {
|
|
70
|
-
import { IPaneCompositePartService } from 'vscode/vscode/vs/workbench/services/panecomposite/browser/panecomposite.service';
|
|
64
|
+
import { IExtensionsWorkbenchService } from 'vscode/vscode/vs/workbench/contrib/extensions/common/extensions.service';
|
|
71
65
|
import { WorkspaceStateSynchroniser } from '../common/workspaceStateSync.js';
|
|
72
66
|
import { IUserDataProfilesService } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile.service';
|
|
73
67
|
import { IRequestService } from 'vscode/vscode/vs/platform/request/common/request.service';
|
|
@@ -79,39 +73,36 @@ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
|
|
|
79
73
|
var EditSessionsContribution_1;
|
|
80
74
|
const continueWorkingOnCommand = {
|
|
81
75
|
id: '_workbench.editSessions.actions.continueEditSession',
|
|
82
|
-
title: ( localize2(
|
|
76
|
+
title: ( localize2(2405, 'Continue Working On...')),
|
|
83
77
|
precondition: ( (WorkspaceFolderCountContext.notEqualsTo('0'))),
|
|
84
78
|
f1: true
|
|
85
79
|
};
|
|
86
80
|
const openLocalFolderCommand = {
|
|
87
81
|
id: '_workbench.editSessions.actions.continueEditSession.openLocalFolder',
|
|
88
|
-
title: ( localize2(
|
|
82
|
+
title: ( localize2(2406, 'Open In Local Folder')),
|
|
89
83
|
category: EDIT_SESSION_SYNC_CATEGORY,
|
|
90
84
|
precondition: ( (ContextKeyExpr.and( (IsWebContext.toNegated()), VirtualWorkspaceContext)))
|
|
91
85
|
};
|
|
92
86
|
const showOutputChannelCommand = {
|
|
93
87
|
id: 'workbench.editSessions.actions.showOutputChannel',
|
|
94
|
-
title: ( localize2(
|
|
88
|
+
title: ( localize2(2407, "Show Log")),
|
|
95
89
|
category: EDIT_SESSION_SYNC_CATEGORY
|
|
96
90
|
};
|
|
97
91
|
const installAdditionalContinueOnOptionsCommand = {
|
|
98
92
|
id: 'workbench.action.continueOn.extensions',
|
|
99
|
-
title: ( localize(
|
|
93
|
+
title: ( localize(2408, 'Install additional development environment options')),
|
|
100
94
|
};
|
|
101
95
|
registerAction2(class extends Action2 {
|
|
102
96
|
constructor() {
|
|
103
97
|
super({ ...installAdditionalContinueOnOptionsCommand, f1: false });
|
|
104
98
|
}
|
|
105
99
|
async run(accessor) {
|
|
106
|
-
|
|
107
|
-
const viewlet = await paneCompositePartService.openPaneComposite(VIEWLET_ID, ViewContainerLocation.Sidebar, true);
|
|
108
|
-
const view = viewlet?.getViewPaneContainer();
|
|
109
|
-
view?.search('@tag:continueOn');
|
|
100
|
+
return accessor.get(IExtensionsWorkbenchService).openSearch('@tag:continueOn');
|
|
110
101
|
}
|
|
111
102
|
});
|
|
112
|
-
const resumeProgressOptionsTitle = `[${( localize(
|
|
103
|
+
const resumeProgressOptionsTitle = `[${( localize(2409, 'Resuming working changes...'))}](command:${showOutputChannelCommand.id})`;
|
|
113
104
|
const resumeProgressOptions = {
|
|
114
|
-
location:
|
|
105
|
+
location: 10 ,
|
|
115
106
|
type: 'syncing',
|
|
116
107
|
};
|
|
117
108
|
const queryParamName = 'editSessionId';
|
|
@@ -189,8 +180,8 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
189
180
|
this.registerContributedEditSessionOptions();
|
|
190
181
|
this._register(this.fileService.registerProvider(EditSessionsFileSystemProvider.SCHEMA, ( (new EditSessionsFileSystemProvider(this.editSessionsStorageService)))));
|
|
191
182
|
this.lifecycleService.onWillShutdown((e) => {
|
|
192
|
-
if (e.reason !==
|
|
193
|
-
e.join(this.autoStoreEditSession(), { id: 'autoStoreWorkingChanges', label: ( localize(
|
|
183
|
+
if (e.reason !== 3 && this.editSessionsStorageService.isSignedIn && this.configurationService.getValue('workbench.experimental.cloudChanges.autoStore') === 'onShutdown' && !isWeb) {
|
|
184
|
+
e.join(this.autoStoreEditSession(), { id: 'autoStoreWorkingChanges', label: ( localize(2410, 'Storing current working changes...')) });
|
|
194
185
|
}
|
|
195
186
|
});
|
|
196
187
|
this._register(this.editSessionsStorageService.onDidSignIn(() => this.updateAccountsMenuBadge()));
|
|
@@ -207,7 +198,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
207
198
|
await this.progressService.withProgress(resumeProgressOptions, async (progress) => await this.resumeEditSession(undefined, true, undefined, undefined, progress));
|
|
208
199
|
}
|
|
209
200
|
else if (shouldAutoResumeOnReload) {
|
|
210
|
-
const hasApplicationLaunchedFromContinueOnFlow = this.storageService.getBoolean(EditSessionsContribution_1.APPLICATION_LAUNCHED_VIA_CONTINUE_ON_STORAGE_KEY,
|
|
201
|
+
const hasApplicationLaunchedFromContinueOnFlow = this.storageService.getBoolean(EditSessionsContribution_1.APPLICATION_LAUNCHED_VIA_CONTINUE_ON_STORAGE_KEY, -1 , false);
|
|
211
202
|
this.logService.info(`Prompting to enable cloud changes, has application previously launched from Continue On flow: ${hasApplicationLaunchedFromContinueOnFlow}`);
|
|
212
203
|
const handlePendingEditSessions = () => {
|
|
213
204
|
this.logService.info('Showing badge to enable cloud changes in accounts menu...');
|
|
@@ -217,14 +208,14 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
217
208
|
disposable.dispose();
|
|
218
209
|
this.logService.info('Showing badge to enable cloud changes in accounts menu succeeded, resuming cloud changes...');
|
|
219
210
|
await this.progressService.withProgress(resumeProgressOptions, async (progress) => await this.resumeEditSession(undefined, true, undefined, undefined, progress));
|
|
220
|
-
this.storageService.remove(EditSessionsContribution_1.APPLICATION_LAUNCHED_VIA_CONTINUE_ON_STORAGE_KEY,
|
|
211
|
+
this.storageService.remove(EditSessionsContribution_1.APPLICATION_LAUNCHED_VIA_CONTINUE_ON_STORAGE_KEY, -1 );
|
|
221
212
|
this.environmentService.continueOn = undefined;
|
|
222
213
|
});
|
|
223
214
|
};
|
|
224
215
|
if ((this.environmentService.continueOn !== undefined) &&
|
|
225
216
|
!this.editSessionsStorageService.isSignedIn &&
|
|
226
217
|
hasApplicationLaunchedFromContinueOnFlow === false) {
|
|
227
|
-
this.storageService.store(EditSessionsContribution_1.APPLICATION_LAUNCHED_VIA_CONTINUE_ON_STORAGE_KEY, true,
|
|
218
|
+
this.storageService.store(EditSessionsContribution_1.APPLICATION_LAUNCHED_VIA_CONTINUE_ON_STORAGE_KEY, true, -1 , 1 );
|
|
228
219
|
this.logService.info('Prompting to enable cloud changes...');
|
|
229
220
|
await this.editSessionsStorageService.initialize('read');
|
|
230
221
|
if (this.editSessionsStorageService.isSignedIn) {
|
|
@@ -248,15 +239,15 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
248
239
|
if (this.editSessionsStorageService.isSignedIn) {
|
|
249
240
|
return this.accountsMenuBadgeDisposable.clear();
|
|
250
241
|
}
|
|
251
|
-
const badge = ( (new NumberBadge(1, () => ( localize(
|
|
242
|
+
const badge = ( (new NumberBadge(1, () => ( localize(2411, 'Check for pending cloud changes')))));
|
|
252
243
|
this.accountsMenuBadgeDisposable.value = this.activityService.showAccountsActivity({ badge });
|
|
253
244
|
}
|
|
254
245
|
async autoStoreEditSession() {
|
|
255
246
|
const cancellationTokenSource = ( (new CancellationTokenSource()));
|
|
256
247
|
await this.progressService.withProgress({
|
|
257
|
-
location:
|
|
248
|
+
location: 10 ,
|
|
258
249
|
type: 'syncing',
|
|
259
|
-
title: ( localize(
|
|
250
|
+
title: ( localize(2412, 'Storing working changes...'))
|
|
260
251
|
}, async () => this.storeEditSession(false, cancellationTokenSource.token), () => {
|
|
261
252
|
cancellationTokenSource.cancel();
|
|
262
253
|
cancellationTokenSource.dispose();
|
|
@@ -272,7 +263,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
272
263
|
))),
|
|
273
264
|
icon: EDIT_SESSIONS_VIEW_ICON,
|
|
274
265
|
hideIfEmpty: true
|
|
275
|
-
},
|
|
266
|
+
}, 0 , { doNotRegisterOpenCommand: true });
|
|
276
267
|
this._register(this.instantiationService.createInstance(EditSessionsDataViews, container));
|
|
277
268
|
}
|
|
278
269
|
registerActions() {
|
|
@@ -300,7 +291,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
300
291
|
constructor() {
|
|
301
292
|
super({
|
|
302
293
|
id: 'workbench.editSessions.actions.showEditSessions',
|
|
303
|
-
title: ( localize2(
|
|
294
|
+
title: ( localize2(2413, 'Show Cloud Changes')),
|
|
304
295
|
category: EDIT_SESSION_SYNC_CATEGORY,
|
|
305
296
|
f1: true
|
|
306
297
|
});
|
|
@@ -334,10 +325,10 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
334
325
|
const cancellationTokenSource = ( (new CancellationTokenSource()));
|
|
335
326
|
try {
|
|
336
327
|
ref = await that.progressService.withProgress({
|
|
337
|
-
location:
|
|
328
|
+
location: 15 ,
|
|
338
329
|
cancellable: true,
|
|
339
330
|
type: 'syncing',
|
|
340
|
-
title: ( localize(
|
|
331
|
+
title: ( localize(2414, 'Storing your working changes...'))
|
|
341
332
|
}, async () => {
|
|
342
333
|
const ref = await that.storeEditSession(false, cancellationTokenSource.token);
|
|
343
334
|
if (ref !== undefined) {
|
|
@@ -386,7 +377,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
386
377
|
constructor() {
|
|
387
378
|
super({
|
|
388
379
|
id: 'workbench.editSessions.actions.resumeLatest',
|
|
389
|
-
title: ( localize2(
|
|
380
|
+
title: ( localize2(2415, 'Resume Latest Changes from Cloud')),
|
|
390
381
|
category: EDIT_SESSION_SYNC_CATEGORY,
|
|
391
382
|
f1: true,
|
|
392
383
|
});
|
|
@@ -399,7 +390,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
399
390
|
constructor() {
|
|
400
391
|
super({
|
|
401
392
|
id: 'workbench.editSessions.actions.resumeFromSerializedPayload',
|
|
402
|
-
title: ( localize2(
|
|
393
|
+
title: ( localize2(2416, 'Resume Changes from Serialized Data')),
|
|
403
394
|
category: 'Developer',
|
|
404
395
|
f1: true,
|
|
405
396
|
});
|
|
@@ -419,7 +410,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
419
410
|
constructor() {
|
|
420
411
|
super({
|
|
421
412
|
id: 'workbench.editSessions.actions.storeCurrent',
|
|
422
|
-
title: ( localize2(
|
|
413
|
+
title: ( localize2(2417, 'Store Working Changes in Cloud')),
|
|
423
414
|
category: EDIT_SESSION_SYNC_CATEGORY,
|
|
424
415
|
f1: true,
|
|
425
416
|
});
|
|
@@ -427,8 +418,8 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
427
418
|
async run(accessor) {
|
|
428
419
|
const cancellationTokenSource = ( (new CancellationTokenSource()));
|
|
429
420
|
await that.progressService.withProgress({
|
|
430
|
-
location:
|
|
431
|
-
title: ( localize(
|
|
421
|
+
location: 15 ,
|
|
422
|
+
title: ( localize(2418, 'Storing working changes...'))
|
|
432
423
|
}, async () => {
|
|
433
424
|
that.telemetryService.publicLog2('editSessions.store');
|
|
434
425
|
await that.storeEditSession(true, cancellationTokenSource.token);
|
|
@@ -441,7 +432,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
441
432
|
}
|
|
442
433
|
async resumeEditSession(ref, silent, forceApplyUnrelatedChange, applyPartialMatch, progress, serializedData) {
|
|
443
434
|
await this.remoteAgentService.getEnvironment();
|
|
444
|
-
if (this.contextService.getWorkbenchState() ===
|
|
435
|
+
if (this.contextService.getWorkbenchState() === 1 ) {
|
|
445
436
|
return;
|
|
446
437
|
}
|
|
447
438
|
this.logService.info(ref !== undefined ? `Resuming changes from cloud with ref ${ref}...` : 'Checking for pending cloud changes...');
|
|
@@ -450,14 +441,14 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
450
441
|
}
|
|
451
442
|
this.telemetryService.publicLog2('editSessions.resume');
|
|
452
443
|
performance.mark('code/willResumeEditSessionFromIdentifier');
|
|
453
|
-
progress?.report({ message: ( localize(
|
|
444
|
+
progress?.report({ message: ( localize(2419, 'Checking for pending cloud changes...')) });
|
|
454
445
|
const data = serializedData ? { content: serializedData, ref: '' } : await this.editSessionsStorageService.read('editSessions', ref);
|
|
455
446
|
if (!data) {
|
|
456
447
|
if (ref === undefined && !silent) {
|
|
457
|
-
this.notificationService.info(( localize(
|
|
448
|
+
this.notificationService.info(( localize(2420, 'There are no changes to resume from the cloud.')));
|
|
458
449
|
}
|
|
459
450
|
else if (ref !== undefined) {
|
|
460
|
-
this.notificationService.warn(( localize(
|
|
451
|
+
this.notificationService.warn(( localize(2421, 'Could not resume changes from the cloud for ID {0}.', ref)));
|
|
461
452
|
}
|
|
462
453
|
this.logService.info(ref !== undefined ? `Aborting resuming changes from cloud as no edit session content is available to be applied from ref ${ref}.` : `Aborting resuming edit session as no edit session content is available to be applied`);
|
|
463
454
|
return;
|
|
@@ -467,7 +458,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
467
458
|
ref = data.ref;
|
|
468
459
|
if (editSession.version > EditSessionSchemaVersion) {
|
|
469
460
|
this.notificationService.error(( localize(
|
|
470
|
-
|
|
461
|
+
2422,
|
|
471
462
|
"Please upgrade to a newer version of {0} to resume your working changes from the cloud.",
|
|
472
463
|
this.productService.nameLong
|
|
473
464
|
)));
|
|
@@ -484,12 +475,12 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
484
475
|
type: Severity$1.Warning,
|
|
485
476
|
message: conflictingChanges.length > 1 ?
|
|
486
477
|
( localize(
|
|
487
|
-
|
|
478
|
+
2423,
|
|
488
479
|
'Resuming your working changes from the cloud will overwrite the following {0} files. Do you want to proceed?',
|
|
489
480
|
conflictingChanges.length
|
|
490
481
|
)) :
|
|
491
482
|
( localize(
|
|
492
|
-
|
|
483
|
+
2424,
|
|
493
484
|
'Resuming your working changes from the cloud will overwrite {0}. Do you want to proceed?',
|
|
494
485
|
basename(conflictingChanges[0].uri)
|
|
495
486
|
)),
|
|
@@ -515,7 +506,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
515
506
|
}
|
|
516
507
|
catch (ex) {
|
|
517
508
|
this.logService.error('Failed to resume edit session, reason: ', ( (ex.toString())));
|
|
518
|
-
this.notificationService.error(( localize(
|
|
509
|
+
this.notificationService.error(( localize(2425, "Failed to resume your working changes from the cloud.")));
|
|
519
510
|
}
|
|
520
511
|
performance.mark('code/didResumeEditSessionFromIdentifier');
|
|
521
512
|
}
|
|
@@ -544,9 +535,9 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
544
535
|
this.configurationService.getValue('workbench.experimental.cloudChanges.partialMatches.enabled') === true) {
|
|
545
536
|
if (!applyPartialMatch) {
|
|
546
537
|
this.notificationService.prompt(Severity$1.Info, ( localize(
|
|
547
|
-
|
|
538
|
+
2426,
|
|
548
539
|
'You have pending working changes in the cloud for this workspace. Would you like to resume them?'
|
|
549
|
-
)), [{ label: ( localize(
|
|
540
|
+
)), [{ label: ( localize(2427, 'Resume')), run: () => this.resumeEditSession(ref, false, undefined, true) }]);
|
|
550
541
|
}
|
|
551
542
|
else {
|
|
552
543
|
folderRoot = f;
|
|
@@ -629,7 +620,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
629
620
|
const contents = encodeBase64((await this.fileService.readFile(uri)).value);
|
|
630
621
|
editSessionSize += contents.length;
|
|
631
622
|
if (editSessionSize > this.editSessionsStorageService.SIZE_LIMIT) {
|
|
632
|
-
this.notificationService.error(( localize(
|
|
623
|
+
this.notificationService.error(( localize(2428, 'Your working changes exceed the size limit and cannot be stored.')));
|
|
633
624
|
return undefined;
|
|
634
625
|
}
|
|
635
626
|
workingChanges.push({ type: ChangeType.Addition, fileType: FileType.File, contents: contents, relativeFilePath: relativeFilePath });
|
|
@@ -649,7 +640,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
649
640
|
this.logService.info('Skipped storing working changes in the cloud as there are no edits to store.');
|
|
650
641
|
if (fromStoreCommand) {
|
|
651
642
|
this.notificationService.info(( localize(
|
|
652
|
-
|
|
643
|
+
2429,
|
|
653
644
|
'Skipped storing working changes in the cloud as there are no edits to store.'
|
|
654
645
|
)));
|
|
655
646
|
}
|
|
@@ -666,13 +657,13 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
666
657
|
this.logService.error(`Failed to store edit session, reason: `, ( (ex.toString())));
|
|
667
658
|
if (ex instanceof UserDataSyncStoreError) {
|
|
668
659
|
switch (ex.code) {
|
|
669
|
-
case
|
|
660
|
+
case "TooLarge" :
|
|
670
661
|
this.telemetryService.publicLog2('editSessions.upload.failed', { reason: 'TooLarge' });
|
|
671
|
-
this.notificationService.error(( localize(
|
|
662
|
+
this.notificationService.error(( localize(2428, 'Your working changes exceed the size limit and cannot be stored.')));
|
|
672
663
|
break;
|
|
673
664
|
default:
|
|
674
665
|
this.telemetryService.publicLog2('editSessions.upload.failed', { reason: 'unknown' });
|
|
675
|
-
this.notificationService.error(( localize(
|
|
666
|
+
this.notificationService.error(( localize(2430, 'Your working changes cannot be stored.')));
|
|
676
667
|
break;
|
|
677
668
|
}
|
|
678
669
|
}
|
|
@@ -704,11 +695,11 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
704
695
|
if (this.hasEditSession()) {
|
|
705
696
|
const disposables = ( (new DisposableStore()));
|
|
706
697
|
const quickpick = disposables.add(this.quickInputService.createQuickPick());
|
|
707
|
-
quickpick.placeholder = ( localize(
|
|
698
|
+
quickpick.placeholder = ( localize(2431, "Select whether to bring your working changes with you"));
|
|
708
699
|
quickpick.ok = false;
|
|
709
700
|
quickpick.ignoreFocusOut = true;
|
|
710
|
-
const withCloudChanges = { label: ( localize(
|
|
711
|
-
const withoutCloudChanges = { label: ( localize(
|
|
701
|
+
const withCloudChanges = { label: ( localize(2432, "Yes, continue with my working changes")) };
|
|
702
|
+
const withoutCloudChanges = { label: ( localize(2433, "No, continue without my working changes")) };
|
|
712
703
|
quickpick.items = [withCloudChanges, withoutCloudChanges];
|
|
713
704
|
const continueWithCloudChanges = await ( (new Promise((resolve, reject) => {
|
|
714
705
|
disposables.add(quickpick.onDidAccept(() => {
|
|
@@ -801,7 +792,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
801
792
|
}
|
|
802
793
|
async run(accessor) {
|
|
803
794
|
const selection = await that.fileDialogService.showOpenDialog({
|
|
804
|
-
title: ( localize(
|
|
795
|
+
title: ( localize(2434, 'Select a local folder to continue working in')),
|
|
805
796
|
canSelectFolders: true,
|
|
806
797
|
canSelectMany: false,
|
|
807
798
|
canSelectFiles: false,
|
|
@@ -815,17 +806,17 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
815
806
|
}
|
|
816
807
|
}));
|
|
817
808
|
if (getVirtualWorkspaceLocation(this.contextService.getWorkspace()) !== undefined && isNative) {
|
|
818
|
-
this.generateStandaloneOptionCommand(openLocalFolderCommand.id, ( localize(
|
|
809
|
+
this.generateStandaloneOptionCommand(openLocalFolderCommand.id, ( localize(2435, 'Continue Working in Existing Local Folder')), undefined, openLocalFolderCommand.precondition, undefined);
|
|
819
810
|
}
|
|
820
811
|
}
|
|
821
812
|
async pickContinueEditSessionDestination() {
|
|
822
813
|
const disposables = ( (new DisposableStore()));
|
|
823
814
|
const quickPick = disposables.add(this.quickInputService.createQuickPick({ useSeparators: true }));
|
|
824
|
-
const workspaceContext = this.contextService.getWorkbenchState() ===
|
|
815
|
+
const workspaceContext = this.contextService.getWorkbenchState() === 2
|
|
825
816
|
? this.contextService.getWorkspace().folders[0].name
|
|
826
817
|
: ( (this.contextService.getWorkspace().folders.map((folder) => folder.name))).join(', ');
|
|
827
818
|
quickPick.placeholder = ( localize(
|
|
828
|
-
|
|
819
|
+
2436,
|
|
829
820
|
"Select a development environment to continue working on {0} in",
|
|
830
821
|
`'${workspaceContext}'`
|
|
831
822
|
));
|
|
@@ -886,7 +877,7 @@ let EditSessionsContribution = class EditSessionsContribution extends Disposable
|
|
|
886
877
|
createPickItems() {
|
|
887
878
|
const items = [...this.continueEditSessionOptions].filter((option) => option.when === undefined || this.contextKeyService.contextMatchesRules(option.when));
|
|
888
879
|
if (getVirtualWorkspaceLocation(this.contextService.getWorkspace()) !== undefined && isNative) {
|
|
889
|
-
items.push(( (new ContinueEditSessionItem('$(folder) ' + ( localize(
|
|
880
|
+
items.push(( (new ContinueEditSessionItem('$(folder) ' + ( localize(2437, 'Open in Local Folder')), openLocalFolderCommand.id, ( localize(2438, 'Built-in'))))));
|
|
890
881
|
}
|
|
891
882
|
const sortedItems = items.sort((item1, item2) => item1.label.localeCompare(item2.label));
|
|
892
883
|
return sortedItems.concat({ type: 'separator' }, ( (new ContinueEditSessionItem(
|
|
@@ -937,7 +928,7 @@ class ContinueEditSessionItem {
|
|
|
937
928
|
if (documentation !== undefined) {
|
|
938
929
|
this.buttons = [{
|
|
939
930
|
iconClass: infoButtonClass,
|
|
940
|
-
tooltip: ( localize(
|
|
931
|
+
tooltip: ( localize(2439, 'Learn More')),
|
|
941
932
|
}];
|
|
942
933
|
}
|
|
943
934
|
}
|
|
@@ -946,7 +937,7 @@ const continueEditSessionExtPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
946
937
|
extensionPoint: 'continueEditSession',
|
|
947
938
|
jsonSchema: {
|
|
948
939
|
description: ( localize(
|
|
949
|
-
|
|
940
|
+
2440,
|
|
950
941
|
'Contributes options for continuing the current edit session in a different environment'
|
|
951
942
|
)),
|
|
952
943
|
type: 'array',
|
|
@@ -955,35 +946,35 @@ const continueEditSessionExtPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
955
946
|
properties: {
|
|
956
947
|
command: {
|
|
957
948
|
description: ( localize(
|
|
958
|
-
|
|
949
|
+
2441,
|
|
959
950
|
'Identifier of the command to execute. The command must be declared in the \'commands\'-section and return a URI representing a different environment where the current edit session can be continued.'
|
|
960
951
|
)),
|
|
961
952
|
type: 'string'
|
|
962
953
|
},
|
|
963
954
|
group: {
|
|
964
|
-
description: ( localize(
|
|
955
|
+
description: ( localize(2442, 'Group into which this item belongs.')),
|
|
965
956
|
type: 'string'
|
|
966
957
|
},
|
|
967
958
|
qualifiedName: {
|
|
968
959
|
description: ( localize(
|
|
969
|
-
|
|
960
|
+
2443,
|
|
970
961
|
'A fully qualified name for this item which is used for display in menus.'
|
|
971
962
|
)),
|
|
972
963
|
type: 'string'
|
|
973
964
|
},
|
|
974
965
|
description: {
|
|
975
966
|
description: ( localize(
|
|
976
|
-
|
|
967
|
+
2444,
|
|
977
968
|
"The url, or a command that returns the url, to the option's documentation page."
|
|
978
969
|
)),
|
|
979
970
|
type: 'string'
|
|
980
971
|
},
|
|
981
972
|
remoteGroup: {
|
|
982
|
-
description: ( localize(
|
|
973
|
+
description: ( localize(2445, 'Group into which this item belongs in the remote indicator.')),
|
|
983
974
|
type: 'string'
|
|
984
975
|
},
|
|
985
976
|
when: {
|
|
986
|
-
description: ( localize(
|
|
977
|
+
description: ( localize(2446, 'Condition which must be true to show this item.')),
|
|
987
978
|
type: 'string'
|
|
988
979
|
}
|
|
989
980
|
},
|
|
@@ -992,7 +983,7 @@ const continueEditSessionExtPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
992
983
|
}
|
|
993
984
|
});
|
|
994
985
|
const workbenchRegistry = ( (Registry.as(Extensions$1.Workbench)));
|
|
995
|
-
workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution,
|
|
986
|
+
workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution, 3 );
|
|
996
987
|
( (Registry.as(Extensions$2.Configuration))).registerConfiguration({
|
|
997
988
|
...workbenchConfigurationNodeBase,
|
|
998
989
|
'properties': {
|
|
@@ -1000,16 +991,16 @@ workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution, Lifecy
|
|
|
1000
991
|
enum: ['onShutdown', 'off'],
|
|
1001
992
|
enumDescriptions: [
|
|
1002
993
|
( localize(
|
|
1003
|
-
|
|
994
|
+
2447,
|
|
1004
995
|
"Automatically store current working changes in the cloud on window close."
|
|
1005
996
|
)),
|
|
1006
|
-
( localize(
|
|
997
|
+
( localize(2448, "Never attempt to automatically store working changes in the cloud."))
|
|
1007
998
|
],
|
|
1008
999
|
'type': 'string',
|
|
1009
1000
|
'tags': ['experimental', 'usesOnlineServices'],
|
|
1010
1001
|
'default': 'off',
|
|
1011
1002
|
'markdownDescription': ( localize(
|
|
1012
|
-
|
|
1003
|
+
2449,
|
|
1013
1004
|
"Controls whether to automatically store available working changes in the cloud for the current workspace. This setting has no effect in the web."
|
|
1014
1005
|
)),
|
|
1015
1006
|
},
|
|
@@ -1017,16 +1008,16 @@ workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution, Lifecy
|
|
|
1017
1008
|
enum: ['onReload', 'off'],
|
|
1018
1009
|
enumDescriptions: [
|
|
1019
1010
|
( localize(
|
|
1020
|
-
|
|
1011
|
+
2450,
|
|
1021
1012
|
"Automatically resume available working changes from the cloud on window reload."
|
|
1022
1013
|
)),
|
|
1023
|
-
( localize(
|
|
1014
|
+
( localize(2451, "Never attempt to resume working changes from the cloud."))
|
|
1024
1015
|
],
|
|
1025
1016
|
'type': 'string',
|
|
1026
1017
|
'tags': ['usesOnlineServices'],
|
|
1027
1018
|
'default': 'onReload',
|
|
1028
1019
|
'markdownDescription': ( localize(
|
|
1029
|
-
|
|
1020
|
+
2452,
|
|
1030
1021
|
"Controls whether to automatically resume available working changes stored in the cloud for the current workspace."
|
|
1031
1022
|
)),
|
|
1032
1023
|
},
|
|
@@ -1034,11 +1025,11 @@ workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution, Lifecy
|
|
|
1034
1025
|
enum: ['prompt', 'off'],
|
|
1035
1026
|
enumDescriptions: [
|
|
1036
1027
|
( localize(
|
|
1037
|
-
|
|
1028
|
+
2453,
|
|
1038
1029
|
'Prompt the user to sign in to store working changes in the cloud with Continue Working On.'
|
|
1039
1030
|
)),
|
|
1040
1031
|
( localize(
|
|
1041
|
-
|
|
1032
|
+
2454,
|
|
1042
1033
|
'Do not store working changes in the cloud with Continue Working On unless the user has already turned on Cloud Changes.'
|
|
1043
1034
|
))
|
|
1044
1035
|
],
|
|
@@ -1046,7 +1037,7 @@ workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution, Lifecy
|
|
|
1046
1037
|
tags: ['usesOnlineServices'],
|
|
1047
1038
|
default: 'prompt',
|
|
1048
1039
|
markdownDescription: ( localize(
|
|
1049
|
-
|
|
1040
|
+
2455,
|
|
1050
1041
|
'Controls whether to prompt the user to store working changes in the cloud when using Continue Working On.'
|
|
1051
1042
|
))
|
|
1052
1043
|
},
|
|
@@ -1055,7 +1046,7 @@ workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution, Lifecy
|
|
|
1055
1046
|
'tags': ['experimental', 'usesOnlineServices'],
|
|
1056
1047
|
'default': false,
|
|
1057
1048
|
'markdownDescription': ( localize(
|
|
1058
|
-
|
|
1049
|
+
2456,
|
|
1059
1050
|
"Controls whether to surface cloud changes which partially match the current session."
|
|
1060
1051
|
))
|
|
1061
1052
|
}
|
package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsFileSystemProvider.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
2
2
|
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
3
|
import { Event } from 'vscode/vscode/vs/base/common/event';
|
|
4
|
-
import {
|
|
4
|
+
import { FileSystemProviderErrorCode, FileType, FilePermission } from 'vscode/vscode/vs/platform/files/common/files';
|
|
5
5
|
import { EDIT_SESSIONS_SCHEME, ChangeType, decodeEditSessionFileContent } from '../common/editSessions.js';
|
|
6
6
|
import { IEditSessionsStorageService } from 'vscode/vscode/vs/workbench/contrib/editSessions/common/editSessions.service';
|
|
7
7
|
import { NotSupportedError } from 'vscode/vscode/vs/base/common/errors';
|
|
@@ -10,7 +10,7 @@ let EditSessionsFileSystemProvider = class EditSessionsFileSystemProvider {
|
|
|
10
10
|
static { this.SCHEMA = EDIT_SESSIONS_SCHEME; }
|
|
11
11
|
constructor(editSessionsStorageService) {
|
|
12
12
|
this.editSessionsStorageService = editSessionsStorageService;
|
|
13
|
-
this.capabilities =
|
|
13
|
+
this.capabilities = 2048 + 2 ;
|
|
14
14
|
this.onDidChangeCapabilities = Event.None;
|
|
15
15
|
this.onDidChangeFile = Event.None;
|
|
16
16
|
}
|
|
@@ -8,7 +8,6 @@ import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/commo
|
|
|
8
8
|
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
|
|
9
9
|
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service';
|
|
10
10
|
import { IQuickInputService } from 'vscode/vscode/vs/platform/quickinput/common/quickInput.service';
|
|
11
|
-
import { StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
12
11
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
13
12
|
import { createSyncHeaders } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync';
|
|
14
13
|
import { IAuthenticationService } from 'vscode/vscode/vs/workbench/services/authentication/common/authentication.service';
|
|
@@ -64,7 +63,7 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
64
63
|
this._lastWrittenResources = ( (new Map()));
|
|
65
64
|
this._lastReadResources = ( (new Map()));
|
|
66
65
|
this._register(this.authenticationService.onDidChangeSessions((e) => this.onDidChangeSessions(e.event)));
|
|
67
|
-
this._register(this.storageService.onDidChangeValue(
|
|
66
|
+
this._register(this.storageService.onDidChangeValue(-1 , EditSessionsWorkbenchService_1.CACHED_SESSION_STORAGE_KEY, this._register(( (new DisposableStore()))))(() => this.onDidChangeStorage()));
|
|
68
67
|
this.registerSignInAction();
|
|
69
68
|
this.registerResetAuthenticationAction();
|
|
70
69
|
this.signedInContext = EDIT_SESSIONS_SIGNED_IN.bindTo(this.contextKeyService);
|
|
@@ -227,13 +226,13 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
227
226
|
return undefined;
|
|
228
227
|
}
|
|
229
228
|
shouldAttemptEditSessionInit() {
|
|
230
|
-
return isWeb && this.storageService.isNew(
|
|
229
|
+
return isWeb && this.storageService.isNew(-1 ) && this.storageService.isNew(1 );
|
|
231
230
|
}
|
|
232
231
|
async getAccountPreference(reason) {
|
|
233
232
|
const disposables = ( (new DisposableStore()));
|
|
234
233
|
const quickpick = disposables.add(this.quickInputService.createQuickPick({ useSeparators: true }));
|
|
235
234
|
quickpick.ok = false;
|
|
236
|
-
quickpick.placeholder = reason === 'read' ? ( localize(
|
|
235
|
+
quickpick.placeholder = reason === 'read' ? ( localize(2394, "Select an account to restore your working changes from the cloud")) : ( localize(2395, "Select an account to store your working changes in the cloud"));
|
|
237
236
|
quickpick.ignoreFocusOut = true;
|
|
238
237
|
quickpick.items = await this.createQuickpickItems();
|
|
239
238
|
return (
|
|
@@ -254,15 +253,15 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
254
253
|
}
|
|
255
254
|
async createQuickpickItems() {
|
|
256
255
|
const options = [];
|
|
257
|
-
options.push({ type: 'separator', label: ( localize(
|
|
256
|
+
options.push({ type: 'separator', label: ( localize(2396, "Signed In")) });
|
|
258
257
|
const sessions = await this.getAllSessions();
|
|
259
258
|
options.push(...sessions);
|
|
260
|
-
options.push({ type: 'separator', label: ( localize(
|
|
259
|
+
options.push({ type: 'separator', label: ( localize(2397, "Others")) });
|
|
261
260
|
for (const authenticationProvider of (await this.getAuthenticationProviders())) {
|
|
262
261
|
const signedInForProvider = ( (sessions.some(account => account.session.providerId === authenticationProvider.id)));
|
|
263
262
|
if (!signedInForProvider || this.authenticationService.getProvider(authenticationProvider.id).supportsMultipleAccounts) {
|
|
264
263
|
const providerName = this.authenticationService.getProvider(authenticationProvider.id).label;
|
|
265
|
-
options.push({ label: ( localize(
|
|
264
|
+
options.push({ label: ( localize(2398, "Sign in with {0}", providerName)), provider: authenticationProvider });
|
|
266
265
|
}
|
|
267
266
|
}
|
|
268
267
|
return options;
|
|
@@ -305,15 +304,15 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
305
304
|
return configuredAuthenticationProviders.filter(({ id }) => ( (availableAuthenticationProviders.some(provider => provider.id === id))));
|
|
306
305
|
}
|
|
307
306
|
get existingSessionId() {
|
|
308
|
-
return this.storageService.get(EditSessionsWorkbenchService_1.CACHED_SESSION_STORAGE_KEY,
|
|
307
|
+
return this.storageService.get(EditSessionsWorkbenchService_1.CACHED_SESSION_STORAGE_KEY, -1 );
|
|
309
308
|
}
|
|
310
309
|
set existingSessionId(sessionId) {
|
|
311
310
|
this.logService.trace(`Saving authentication session preference for ID ${sessionId}.`);
|
|
312
311
|
if (sessionId === undefined) {
|
|
313
|
-
this.storageService.remove(EditSessionsWorkbenchService_1.CACHED_SESSION_STORAGE_KEY,
|
|
312
|
+
this.storageService.remove(EditSessionsWorkbenchService_1.CACHED_SESSION_STORAGE_KEY, -1 );
|
|
314
313
|
}
|
|
315
314
|
else {
|
|
316
|
-
this.storageService.store(EditSessionsWorkbenchService_1.CACHED_SESSION_STORAGE_KEY, sessionId,
|
|
315
|
+
this.storageService.store(EditSessionsWorkbenchService_1.CACHED_SESSION_STORAGE_KEY, sessionId, -1 , 1 );
|
|
317
316
|
}
|
|
318
317
|
}
|
|
319
318
|
async getExistingSession() {
|
|
@@ -351,7 +350,7 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
351
350
|
constructor() {
|
|
352
351
|
super({
|
|
353
352
|
id,
|
|
354
|
-
title: ( localize(
|
|
353
|
+
title: ( localize(2399, 'Turn on Cloud Changes...')),
|
|
355
354
|
category: EDIT_SESSION_SYNC_CATEGORY,
|
|
356
355
|
precondition: when,
|
|
357
356
|
menu: [{
|
|
@@ -372,7 +371,7 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
372
371
|
group: '2_editSessions',
|
|
373
372
|
command: {
|
|
374
373
|
id,
|
|
375
|
-
title: ( localize(
|
|
374
|
+
title: ( localize(2400, 'Turn on Cloud Changes... (1)')),
|
|
376
375
|
},
|
|
377
376
|
when: ( (ContextKeyExpr.and(
|
|
378
377
|
(ContextKeyExpr.equals(EDIT_SESSIONS_PENDING_KEY, true)),
|
|
@@ -386,7 +385,7 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
386
385
|
constructor() {
|
|
387
386
|
super({
|
|
388
387
|
id: 'workbench.editSessions.actions.resetAuth',
|
|
389
|
-
title: ( localize(
|
|
388
|
+
title: ( localize(2401, 'Turn off Cloud Changes...')),
|
|
390
389
|
category: EDIT_SESSION_SYNC_CATEGORY,
|
|
391
390
|
precondition: ( (ContextKeyExpr.equals(EDIT_SESSIONS_SIGNED_IN_KEY, true))),
|
|
392
391
|
menu: [{
|
|
@@ -401,8 +400,8 @@ let EditSessionsWorkbenchService = class EditSessionsWorkbenchService extends Di
|
|
|
401
400
|
}
|
|
402
401
|
async run() {
|
|
403
402
|
const result = await that.dialogService.confirm({
|
|
404
|
-
message: ( localize(
|
|
405
|
-
checkbox: { label: ( localize(
|
|
403
|
+
message: ( localize(2402, 'Do you want to disable storing working changes in the cloud?')),
|
|
404
|
+
checkbox: { label: ( localize(2403, 'Delete all stored data from the cloud.')) }
|
|
406
405
|
});
|
|
407
406
|
if (result.confirmed) {
|
|
408
407
|
if (result.checkboxChecked) {
|
|
@@ -51,9 +51,9 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
51
51
|
}], container);
|
|
52
52
|
viewsRegistry.registerViewWelcomeContent(viewId, {
|
|
53
53
|
content: ( localize(
|
|
54
|
-
|
|
54
|
+
5722,
|
|
55
55
|
'You have no stored changes in the cloud to display.\n{0}',
|
|
56
|
-
`[${( localize(
|
|
56
|
+
`[${( localize(5723, 'Store Working Changes'))}](command:workbench.editSessions.actions.store)`
|
|
57
57
|
)),
|
|
58
58
|
when: ( (ContextKeyExpr.equals(EDIT_SESSIONS_COUNT_KEY, 0))),
|
|
59
59
|
order: 1
|
|
@@ -62,7 +62,7 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
62
62
|
constructor() {
|
|
63
63
|
super({
|
|
64
64
|
id: 'workbench.editSessions.actions.resume',
|
|
65
|
-
title: ( localize(
|
|
65
|
+
title: ( localize(5724, "Resume Working Changes")),
|
|
66
66
|
icon: Codicon.desktopDownload,
|
|
67
67
|
menu: {
|
|
68
68
|
id: MenuId.ViewItemContext,
|
|
@@ -85,7 +85,7 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
85
85
|
constructor() {
|
|
86
86
|
super({
|
|
87
87
|
id: 'workbench.editSessions.actions.store',
|
|
88
|
-
title: ( localize(
|
|
88
|
+
title: ( localize(5725, "Store Working Changes")),
|
|
89
89
|
icon: Codicon.cloudUpload,
|
|
90
90
|
});
|
|
91
91
|
}
|
|
@@ -99,7 +99,7 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
99
99
|
constructor() {
|
|
100
100
|
super({
|
|
101
101
|
id: 'workbench.editSessions.actions.delete',
|
|
102
|
-
title: ( localize(
|
|
102
|
+
title: ( localize(5726, "Delete Working Changes")),
|
|
103
103
|
icon: Codicon.trash,
|
|
104
104
|
menu: {
|
|
105
105
|
id: MenuId.ViewItemContext,
|
|
@@ -117,11 +117,11 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
117
117
|
const editSessionStorageService = accessor.get(IEditSessionsStorageService);
|
|
118
118
|
const result = await dialogService.confirm({
|
|
119
119
|
message: ( localize(
|
|
120
|
-
|
|
120
|
+
5727,
|
|
121
121
|
'Are you sure you want to permanently delete your working changes with ref {0}?',
|
|
122
122
|
editSessionId
|
|
123
123
|
)),
|
|
124
|
-
detail: ( localize(
|
|
124
|
+
detail: ( localize(5728, ' You cannot undo this action.')),
|
|
125
125
|
type: 'warning',
|
|
126
126
|
title: EDIT_SESSIONS_TITLE.value
|
|
127
127
|
});
|
|
@@ -135,7 +135,7 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
135
135
|
constructor() {
|
|
136
136
|
super({
|
|
137
137
|
id: 'workbench.editSessions.actions.deleteAll',
|
|
138
|
-
title: ( localize(
|
|
138
|
+
title: ( localize(5729, "Delete All Working Changes from Cloud")),
|
|
139
139
|
icon: Codicon.trash,
|
|
140
140
|
menu: {
|
|
141
141
|
id: MenuId.ViewTitle,
|
|
@@ -151,10 +151,10 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
151
151
|
const editSessionStorageService = accessor.get(IEditSessionsStorageService);
|
|
152
152
|
const result = await dialogService.confirm({
|
|
153
153
|
message: ( localize(
|
|
154
|
-
|
|
154
|
+
5730,
|
|
155
155
|
'Are you sure you want to permanently delete all stored changes from the cloud?'
|
|
156
156
|
)),
|
|
157
|
-
detail: ( localize(
|
|
157
|
+
detail: ( localize(5731, ' You cannot undo this action.')),
|
|
158
158
|
type: 'warning',
|
|
159
159
|
title: EDIT_SESSIONS_TITLE.value
|
|
160
160
|
});
|
|
@@ -268,11 +268,11 @@ let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
|
268
268
|
themeIcon: Codicon.file,
|
|
269
269
|
command: {
|
|
270
270
|
id: 'vscode.diff',
|
|
271
|
-
title: ( localize(
|
|
271
|
+
title: ( localize(5732, 'Compare Changes')),
|
|
272
272
|
arguments: [
|
|
273
273
|
localCopy,
|
|
274
274
|
cloudChangeUri,
|
|
275
|
-
`${basename(change.relativeFilePath)} (${( localize(
|
|
275
|
+
`${basename(change.relativeFilePath)} (${( localize(5733, 'Local Copy'))} \u2194 ${( localize(5734, 'Cloud Changes'))})`,
|
|
276
276
|
undefined
|
|
277
277
|
]
|
|
278
278
|
}
|
|
@@ -287,7 +287,7 @@ let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
|
287
287
|
themeIcon: Codicon.file,
|
|
288
288
|
command: {
|
|
289
289
|
id: API_OPEN_EDITOR_COMMAND_ID,
|
|
290
|
-
title: ( localize(
|
|
290
|
+
title: ( localize(5735, 'Open File')),
|
|
291
291
|
arguments: [cloudChangeUri, undefined, undefined]
|
|
292
292
|
}
|
|
293
293
|
};
|
|
@@ -5,7 +5,7 @@ import { RawContextKey } from 'vscode/vscode/vs/platform/contextkey/common/conte
|
|
|
5
5
|
import { registerIcon } from 'vscode/vscode/vs/platform/theme/common/iconRegistry';
|
|
6
6
|
import { StringSHA1 } from 'vscode/vscode/vs/base/common/hash';
|
|
7
7
|
|
|
8
|
-
const EDIT_SESSION_SYNC_CATEGORY = ( localize2(
|
|
8
|
+
const EDIT_SESSION_SYNC_CATEGORY = ( localize2(5710, 'Cloud Changes'));
|
|
9
9
|
var ChangeType;
|
|
10
10
|
( ((function(ChangeType) {
|
|
11
11
|
ChangeType[ChangeType["Addition"] = 1] = "Addition";
|
|
@@ -22,8 +22,8 @@ const EDIT_SESSIONS_PENDING_KEY = 'editSessionsPending';
|
|
|
22
22
|
const EDIT_SESSIONS_PENDING = ( (new RawContextKey(EDIT_SESSIONS_PENDING_KEY, false)));
|
|
23
23
|
const EDIT_SESSIONS_CONTAINER_ID = 'workbench.view.editSessions';
|
|
24
24
|
const EDIT_SESSIONS_DATA_VIEW_ID = 'workbench.views.editSessions.data';
|
|
25
|
-
const EDIT_SESSIONS_TITLE = ( localize2(
|
|
26
|
-
const EDIT_SESSIONS_VIEW_ICON = registerIcon('edit-sessions-view-icon', Codicon.cloudDownload, ( localize(
|
|
25
|
+
const EDIT_SESSIONS_TITLE = ( localize2(5710, 'Cloud Changes'));
|
|
26
|
+
const EDIT_SESSIONS_VIEW_ICON = registerIcon('edit-sessions-view-icon', Codicon.cloudDownload, ( localize(5711, 'View icon of the cloud changes view.')));
|
|
27
27
|
const EDIT_SESSIONS_SHOW_VIEW = ( (new RawContextKey('editSessionsShowView', false)));
|
|
28
28
|
const EDIT_SESSIONS_SCHEME = 'vscode-edit-sessions';
|
|
29
29
|
function decodeEditSessionFileContent(version, content) {
|
|
@@ -9,7 +9,7 @@ import { editSessionsLogId } from './editSessions.js';
|
|
|
9
9
|
let EditSessionsLogService = class EditSessionsLogService extends AbstractLogger {
|
|
10
10
|
constructor(loggerService, environmentService) {
|
|
11
11
|
super();
|
|
12
|
-
this.logger = this._register(loggerService.createLogger(joinPath(environmentService.logsHome, `${editSessionsLogId}.log`), { id: editSessionsLogId, name: ( localize(
|
|
12
|
+
this.logger = this._register(loggerService.createLogger(joinPath(environmentService.logsHome, `${editSessionsLogId}.log`), { id: editSessionsLogId, name: ( localize(2393, "Cloud Changes")) }));
|
|
13
13
|
}
|
|
14
14
|
trace(message, ...args) {
|
|
15
15
|
this.logger.trace(message, ...args);
|
|
@@ -5,12 +5,10 @@ import { stringify, parse } from 'vscode/vscode/vs/base/common/marshalling';
|
|
|
5
5
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
6
6
|
import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment.service';
|
|
7
7
|
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
|
|
8
|
-
import { StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
9
8
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
10
9
|
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
11
10
|
import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
|
|
12
11
|
import { AbstractSynchroniser } from 'vscode/vscode/vs/platform/userDataSync/common/abstractSynchronizer';
|
|
13
|
-
import { SyncResource } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync';
|
|
14
12
|
import { IEditSessionsStorageService } from 'vscode/vscode/vs/workbench/contrib/editSessions/common/editSessions.service';
|
|
15
13
|
import { IWorkspaceIdentityService } from 'vscode/vscode/vs/workbench/services/workspaces/common/workspaceIdentityService.service';
|
|
16
14
|
|
|
@@ -43,7 +41,7 @@ let WorkspaceStateSynchroniser = class WorkspaceStateSynchroniser extends Abstra
|
|
|
43
41
|
constructor(profile, collection, userDataSyncStoreService, logService, fileService, environmentService, telemetryService, configurationService, storageService, uriIdentityService, workspaceIdentityService, editSessionsStorageService) {
|
|
44
42
|
const userDataSyncLocalStoreService = ( new NullBackupStoreService());
|
|
45
43
|
const userDataSyncEnablementService = ( new NullEnablementService());
|
|
46
|
-
super({ syncResource:
|
|
44
|
+
super({ syncResource: "workspaceState" , profile }, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
|
|
47
45
|
this.workspaceIdentityService = workspaceIdentityService;
|
|
48
46
|
this.editSessionsStorageService = editSessionsStorageService;
|
|
49
47
|
this.version = 1;
|
|
@@ -55,13 +53,13 @@ let WorkspaceStateSynchroniser = class WorkspaceStateSynchroniser extends Abstra
|
|
|
55
53
|
return;
|
|
56
54
|
}
|
|
57
55
|
await this.storageService.flush();
|
|
58
|
-
const keys = ( this.storageService.keys(
|
|
56
|
+
const keys = ( this.storageService.keys(1, 0 ));
|
|
59
57
|
if (!keys.length) {
|
|
60
58
|
return;
|
|
61
59
|
}
|
|
62
60
|
const contributedData = {};
|
|
63
61
|
keys.forEach((key) => {
|
|
64
|
-
const data = this.storageService.get(key,
|
|
62
|
+
const data = this.storageService.get(key, 1 );
|
|
65
63
|
if (data) {
|
|
66
64
|
contributedData[key] = data;
|
|
67
65
|
}
|
|
@@ -97,10 +95,10 @@ let WorkspaceStateSynchroniser = class WorkspaceStateSynchroniser extends Abstra
|
|
|
97
95
|
try {
|
|
98
96
|
const value = parse(storage[key]);
|
|
99
97
|
replaceUris(value);
|
|
100
|
-
storageEntries.push({ key, value, scope:
|
|
98
|
+
storageEntries.push({ key, value, scope: 1 , target: 0 });
|
|
101
99
|
}
|
|
102
100
|
catch {
|
|
103
|
-
storageEntries.push({ key, value: storage[key], scope:
|
|
101
|
+
storageEntries.push({ key, value: storage[key], scope: 1 , target: 0 });
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
this.storageService.storeAll(storageEntries, true);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
2
2
|
import { insert } from 'vscode/vscode/vs/base/common/arrays';
|
|
3
3
|
import { toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
4
|
-
import 'vscode/vscode/vs/platform/instantiation/common/extensions';
|
|
5
4
|
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
|
|
6
5
|
import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
7
6
|
import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
@@ -2,7 +2,6 @@ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
|
2
2
|
import { VSBuffer } from 'vscode/vscode/vs/base/common/buffer';
|
|
3
3
|
import { isEqualOrParent, relativePath, joinPath } from 'vscode/vscode/vs/base/common/resources';
|
|
4
4
|
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
5
|
-
import 'vscode/vscode/vs/platform/instantiation/common/extensions';
|
|
6
5
|
import { EditSessionIdentityMatch } from 'vscode/vscode/vs/platform/workspace/common/editSessions';
|
|
7
6
|
import { IEditSessionIdentityService } from 'vscode/vscode/vs/platform/workspace/common/editSessions.service';
|
|
8
7
|
import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace.service';
|