From 65faaa3ac5d487eea8d011fc97530951b6fbedb1 Mon Sep 17 00:00:00 2001 From: hwen Date: Mon, 17 Jul 2023 19:07:05 +0800 Subject: [PATCH] :lipstick: --- src/publicApi.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/publicApi.ts b/src/publicApi.ts index 853c84a8..6d4cc434 100644 --- a/src/publicApi.ts +++ b/src/publicApi.ts @@ -17,6 +17,7 @@ import { MetricsReporter, getConnectMetricsInterceptor } from './metrics'; import { ILogService } from './services/logService'; import { WrapError } from './common/utils'; import { ITelemetryService } from './common/telemetry'; +import { ContextURL } from '@gitpod/gitpod-protocol'; function isTelemetryEnabled(): boolean { const TELEMETRY_CONFIG_ID = 'telemetry'; @@ -307,10 +308,12 @@ export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace): Workspace export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace[]): WorkspaceData[]; export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace | Workspace[]) { const toWorkspaceData = (ws: Workspace) => { - // https://github.com/gitpod-io/gitpod/blob/7e0c605a3d470b8cee0e841e51da9b20022f4f4b/components/public-api-server/pkg/apiv1/workspace.go#L332-L335 - // it's always git context, safe to go - const contextUrl = ws.context?.details.case === 'git' ? ws.context.details.value.normalizedContextUrl : ws.context!.contextUrl; - const url = new URL(contextUrl); + let url: URL; + if (ws.context?.details.case === 'git') { + url = new URL(ws.context.details.value.normalizedContextUrl); + } else { + url = ContextURL.getNormalizedURL({ contextURL: ws.context!.contextUrl } as any)!; + } const provider = url.host.replace(/\..+?$/, ''); // remove '.com', etc const matches = url.pathname.match(/[^/]+/g)!; // match /owner/repo const owner = matches[0]; @@ -320,7 +323,7 @@ export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace | Workspace owner, repo, id: ws.workspaceId, - contextUrl, + contextUrl: url.toString(), workspaceUrl: ws.status!.instance!.status!.url, phase: WorkspaceInstanceStatus_Phase[ws.status!.instance!.status!.phase ?? WorkspaceInstanceStatus_Phase.UNSPECIFIED].toLowerCase() as WorkspacePhase, description: ws.description,