@@ -313,35 +313,24 @@ async function registerPorts(context: GitpodExtensionContext): Promise<void> {
313
313
}
314
314
315
315
context . subscriptions . push ( observePortsStatus ( ) ) ;
316
- context . subscriptions . push ( vscode . commands . registerCommand ( 'gitpod.resolveExternalPort' , ( portNumber : number ) => {
317
- // eslint-disable-next-line no-async-promise-executor
318
- return new Promise < string > ( async ( resolve , reject ) => {
319
- try {
320
- const tryResolve = ( ) => {
321
- const port = portMap . get ( portNumber ) ;
322
- const exposed = port ?. status ?. exposed ;
323
- if ( exposed ) {
324
- resolve ( exposed . url ) ;
325
- return true ;
326
- }
327
- return false ;
328
- } ;
329
- if ( ! tryResolve ( ) ) {
330
- const listenerWebview = portViewProvider . onDidChangePorts ( element => {
331
- if ( element === portViewProvider . portMap && tryResolve ( ) ) {
332
- listenerWebview ?. dispose ( ) ;
333
- }
334
- } ) ;
335
- const request = new ExposePortRequest ( ) ;
336
- request . setPort ( portNumber ) ;
337
- await util . promisify ( context . supervisor . control . exposePort . bind ( context . supervisor . control , request , context . supervisor . metadata , {
338
- deadline : Date . now ( ) + context . supervisor . deadlines . normal
339
- } ) ) ( ) ;
340
- }
341
- } catch ( e ) {
342
- reject ( e ) ;
343
- }
344
- } ) ;
316
+ context . subscriptions . push ( vscode . commands . registerCommand ( 'gitpod.resolveExternalPort' , async ( portNumber : number ) => {
317
+ const port = portMap . get ( portNumber ) ;
318
+ const exposed = port ?. status ?. exposed ;
319
+ if ( exposed ) {
320
+ return exposed . url ;
321
+ }
322
+
323
+ const request = new ExposePortRequest ( ) ;
324
+ request . setPort ( portNumber ) ;
325
+ await util . promisify ( context . supervisor . control . exposePort . bind ( context . supervisor . control , request , context . supervisor . metadata , {
326
+ deadline : Date . now ( ) + context . supervisor . deadlines . normal
327
+ } ) ) ( ) ;
328
+
329
+ // Just construct the port url, maybe we can add an api as to get the port url template
330
+ const externalUrl = new URL ( context . info . getWorkspaceUrl ( ) ) ;
331
+ externalUrl . hostname = `${ portNumber } -${ externalUrl . hostname } ` ;
332
+
333
+ return externalUrl . toString ( ) ;
345
334
} ) ) ;
346
335
context . subscriptions . push ( vscode . commands . registerCommand ( 'gitpod.ports.makePrivate' , ( { port } : PortItem ) => {
347
336
context . fireAnalyticsEvent ( {
0 commit comments