diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json index 9f39f658de2..2ab4a471fb6 100644 --- a/build/lib/i18n.resources.json +++ b/build/lib/i18n.resources.json @@ -279,7 +279,7 @@ "project": "vscode-workbench" }, { - "name": "vs/workbench/contrib/sessionSync", + "name": "vs/workbench/contrib/editSessions", "project": "vscode-workbench" }, { @@ -431,7 +431,7 @@ "project": "vscode-workbench" }, { - "name": "vs/workbench/services/sessionSync", + "name": "vs/workbench/services/editSessions", "project": "vscode-workbench" }, { diff --git a/src/vs/base/common/product.ts b/src/vs/base/common/product.ts index 5dcf73fc4a3..0e9dcdcba96 100644 --- a/src/vs/base/common/product.ts +++ b/src/vs/base/common/product.ts @@ -155,7 +155,7 @@ export interface IProductConfiguration { readonly 'configurationSync.store'?: ConfigurationSyncStore; - readonly 'sessionSync.store'?: Omit; + readonly 'editSessions.store'?: Omit; readonly darwinUniversalAssetId?: string; } diff --git a/src/vs/workbench/contrib/sessionSync/browser/sessionSync.contribution.ts b/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.ts similarity index 94% rename from src/vs/workbench/contrib/sessionSync/browser/sessionSync.contribution.ts rename to src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.ts index a4cf8be1f5f..deb0cb486bc 100644 --- a/src/vs/workbench/contrib/sessionSync/browser/sessionSync.contribution.ts +++ b/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.ts @@ -10,7 +10,7 @@ import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle import { Action2, IAction2Options, registerAction2 } from 'vs/platform/actions/common/actions'; import { ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import { localize } from 'vs/nls'; -import { ISessionSyncWorkbenchService, Change, ChangeType, Folder, EditSession, FileType, EDIT_SESSION_SYNC_CATEGORY, EditSessionSchemaVersion, IEditSessionsLogService } from 'vs/workbench/contrib/sessionSync/common/sessionSync'; +import { IEditSessionsWorkbenchService, Change, ChangeType, Folder, EditSession, FileType, EDIT_SESSION_SYNC_CATEGORY, EditSessionSchemaVersion, IEditSessionsLogService } from 'vs/workbench/contrib/editSessions/common/editSessions'; import { ISCMRepository, ISCMService } from 'vs/workbench/contrib/scm/common/scm'; import { IFileService } from 'vs/platform/files/common/files'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -19,7 +19,7 @@ import { joinPath, relativePath } from 'vs/base/common/resources'; import { VSBuffer } from 'vs/base/common/buffer'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress'; -import { SessionSyncWorkbenchService } from 'vs/workbench/contrib/sessionSync/browser/sessionSyncWorkbenchService'; +import { EditSessionsWorkbenchService } from 'vs/workbench/contrib/editSessions/browser/editSessionsWorkbenchService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { UserDataSyncErrorCode, UserDataSyncStoreError } from 'vs/platform/userDataSync/common/userDataSync'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -38,10 +38,10 @@ import { getVirtualWorkspaceLocation } from 'vs/platform/workspace/common/virtua import { Schemas } from 'vs/base/common/network'; import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys'; import { isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; -import { EditSessionsLogService } from 'vs/workbench/contrib/sessionSync/common/editSessionsLogService'; +import { EditSessionsLogService } from 'vs/workbench/contrib/editSessions/common/editSessionsLogService'; registerSingleton(IEditSessionsLogService, EditSessionsLogService); -registerSingleton(ISessionSyncWorkbenchService, SessionSyncWorkbenchService); +registerSingleton(IEditSessionsWorkbenchService, EditSessionsWorkbenchService); const continueEditSessionCommand: IAction2Options = { id: '_workbench.experimental.editSessions.actions.continueEditSession', @@ -58,13 +58,13 @@ const openLocalFolderCommand: IAction2Options = { const queryParamName = 'editSessionId'; const experimentalSettingName = 'workbench.experimental.editSessions.enabled'; -export class SessionSyncContribution extends Disposable implements IWorkbenchContribution { +export class EditSessionsContribution extends Disposable implements IWorkbenchContribution { private registered = false; private continueEditSessionOptions: ContinueEditSessionItem[] = []; constructor( - @ISessionSyncWorkbenchService private readonly sessionSyncWorkbenchService: ISessionSyncWorkbenchService, + @IEditSessionsWorkbenchService private readonly editSessionsWorkbenchService: IEditSessionsWorkbenchService, @IFileService private readonly fileService: IFileService, @IProgressService private readonly progressService: IProgressService, @IOpenerService private readonly openerService: IOpenerService, @@ -218,7 +218,7 @@ export class SessionSyncContribution extends Disposable implements IWorkbenchCon this.logService.info(`Applying edit session with ref ${ref}.`); } - const data = await this.sessionSyncWorkbenchService.read(ref); + const data = await this.editSessionsWorkbenchService.read(ref); if (!data) { if (ref === undefined) { this.notificationService.info(localize('no edit session', 'There are no edit sessions to apply.')); @@ -284,7 +284,7 @@ export class SessionSyncContribution extends Disposable implements IWorkbenchCon } this.logService.info(`Deleting edit session with ref ${ref} after successfully applying it to current workspace...`); - await this.sessionSyncWorkbenchService.delete(ref); + await this.editSessionsWorkbenchService.delete(ref); this.logService.info(`Deleted edit session with ref ${ref}.`); } catch (ex) { this.logService.error('Failed to apply edit session, reason: ', (ex as Error).toString()); @@ -346,7 +346,7 @@ export class SessionSyncContribution extends Disposable implements IWorkbenchCon try { this.logService.info(`Storing edit session...`); - const ref = await this.sessionSyncWorkbenchService.write(data); + const ref = await this.editSessionsWorkbenchService.write(data); this.logService.info(`Stored edit session with ref ${ref}.`); return ref; } catch (ex) { @@ -362,11 +362,11 @@ export class SessionSyncContribution extends Disposable implements IWorkbenchCon switch (ex.code) { case UserDataSyncErrorCode.TooLarge: // Uploading a payload can fail due to server size limits - this.telemetryService.publicLog2('sessionSync.upload.failed', { reason: 'TooLarge' }); + this.telemetryService.publicLog2('editSessions.upload.failed', { reason: 'TooLarge' }); this.notificationService.error(localize('payload too large', 'Your edit session exceeds the size limit and cannot be stored.')); break; default: - this.telemetryService.publicLog2('sessionSync.upload.failed', { reason: 'unknown' }); + this.telemetryService.publicLog2('editSessions.upload.failed', { reason: 'unknown' }); this.notificationService.error(localize('payload failed', 'Your edit session cannot be stored.')); break; } @@ -502,7 +502,7 @@ const continueEditSessionExtPoint = ExtensionsRegistry.registerExtensionPoint(WorkbenchExtensions.Workbench); -workbenchRegistry.registerWorkbenchContribution(SessionSyncContribution, LifecyclePhase.Restored); +workbenchRegistry.registerWorkbenchContribution(EditSessionsContribution, LifecyclePhase.Restored); Registry.as(Extensions.Configuration).registerConfiguration({ ...workbenchConfigurationNodeBase, diff --git a/src/vs/workbench/contrib/sessionSync/browser/sessionSyncWorkbenchService.ts b/src/vs/workbench/contrib/editSessions/browser/editSessionsWorkbenchService.ts similarity index 93% rename from src/vs/workbench/contrib/sessionSync/browser/sessionSyncWorkbenchService.ts rename to src/vs/workbench/contrib/editSessions/browser/editSessionsWorkbenchService.ts index 1df0ecc3d28..af25b5ee15a 100644 --- a/src/vs/workbench/contrib/sessionSync/browser/sessionSyncWorkbenchService.ts +++ b/src/vs/workbench/contrib/editSessions/browser/editSessionsWorkbenchService.ts @@ -18,20 +18,20 @@ import { IAuthenticationProvider } from 'vs/platform/userDataSync/common/userDat import { UserDataSyncStoreClient } from 'vs/platform/userDataSync/common/userDataSyncStoreService'; import { AuthenticationSession, AuthenticationSessionsChangeEvent, IAuthenticationService } from 'vs/workbench/services/authentication/common/authentication'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; -import { EDIT_SESSIONS_SIGNED_IN, EditSession, EDIT_SESSION_SYNC_CATEGORY, ISessionSyncWorkbenchService, EDIT_SESSIONS_SIGNED_IN_KEY, IEditSessionsLogService } from 'vs/workbench/contrib/sessionSync/common/sessionSync'; +import { EDIT_SESSIONS_SIGNED_IN, EditSession, EDIT_SESSION_SYNC_CATEGORY, IEditSessionsWorkbenchService, EDIT_SESSIONS_SIGNED_IN_KEY, IEditSessionsLogService } from 'vs/workbench/contrib/editSessions/common/editSessions'; type ExistingSession = IQuickPickItem & { session: AuthenticationSession & { providerId: string } }; type AuthenticationProviderOption = IQuickPickItem & { provider: IAuthenticationProvider }; -export class SessionSyncWorkbenchService extends Disposable implements ISessionSyncWorkbenchService { +export class EditSessionsWorkbenchService extends Disposable implements IEditSessionsWorkbenchService { _serviceBrand = undefined; - private serverConfiguration = this.productService['sessionSync.store']; + private serverConfiguration = this.productService['editSessions.store']; private storeClient: UserDataSyncStoreClient | undefined; #authenticationInfo: { sessionId: string; token: string; providerId: string } | undefined; - private static CACHED_SESSION_STORAGE_KEY = 'editSessionSyncAccountPreference'; + private static CACHED_SESSION_STORAGE_KEY = 'editSessionAccountPreference'; private initialized = false; private readonly signedInContext: IContextKey; @@ -286,14 +286,14 @@ export class SessionSyncWorkbenchService extends Disposable implements ISessionS } private get existingSessionId() { - return this.storageService.get(SessionSyncWorkbenchService.CACHED_SESSION_STORAGE_KEY, StorageScope.APPLICATION); + return this.storageService.get(EditSessionsWorkbenchService.CACHED_SESSION_STORAGE_KEY, StorageScope.APPLICATION); } private set existingSessionId(sessionId: string | undefined) { if (sessionId === undefined) { - this.storageService.remove(SessionSyncWorkbenchService.CACHED_SESSION_STORAGE_KEY, StorageScope.APPLICATION); + this.storageService.remove(EditSessionsWorkbenchService.CACHED_SESSION_STORAGE_KEY, StorageScope.APPLICATION); } else { - this.storageService.store(SessionSyncWorkbenchService.CACHED_SESSION_STORAGE_KEY, sessionId, StorageScope.APPLICATION, StorageTarget.MACHINE); + this.storageService.store(EditSessionsWorkbenchService.CACHED_SESSION_STORAGE_KEY, sessionId, StorageScope.APPLICATION, StorageTarget.MACHINE); } } @@ -303,7 +303,7 @@ export class SessionSyncWorkbenchService extends Disposable implements ISessionS } private async onDidChangeStorage(e: IStorageValueChangeEvent): Promise { - if (e.key === SessionSyncWorkbenchService.CACHED_SESSION_STORAGE_KEY + if (e.key === EditSessionsWorkbenchService.CACHED_SESSION_STORAGE_KEY && e.scope === StorageScope.APPLICATION ) { const newSessionId = this.existingSessionId; @@ -335,7 +335,7 @@ export class SessionSyncWorkbenchService extends Disposable implements ISessionS this._register(registerAction2(class ResetEditSessionAuthenticationAction extends Action2 { constructor() { super({ - id: 'workbench.sessionSync.actions.resetAuth', + id: 'workbench.editSessions.actions.resetAuth', title: localize('reset auth', 'Sign Out'), category: EDIT_SESSION_SYNC_CATEGORY, precondition: ContextKeyExpr.equals(EDIT_SESSIONS_SIGNED_IN_KEY, true), diff --git a/src/vs/workbench/contrib/sessionSync/common/sessionSync.ts b/src/vs/workbench/contrib/editSessions/common/editSessions.ts similarity index 91% rename from src/vs/workbench/contrib/sessionSync/common/sessionSync.ts rename to src/vs/workbench/contrib/editSessions/common/editSessions.ts index 538a54a6444..789976a50e5 100644 --- a/src/vs/workbench/contrib/sessionSync/common/sessionSync.ts +++ b/src/vs/workbench/contrib/editSessions/common/editSessions.ts @@ -14,8 +14,8 @@ export const EDIT_SESSION_SYNC_CATEGORY: ILocalizedString = { value: localize('session sync', 'Edit Sessions') }; -export const ISessionSyncWorkbenchService = createDecorator('ISessionSyncWorkbenchService'); -export interface ISessionSyncWorkbenchService { +export const IEditSessionsWorkbenchService = createDecorator('IEditSessionsWorkbenchService'); +export interface IEditSessionsWorkbenchService { _serviceBrand: undefined; read(ref: string | undefined): Promise<{ ref: string; editSession: EditSession } | undefined>; diff --git a/src/vs/workbench/contrib/sessionSync/common/editSessionsLogService.ts b/src/vs/workbench/contrib/editSessions/common/editSessionsLogService.ts similarity index 94% rename from src/vs/workbench/contrib/sessionSync/common/editSessionsLogService.ts rename to src/vs/workbench/contrib/editSessions/common/editSessionsLogService.ts index 2b3b6bca671..a18c9e29304 100644 --- a/src/vs/workbench/contrib/sessionSync/common/editSessionsLogService.ts +++ b/src/vs/workbench/contrib/editSessions/common/editSessionsLogService.ts @@ -5,7 +5,7 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { AbstractLogger, ILogger, ILoggerService } from 'vs/platform/log/common/log'; -import { IEditSessionsLogService } from 'vs/workbench/contrib/sessionSync/common/sessionSync'; +import { IEditSessionsLogService } from 'vs/workbench/contrib/editSessions/common/editSessions'; export class EditSessionsLogService extends AbstractLogger implements IEditSessionsLogService { diff --git a/src/vs/workbench/contrib/sessionSync/test/browser/sessionSync.test.ts b/src/vs/workbench/contrib/editSessions/test/browser/editSessions.test.ts similarity index 84% rename from src/vs/workbench/contrib/sessionSync/test/browser/sessionSync.test.ts rename to src/vs/workbench/contrib/editSessions/test/browser/editSessions.test.ts index 140c068d5d0..b7caca6f077 100644 --- a/src/vs/workbench/contrib/sessionSync/test/browser/sessionSync.test.ts +++ b/src/vs/workbench/contrib/editSessions/test/browser/editSessions.test.ts @@ -10,7 +10,7 @@ import { Schemas } from 'vs/base/common/network'; import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { NullLogService } from 'vs/platform/log/common/log'; -import { SessionSyncContribution } from 'vs/workbench/contrib/sessionSync/browser/sessionSync.contribution'; +import { EditSessionsContribution } from 'vs/workbench/contrib/editSessions/browser/editSessions.contribution'; import { ProgressService } from 'vs/workbench/services/progress/browser/progressService'; import { IProgressService } from 'vs/platform/progress/common/progress'; import { ISCMService } from 'vs/workbench/contrib/scm/common/scm'; @@ -21,7 +21,7 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace import { mock } from 'vs/base/test/common/mock'; import * as sinon from 'sinon'; import * as assert from 'assert'; -import { ChangeType, FileType, IEditSessionsLogService, ISessionSyncWorkbenchService } from 'vs/workbench/contrib/sessionSync/common/sessionSync'; +import { ChangeType, FileType, IEditSessionsLogService, IEditSessionsWorkbenchService } from 'vs/workbench/contrib/editSessions/common/editSessions'; import { URI } from 'vs/base/common/uri'; import { joinPath } from 'vs/base/common/resources'; import { INotificationService } from 'vs/platform/notification/common/notification'; @@ -34,7 +34,7 @@ const folderUri = URI.file(`/${folderName}`); suite('Edit session sync', () => { let instantiationService: TestInstantiationService; - let sessionSyncContribution: SessionSyncContribution; + let editSessionsContribution: EditSessionsContribution; let fileService: FileService; let sandbox: sinon.SinonSandbox; @@ -55,11 +55,11 @@ suite('Edit session sync', () => { instantiationService.stub(IEditSessionsLogService, logService); instantiationService.stub(IFileService, fileService); instantiationService.stub(INotificationService, new TestNotificationService()); - instantiationService.stub(ISessionSyncWorkbenchService, new class extends mock() { }); + instantiationService.stub(IEditSessionsWorkbenchService, new class extends mock() { }); instantiationService.stub(IProgressService, ProgressService); instantiationService.stub(ISCMService, SCMService); instantiationService.stub(IEnvironmentService, TestEnvironmentService); - instantiationService.stub(IConfigurationService, new TestConfigurationService({ workbench: { experimental: { sessionSync: { enabled: true } } } })); + instantiationService.stub(IConfigurationService, new TestConfigurationService({ workbench: { experimental: { editSessions: { enabled: true } } } })); instantiationService.stub(IWorkspaceContextService, new class extends mock() { override getWorkspace() { return { @@ -77,7 +77,7 @@ suite('Edit session sync', () => { // Stub repositories instantiationService.stub(ISCMService, '_repositories', new Map()); - sessionSyncContribution = instantiationService.createInstance(SessionSyncContribution); + editSessionsContribution = instantiationService.createInstance(EditSessionsContribution); }); teardown(() => { @@ -107,13 +107,13 @@ suite('Edit session sync', () => { // Stub sync service to return edit session data const readStub = sandbox.stub().returns({ editSession, ref: '0' }); - instantiationService.stub(ISessionSyncWorkbenchService, 'read', readStub); + instantiationService.stub(IEditSessionsWorkbenchService, 'read', readStub); // Create root folder await fileService.createFolder(folderUri); // Apply edit session - await sessionSyncContribution.applyEditSession(); + await editSessionsContribution.applyEditSession(); // Verify edit session was correctly applied assert.equal((await fileService.readFile(fileUri)).value.toString(), fileContents); @@ -121,12 +121,12 @@ suite('Edit session sync', () => { test('Edit session not stored if there are no edits', async function () { const writeStub = sandbox.stub(); - instantiationService.stub(ISessionSyncWorkbenchService, 'write', writeStub); + instantiationService.stub(IEditSessionsWorkbenchService, 'write', writeStub); // Create root folder await fileService.createFolder(folderUri); - await sessionSyncContribution.storeEditSession(true); + await editSessionsContribution.storeEditSession(true); // Verify that we did not attempt to write the edit session assert.equal(writeStub.called, false); diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts index 3319bbe6143..14407f52692 100644 --- a/src/vs/workbench/workbench.common.main.ts +++ b/src/vs/workbench/workbench.common.main.ts @@ -329,7 +329,7 @@ import 'vs/workbench/contrib/userDataSync/browser/userDataSync.contribution'; import 'vs/workbench/contrib/userDataProfile/browser/userDataProfile.contribution'; // Continue Edit Session -import 'vs/workbench/contrib/sessionSync/browser/sessionSync.contribution'; +import 'vs/workbench/contrib/editSessions/browser/editSessions.contribution'; // Code Actions import 'vs/workbench/contrib/codeActions/browser/codeActions.contribution';