Skip to content

Commit d3dcc93

Browse files
committed
1 parent 38cac59 commit d3dcc93

File tree

1 file changed

+18
-29
lines changed

1 file changed

+18
-29
lines changed

extensions/gitpod-web/src/extension.ts

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -313,35 +313,24 @@ async function registerPorts(context: GitpodExtensionContext): Promise<void> {
313313
}
314314

315315
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();
345334
}));
346335
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.makePrivate', ({ port }: PortItem) => {
347336
context.fireAnalyticsEvent({

0 commit comments

Comments
 (0)