Skip to content

Commit f837a34

Browse files
author
Benjamin Pasero
committed
debt - move enterWorkspace into workspaces service
1 parent 992f38c commit f837a34

14 files changed

Lines changed: 54 additions & 62 deletions

File tree

src/vs/code/electron-main/app.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ export class CodeApplication extends Disposable {
552552
electronIpcServer.registerChannel('sharedProcess', sharedProcessChannel);
553553

554554
const workspacesMainService = accessor.get(IWorkspacesMainService);
555-
const workspacesChannel = new WorkspacesChannel(workspacesMainService);
555+
const workspacesChannel = new WorkspacesChannel(workspacesMainService, accessor.get(IWindowsMainService));
556556
electronIpcServer.registerChannel('workspaces', workspacesChannel);
557557

558558
const windowsService = accessor.get(IWindowsService);

src/vs/code/electron-main/windows.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,8 @@ export class WindowsManager extends Disposable implements IWindowsMainService {
197197
@IInstantiationService private readonly instantiationService: IInstantiationService
198198
) {
199199
super();
200-
const windowsStateStoreData = this.stateService.getItem<WindowsStateStorageData>(WindowsManager.windowsStateStorageKey);
201200

202-
this.windowsState = restoreWindowsState(windowsStateStoreData);
201+
this.windowsState = restoreWindowsState(this.stateService.getItem<WindowsStateStorageData>(WindowsManager.windowsStateStorageKey));
203202
if (!Array.isArray(this.windowsState.openedWindows)) {
204203
this.windowsState.openedWindows = [];
205204
}

src/vs/platform/windows/common/windows.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ export interface IWindowsService {
8282
readonly onWindowUnmaximize: Event<number>;
8383
readonly onRecentlyOpenedChange: Event<void>;
8484

85-
enterWorkspace(windowId: number, path: URI): Promise<IEnterWorkspaceResult | undefined>;
8685
addRecentlyOpened(recents: IRecent[]): Promise<void>;
8786
removeFromRecentlyOpened(paths: URI[]): Promise<void>;
8887
clearRecentlyOpened(): Promise<void>;
@@ -155,7 +154,6 @@ export interface IWindowService {
155154

156155
readonly windowId: number;
157156

158-
enterWorkspace(path: URI): Promise<IEnterWorkspaceResult | undefined>;
159157
getRecentlyOpened(): Promise<IRecentlyOpened>;
160158
addRecentlyOpened(recents: IRecent[]): Promise<void>;
161159
removeFromRecentlyOpened(paths: URI[]): Promise<void>;

src/vs/platform/windows/common/windowsIpc.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ export class WindowsChannel implements IServerChannel {
4343

4444
call(_: unknown, command: string, arg?: any): Promise<any> {
4545
switch (command) {
46-
case 'enterWorkspace': return this.service.enterWorkspace(arg[0], URI.revive(arg[1]));
4746
case 'addRecentlyOpened': return this.service.addRecentlyOpened(arg.map((recent: IRecent) => {
4847
if (isRecentFile(recent)) {
4948
recent.fileUri = URI.revive(recent.fileUri);

src/vs/platform/windows/electron-browser/windowsService.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { Event } from 'vs/base/common/event';
77
import { IChannel } from 'vs/base/parts/ipc/common/ipc';
8-
import { IWindowsService, IEnterWorkspaceResult, IURIToOpen, IOpenSettings } from 'vs/platform/windows/common/windows';
8+
import { IWindowsService, IURIToOpen, IOpenSettings } from 'vs/platform/windows/common/windows';
99
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, reviveWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
1010
import { IRecentlyOpened, IRecent, isRecentWorkspace } from 'vs/platform/history/common/history';
1111
import { URI } from 'vs/base/common/uri';
@@ -30,15 +30,6 @@ export class WindowsService implements IWindowsService {
3030
this.channel = mainProcessService.getChannel('windows');
3131
}
3232

33-
async enterWorkspace(windowId: number, path: URI): Promise<IEnterWorkspaceResult | undefined> {
34-
const result: IEnterWorkspaceResult = await this.channel.call('enterWorkspace', [windowId, path]);
35-
if (result) {
36-
result.workspace = reviveWorkspaceIdentifier(result.workspace);
37-
}
38-
39-
return result;
40-
}
41-
4233
addRecentlyOpened(recent: IRecent[]): Promise<void> {
4334
return this.channel.call('addRecentlyOpened', recent);
4435
}

src/vs/platform/windows/electron-main/legacyWindowsMainService.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
77
import { assign } from 'vs/base/common/objects';
88
import { URI } from 'vs/base/common/uri';
9-
import { IWindowsService, OpenContext, IEnterWorkspaceResult, IOpenSettings, IURIToOpen } from 'vs/platform/windows/common/windows';
9+
import { IWindowsService, OpenContext, IOpenSettings, IURIToOpen } from 'vs/platform/windows/common/windows';
1010
import { IEnvironmentService, ParsedArgs } from 'vs/platform/environment/common/environment';
1111
import { app, MessageBoxReturnValue, SaveDialogReturnValue, OpenDialogReturnValue, BrowserWindow, MessageBoxOptions, SaveDialogOptions, OpenDialogOptions } from 'electron';
1212
import { Event } from 'vs/base/common/event';
@@ -73,12 +73,6 @@ export class LegacyWindowsMainService extends Disposable implements IWindowsServ
7373
return this.withWindow(windowId, codeWindow => this.windowsMainService.showOpenDialog(options, codeWindow), () => this.windowsMainService.showOpenDialog(options))!;
7474
}
7575

76-
async enterWorkspace(windowId: number, path: URI): Promise<IEnterWorkspaceResult | undefined> {
77-
this.logService.trace('windowsService#enterWorkspace', windowId);
78-
79-
return this.withWindow(windowId, codeWindow => this.windowsMainService.enterWorkspace(codeWindow, path));
80-
}
81-
8276
async addRecentlyOpened(recents: IRecent[]): Promise<void> {
8377
this.logService.trace('windowsService#addRecentlyOpened');
8478
this.historyMainService.addRecentlyOpened(recents);

src/vs/platform/workspaces/common/workspaces.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { normalizeDriveLetter } from 'vs/base/common/labels';
1717
import { toSlashes } from 'vs/base/common/extpath';
1818
import { FormattingOptions } from 'vs/base/common/jsonFormatter';
1919
import { getRemoteAuthority } from 'vs/platform/remote/common/remoteHosts';
20+
import { IEnterWorkspaceResult } from 'vs/platform/windows/common/windows';
2021

2122
export const WORKSPACE_EXTENSION = 'code-workspace';
2223
export const WORKSPACE_FILTER = [{ name: localize('codeWorkspace', "Code Workspace"), extensions: [WORKSPACE_EXTENSION] }];
@@ -97,6 +98,8 @@ export interface IWorkspacesService {
9798

9899
_serviceBrand: undefined;
99100

101+
enterWorkspace(path: URI): Promise<IEnterWorkspaceResult | undefined>;
102+
100103
createUntitledWorkspace(folders?: IWorkspaceFolderCreationData[], remoteAuthority?: string): Promise<IWorkspaceIdentifier>;
101104

102105
deleteUntitledWorkspace(workspace: IWorkspaceIdentifier): Promise<void>;

src/vs/platform/workspaces/electron-main/workspacesIpc.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@ import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/
88
import { IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
99
import { URI } from 'vs/base/common/uri';
1010
import { Event } from 'vs/base/common/event';
11+
import { IWindowsMainService } from 'vs/platform/windows/electron-main/windows';
1112

1213
export class WorkspacesChannel implements IServerChannel {
1314

14-
constructor(private service: IWorkspacesMainService) { }
15+
constructor(
16+
private workspacesMainService: IWorkspacesMainService,
17+
private windowsMainService: IWindowsMainService
18+
) { }
1519

1620
listen<T>(_: unknown, event: string): Event<T> {
1721
throw new Error(`Event not found: ${event}`);
@@ -32,14 +36,20 @@ export class WorkspacesChannel implements IServerChannel {
3236
});
3337
}
3438

35-
return this.service.createUntitledWorkspace(folders, remoteAuthority);
39+
return this.workspacesMainService.createUntitledWorkspace(folders, remoteAuthority);
3640
}
3741
case 'deleteUntitledWorkspace': {
38-
const w: IWorkspaceIdentifier = arg;
39-
return this.service.deleteUntitledWorkspace({ id: w.id, configPath: URI.revive(w.configPath) });
42+
const identifier: IWorkspaceIdentifier = arg;
43+
return this.workspacesMainService.deleteUntitledWorkspace({ id: identifier.id, configPath: URI.revive(identifier.configPath) });
4044
}
4145
case 'getWorkspaceIdentifier': {
42-
return this.service.getWorkspaceIdentifier(URI.revive(arg));
46+
return this.workspacesMainService.getWorkspaceIdentifier(URI.revive(arg));
47+
}
48+
case 'enterWorkspace': {
49+
const window = this.windowsMainService.getWindowById(arg[0]);
50+
if (window) {
51+
return this.windowsMainService.enterWorkspace(window, URI.revive(arg[1]));
52+
}
4353
}
4454
}
4555

src/vs/workbench/browser/web.simpleservices.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Event } from 'vs/base/common/event';
1010
import { ILogService } from 'vs/platform/log/common/log';
1111
import { Disposable } from 'vs/base/common/lifecycle';
1212
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
13-
import { IWindowService, IEnterWorkspaceResult, IURIToOpen, IWindowsService, IOpenSettings, IWindowSettings } from 'vs/platform/windows/common/windows';
13+
import { IWindowService, IURIToOpen, IWindowsService, IOpenSettings, IWindowSettings } from 'vs/platform/windows/common/windows';
1414
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
1515
import { IRecentlyOpened, IRecent, isRecentFile, isRecentFolder } from 'vs/platform/history/common/history';
1616
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
@@ -88,10 +88,6 @@ export class SimpleWindowService extends Disposable implements IWindowService {
8888
return Promise.resolve(false);
8989
}
9090

91-
enterWorkspace(_path: URI): Promise<IEnterWorkspaceResult | undefined> {
92-
return Promise.resolve(undefined);
93-
}
94-
9591
async getRecentlyOpened(): Promise<IRecentlyOpened> {
9692
const recentlyOpenedRaw = this.storageService.get(SimpleWindowService.RECENTLY_OPENED_KEY, StorageScope.GLOBAL);
9793
if (recentlyOpenedRaw) {
@@ -223,10 +219,6 @@ export class SimpleWindowsService implements IWindowsService {
223219
return Promise.resolve(true);
224220
}
225221

226-
enterWorkspace(_windowId: number, _path: URI): Promise<IEnterWorkspaceResult | undefined> {
227-
return Promise.resolve(undefined);
228-
}
229-
230222
addRecentlyOpened(recents: IRecent[]): Promise<void> {
231223
return Promise.resolve();
232224
}

src/vs/workbench/services/window/electron-browser/windowService.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { Event } from 'vs/base/common/event';
7-
import { IWindowService, IWindowsService, IEnterWorkspaceResult, IOpenSettings, IURIToOpen, isFolderToOpen, isWorkspaceToOpen } from 'vs/platform/windows/common/windows';
7+
import { IWindowService, IWindowsService, IOpenSettings, IURIToOpen, isFolderToOpen, isWorkspaceToOpen } from 'vs/platform/windows/common/windows';
88
import { IRecentlyOpened, IRecent } from 'vs/platform/history/common/history';
99
import { URI } from 'vs/base/common/uri';
1010
import { Disposable } from 'vs/base/common/lifecycle';
@@ -51,10 +51,6 @@ export class WindowService extends Disposable implements IWindowService {
5151
return this._windowId;
5252
}
5353

54-
enterWorkspace(path: URI): Promise<IEnterWorkspaceResult | undefined> {
55-
return this.windowsService.enterWorkspace(this.windowId, path);
56-
}
57-
5854
openWindow(uris: IURIToOpen[], options: IOpenSettings = {}): Promise<void> {
5955
if (!!this.remoteAuthority) {
6056
uris.forEach(u => u.label = u.label || this.getRecentLabel(u));

0 commit comments

Comments
 (0)