From 5c9b0eb15e514b002a510ec1f01f4882112ff7bf Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 24 Jan 2018 13:42:08 +0100 Subject: [PATCH] simplify code --- .../electron-browser/mainThreadWorkspace.ts | 32 ++++++------------- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostWorkspace.ts | 10 +++--- 3 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadWorkspace.ts b/src/vs/workbench/api/electron-browser/mainThreadWorkspace.ts index d315aa12f99..9cb29c82601 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWorkspace.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWorkspace.ts @@ -50,48 +50,36 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape { // --- workspace --- - $updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, ...add: { uri: UriComponents, name?: string }[]): Thenable { - let workspaceFoldersToAdd: { uri: URI, name?: string }[] = []; - if (Array.isArray(add)) { - workspaceFoldersToAdd = add.map(f => ({ uri: URI.revive(f.uri), name: f.name })); - } - - let workspaceFoldersToRemove: URI[] = []; - if (typeof deleteCount === 'number') { - workspaceFoldersToRemove = this._contextService.getWorkspace().folders.slice(index, index + deleteCount).map(f => f.uri); - } - - if (!workspaceFoldersToAdd.length && !workspaceFoldersToRemove.length) { - return TPromise.as(false); // return early if we neither have folders to add nor remove - } + $updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, foldersToAdd: { uri: UriComponents, name?: string }[]): Thenable { + const workspaceFoldersToAdd = foldersToAdd.map(f => ({ uri: URI.revive(f.uri), name: f.name })); // Indicate in status message - this._statusbarService.setStatusMessage(this.getStatusMessage(extensionName, workspaceFoldersToAdd.map(f => f.uri), workspaceFoldersToRemove), 10 * 1000 /* 10s */); + this._statusbarService.setStatusMessage(this.getStatusMessage(extensionName, workspaceFoldersToAdd.length, deleteCount), 10 * 1000 /* 10s */); return this._workspaceEditingService.updateFolders(index, deleteCount, workspaceFoldersToAdd, true).then(() => true); } - private getStatusMessage(extensionName, workspaceFoldersToAdd?: URI[], workspaceFoldersToRemove?: URI[]): string { + private getStatusMessage(extensionName, addCount: number, removeCount: number): string { let message: string; - const wantsToDelete = Array.isArray(workspaceFoldersToRemove) && workspaceFoldersToRemove.length; - const wantsToAdd = Array.isArray(workspaceFoldersToAdd) && workspaceFoldersToAdd.length; + const wantsToAdd = addCount > 0; + const wantsToDelete = removeCount > 0; // Add Folders if (wantsToAdd && !wantsToDelete) { - if (workspaceFoldersToAdd.length === 1) { + if (addCount === 1) { message = localize('folderStatusMessageAddSingleFolder', "Extension '{0}' added 1 folder to the workspace", extensionName); } else { - message = localize('folderStatusMessageAddMultipleFolders', "Extension '{0}' added {1} folders to the workspace", extensionName, workspaceFoldersToAdd.length); + message = localize('folderStatusMessageAddMultipleFolders', "Extension '{0}' added {1} folders to the workspace", extensionName, addCount); } } // Delete Folders else if (wantsToDelete && !wantsToAdd) { - if (workspaceFoldersToRemove.length === 1) { + if (removeCount === 1) { message = localize('folderStatusMessageRemoveSingleFolder', "Extension '{0}' removed 1 folder from the workspace", extensionName); } else { - message = localize('folderStatusMessageRemoveMultipleFolders', "Extension '{0}' removed {1} folders from the workspace", extensionName, workspaceFoldersToRemove.length); + message = localize('folderStatusMessageRemoveMultipleFolders', "Extension '{0}' removed {1} folders from the workspace", extensionName, removeCount); } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index e5220ed8e9e..f6238833558 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -355,7 +355,7 @@ export interface MainThreadWorkspaceShape extends IDisposable { $startSearch(includePattern: string, includeFolder: string, excludePattern: string, maxResults: number, requestId: number): Thenable; $cancelSearch(requestId: number): Thenable; $saveAll(includeUntitled?: boolean): Thenable; - $updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, ...workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable; + $updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable; } export interface IFileChangeDto { diff --git a/src/vs/workbench/api/node/extHostWorkspace.ts b/src/vs/workbench/api/node/extHostWorkspace.ts index da47234fe07..898a3499ada 100644 --- a/src/vs/workbench/api/node/extHostWorkspace.ts +++ b/src/vs/workbench/api/node/extHostWorkspace.ts @@ -89,7 +89,7 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape { } updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, ...workspaceFoldersToAdd: { uri: vscode.Uri, name?: string }[]): Thenable { - let validatedDistinctWorkspaceFoldersToAdd: { uri: vscode.Uri, name?: string }[] = []; + const validatedDistinctWorkspaceFoldersToAdd: { uri: vscode.Uri, name?: string }[] = []; if (Array.isArray(workspaceFoldersToAdd)) { workspaceFoldersToAdd.forEach(folderToAdd => { if (URI.isUri(folderToAdd.uri) && !validatedDistinctWorkspaceFoldersToAdd.some(f => isEqual(f.uri, folderToAdd.uri, !isLinux))) { @@ -98,11 +98,11 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape { }); } - if (index < 0) { - return Promise.resolve(false); // index has to be at least 0 + if ([index, deleteCount].some(i => typeof i !== 'number' || i < 0)) { + return Promise.resolve(false); // validate numbers } - if (deleteCount <= 0 && validatedDistinctWorkspaceFoldersToAdd.length === 0) { + if (deleteCount === 0 && validatedDistinctWorkspaceFoldersToAdd.length === 0) { return Promise.resolve(false); // nothing to delete or add } @@ -118,7 +118,7 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape { return Promise.resolve(false); // nothing actually changed } - return this._proxy.$updateWorkspaceFolders(extensionName, index, deleteCount, ...validatedDistinctWorkspaceFoldersToAdd); + return this._proxy.$updateWorkspaceFolders(extensionName, index, deleteCount, validatedDistinctWorkspaceFoldersToAdd); } getWorkspaceFolder(uri: vscode.Uri, resolveParent?: boolean): vscode.WorkspaceFolder {