Skip to content

Commit 7894074

Browse files
author
Akash Satheesan
committed
fix(lib/vscode): align workbench.ts with upstream
1 parent 6d62243 commit 7894074

File tree

1 file changed

+55
-9
lines changed

1 file changed

+55
-9
lines changed

lib/vscode/src/vs/code/browser/workbench/workbench.ts

Lines changed: 55 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { IWorkbenchConstructionOptions, create, ICredentialsProvider, IURLCallbackProvider, IWorkspaceProvider, IWorkspace, IWindowIndicator, IProductQualityChangeHandler, ISettingsSyncOptions } from 'vs/workbench/workbench.web.api';
6+
import { IWorkbenchConstructionOptions, create, ICredentialsProvider, IURLCallbackProvider, IWorkspaceProvider, IWorkspace, IWindowIndicator, IProductQualityChangeHandler, ISettingsSyncOptions, IHomeIndicator } from 'vs/workbench/workbench.web.api';
77
import { URI, UriComponents } from 'vs/base/common/uri';
88
import { Event, Emitter } from 'vs/base/common/event';
99
import { generateUuid } from 'vs/base/common/uuid';
@@ -18,6 +18,7 @@ import { localize } from 'vs/nls';
1818
import { Schemas } from 'vs/base/common/network';
1919
import product from 'vs/platform/product/common/product';
2020
import { encodePath } from 'vs/server/node/util';
21+
import { parseLogLevel } from 'vs/platform/log/common/log';
2122

2223
function doCreateUri(path: string, queryValues: Map<string, string>): URI {
2324
let query: string | undefined = undefined;
@@ -422,6 +423,50 @@ class WindowIndicator implements IWindowIndicator {
422423
...JSON.parse(configElementAttribute),
423424
};
424425

426+
// Find workspace to open and payload
427+
let foundWorkspace = false;
428+
let workspace: IWorkspace;
429+
let payload = Object.create(null);
430+
let logLevel: string | undefined = undefined;
431+
432+
const query = new URL(document.location.href).searchParams;
433+
query.forEach((value, key) => {
434+
switch (key) {
435+
436+
// Folder
437+
case WorkspaceProvider.QUERY_PARAM_FOLDER:
438+
workspace = { folderUri: URI.parse(value) };
439+
foundWorkspace = true;
440+
break;
441+
442+
// Workspace
443+
case WorkspaceProvider.QUERY_PARAM_WORKSPACE:
444+
workspace = { workspaceUri: URI.parse(value) };
445+
foundWorkspace = true;
446+
break;
447+
448+
// Empty
449+
case WorkspaceProvider.QUERY_PARAM_EMPTY_WINDOW:
450+
workspace = undefined;
451+
foundWorkspace = true;
452+
break;
453+
454+
// Payload
455+
case WorkspaceProvider.QUERY_PARAM_PAYLOAD:
456+
try {
457+
payload = JSON.parse(value);
458+
} catch (error) {
459+
console.error(error); // possible invalid JSON
460+
}
461+
break;
462+
463+
// Log level
464+
case 'logLevel':
465+
logLevel = value;
466+
break;
467+
}
468+
});
469+
425470
// Strip the protocol from the authority if it exists.
426471
const normalizeAuthority = (authority: string): string => authority.replace(/^https?:\/\//, '');
427472
if (config.remoteAuthority) {
@@ -434,11 +479,6 @@ class WindowIndicator implements IWindowIndicator {
434479
config.folderUri.authority = normalizeAuthority(config.folderUri.authority);
435480
}
436481

437-
// Find workspace to open and payload
438-
let foundWorkspace = false;
439-
let workspace: IWorkspace;
440-
let payload = config.workspaceProvider?.payload || Object.create(null);
441-
442482
// If no workspace is provided through the URL, check for config attribute from server
443483
if (!foundWorkspace) {
444484
if (config.folderUri) {
@@ -453,6 +493,14 @@ class WindowIndicator implements IWindowIndicator {
453493
// Workspace Provider
454494
const workspaceProvider = new WorkspaceProvider(workspace, payload);
455495

496+
// NOTE@coder: copied from upstream, modified to use our repo
497+
// Home Indicator
498+
const homeIndicator: IHomeIndicator = {
499+
href: 'https://github.com/cdr/code-server',
500+
icon: 'code',
501+
title: localize('home', "Home")
502+
};
503+
456504
// Window indicator (unless connected to a remote)
457505
let windowIndicator: WindowIndicator | undefined = undefined;
458506
if (!workspaceProvider.hasRemote()) {
@@ -495,14 +543,12 @@ class WindowIndicator implements IWindowIndicator {
495543
// Finally create workbench
496544
create(document.body, {
497545
...config,
498-
<<<<<<< HEAD
499-
=======
500546
developmentOptions: {
501547
logLevel: logLevel ? parseLogLevel(logLevel) : undefined,
502548
...config.developmentOptions
503549
},
504-
>>>>>>> 58ce849223667f77dc0d6d7658870ca3f815e17f
505550
settingsSyncOptions,
551+
homeIndicator,
506552
windowIndicator,
507553
productQualityChangeHandler,
508554
workspaceProvider,

0 commit comments

Comments
 (0)