From 371778d752932f1a492cf841ddbf00b4de03abaf Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Sat, 18 Apr 2026 14:50:49 +0800 Subject: [PATCH] feat(admin-ui): add public profile absolute URL helper Made-with: Cursor --- app/utils/public-profile-url.test.ts | 14 ++++++++++++++ app/utils/public-profile-url.ts | 7 +++++++ 2 files changed, 21 insertions(+) create mode 100644 app/utils/public-profile-url.test.ts create mode 100644 app/utils/public-profile-url.ts diff --git a/app/utils/public-profile-url.test.ts b/app/utils/public-profile-url.test.ts new file mode 100644 index 0000000..6a46d35 --- /dev/null +++ b/app/utils/public-profile-url.test.ts @@ -0,0 +1,14 @@ +import { describe, expect, test } from "bun:test"; +import { buildPublicProfileAbsoluteUrl } from "./public-profile-url"; + +describe("buildPublicProfileAbsoluteUrl", () => { + test("joins origin with /@slug path", () => { + expect(buildPublicProfileAbsoluteUrl("https://example.com", "my-slug")).toBe( + "https://example.com/@my-slug", + ); + }); + + test("normalizes origin without trailing slash", () => { + expect(buildPublicProfileAbsoluteUrl("https://example.com/", "ab")).toBe("https://example.com/@ab"); + }); +}); diff --git a/app/utils/public-profile-url.ts b/app/utils/public-profile-url.ts new file mode 100644 index 0000000..7e961e9 --- /dev/null +++ b/app/utils/public-profile-url.ts @@ -0,0 +1,7 @@ +/** + * 与站内路由 `/@${publicSlug}` 对应的绝对 URL(用于复制到剪贴板)。 + */ +export function buildPublicProfileAbsoluteUrl(origin: string, publicSlug: string): string { + const base = origin.replace(/\/+$/, ""); + return new URL(`/@${publicSlug}`, `${base}/`).href; +}