3
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
4
*--------------------------------------------------------------------------------------------*/
5
5
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' ;
7
7
import { URI , UriComponents } from 'vs/base/common/uri' ;
8
8
import { Event , Emitter } from 'vs/base/common/event' ;
9
9
import { generateUuid } from 'vs/base/common/uuid' ;
@@ -18,6 +18,7 @@ import { localize } from 'vs/nls';
18
18
import { Schemas } from 'vs/base/common/network' ;
19
19
import product from 'vs/platform/product/common/product' ;
20
20
import { encodePath } from 'vs/server/node/util' ;
21
+ import { parseLogLevel } from 'vs/platform/log/common/log' ;
21
22
22
23
function doCreateUri ( path : string , queryValues : Map < string , string > ) : URI {
23
24
let query : string | undefined = undefined ;
@@ -422,6 +423,50 @@ class WindowIndicator implements IWindowIndicator {
422
423
...JSON . parse ( configElementAttribute ) ,
423
424
} ;
424
425
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
+
425
470
// Strip the protocol from the authority if it exists.
426
471
const normalizeAuthority = ( authority : string ) : string => authority . replace ( / ^ h t t p s ? : \/ \/ / , '' ) ;
427
472
if ( config . remoteAuthority ) {
@@ -434,11 +479,6 @@ class WindowIndicator implements IWindowIndicator {
434
479
config . folderUri . authority = normalizeAuthority ( config . folderUri . authority ) ;
435
480
}
436
481
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
-
442
482
// If no workspace is provided through the URL, check for config attribute from server
443
483
if ( ! foundWorkspace ) {
444
484
if ( config . folderUri ) {
@@ -453,6 +493,14 @@ class WindowIndicator implements IWindowIndicator {
453
493
// Workspace Provider
454
494
const workspaceProvider = new WorkspaceProvider ( workspace , payload ) ;
455
495
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
+
456
504
// Window indicator (unless connected to a remote)
457
505
let windowIndicator : WindowIndicator | undefined = undefined ;
458
506
if ( ! workspaceProvider . hasRemote ( ) ) {
@@ -495,14 +543,12 @@ class WindowIndicator implements IWindowIndicator {
495
543
// Finally create workbench
496
544
create ( document . body , {
497
545
...config ,
498
- < << << << HEAD
499
- = = === ==
500
546
developmentOptions : {
501
547
logLevel : logLevel ? parseLogLevel ( logLevel ) : undefined ,
502
548
...config . developmentOptions
503
549
} ,
504
- > >>> >>> 58 ce849223667f77dc0d6d7658870ca3f815e17f
505
550
settingsSyncOptions,
551
+ homeIndicator,
506
552
windowIndicator,
507
553
productQualityChangeHandler,
508
554
workspaceProvider,
0 commit comments