diff --git a/src/publicApi.ts b/src/publicApi.ts index b939e018..a9834af5 100644 --- a/src/publicApi.ts +++ b/src/publicApi.ts @@ -307,11 +307,8 @@ export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace): Workspace export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace[]): WorkspaceData[]; export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace | Workspace[]) { const toWorkspaceData = (ws: Workspace) => { - if (ws.context?.details.case !== 'git') { - // impossible since we filter them first - throw new Error(`Workspace ${ws.workspaceId} is not a git workspace`); - } - const url = new URL(ws.context.details.value.normalizedContextUrl); + const contextUrl = ws.context?.details.case === 'git' ? ws.context.details.value.normalizedContextUrl : ws.context.contextUrl; + const url = new URL(contextUrl); const provider = url.host.replace(/\..+?$/, ''); // remove '.com', etc const matches = url.pathname.match(/[^/]+/g)!; // match /owner/repo const owner = matches[0]; @@ -321,7 +318,7 @@ export function rawWorkspaceToWorkspaceData(rawWorkspaces: Workspace | Workspace owner, repo, id: ws.workspaceId, - contextUrl: ws.context.details.value.normalizedContextUrl, + contextUrl, workspaceUrl: ws.status!.instance!.status!.url, phase: WorkspaceInstanceStatus_Phase[ws.status!.instance!.status!.phase ?? WorkspaceInstanceStatus_Phase.UNSPECIFIED].toLowerCase() as WorkspacePhase, description: ws.description,