From 11c79d850fee0ce1e820939de0f5393549ff9a16 Mon Sep 17 00:00:00 2001 From: bkellam Date: Tue, 7 Jan 2025 11:23:06 -0800 Subject: [PATCH] Fix issue with share links not including domain sub paths --- packages/web/src/app/api/(client)/client.ts | 2 ++ packages/web/src/app/components/editorContextMenu.tsx | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/web/src/app/api/(client)/client.ts b/packages/web/src/app/api/(client)/client.ts index 840bee56..889ecd42 100644 --- a/packages/web/src/app/api/(client)/client.ts +++ b/packages/web/src/app/api/(client)/client.ts @@ -3,6 +3,7 @@ import { NEXT_PUBLIC_DOMAIN_SUB_PATH } from "@/lib/environment.client"; import { fileSourceResponseSchema, listRepositoriesResponseSchema, searchResponseSchema } from "@/lib/schemas"; import { FileSourceRequest, FileSourceResponse, ListRepositoriesResponse, SearchRequest, SearchResponse } from "@/lib/types"; +import assert from "assert"; export const search = async (body: SearchRequest): Promise => { const path = resolveServerPath("/api/search"); @@ -48,5 +49,6 @@ export const getRepos = async (): Promise => { * the base path (if any). */ export const resolveServerPath = (path: string) => { + assert(path.startsWith("/")); return `${NEXT_PUBLIC_DOMAIN_SUB_PATH}${path}`; } \ No newline at end of file diff --git a/packages/web/src/app/components/editorContextMenu.tsx b/packages/web/src/app/components/editorContextMenu.tsx index b8ab0015..3e7b6286 100644 --- a/packages/web/src/app/components/editorContextMenu.tsx +++ b/packages/web/src/app/components/editorContextMenu.tsx @@ -8,6 +8,7 @@ import { autoPlacement, computePosition, offset, shift, VirtualElement } from "@ import { Link2Icon } from "@radix-ui/react-icons"; import { EditorView, SelectionRange } from "@uiw/react-codemirror"; import { useCallback, useEffect, useRef } from "react"; +import { resolveServerPath } from "../api/(client)/client"; interface ContextMenuProps { view: EditorView; @@ -103,7 +104,10 @@ export const EditorContextMenu = ({ const from = toLineAndColumn(selection.from); const to = toLineAndColumn(selection.to); - const url = createPathWithQueryParams(`${window.location.origin}/browse/${repoName}@${revisionName}/-/blob/${path}`, + // @note: we need to resolve the server path for /browse since + // we aren't using (which normally does this for us). + const basePath = `${window.location.origin}${resolveServerPath('/browse')}`; + const url = createPathWithQueryParams(`${basePath}/${repoName}@${revisionName}/-/blob/${path}`, ['highlightRange', `${from?.line}:${from?.column},${to?.line}:${to?.column}`], );