From 866b096304607d8478aa0d7552154dc0c661ad5d Mon Sep 17 00:00:00 2001 From: fundon Date: Wed, 26 Feb 2025 07:35:25 +0000 Subject: [PATCH] fix(core): fix doc url parsing with custom domain names (#10444) Closes: [AF-2279](https://affine-pro.slack.com/archives/C06CTBH5L4R/p1740552397245649?thread_ts=1740547457.278239&cid=C06CTBH5L4R) --- .../frontend/core/src/blocksuite/extensions/doc-url.ts | 7 +++++-- packages/frontend/core/src/modules/navigation/utils.ts | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/frontend/core/src/blocksuite/extensions/doc-url.ts b/packages/frontend/core/src/blocksuite/extensions/doc-url.ts index 5fd780866b..994a7fc673 100644 --- a/packages/frontend/core/src/blocksuite/extensions/doc-url.ts +++ b/packages/frontend/core/src/blocksuite/extensions/doc-url.ts @@ -11,9 +11,11 @@ import type { FrameworkProvider } from '@toeverything/infra'; function patchParseDocUrlExtension(framework: FrameworkProvider) { const workspaceService = framework.get(WorkspaceService); + const workspaceServerService = framework.get(WorkspaceServerService); + const baseUrl = workspaceServerService.server?.baseUrl ?? location.origin; const ParseDocUrl = ParseDocUrlExtension({ parseDocUrl(url) { - const info = resolveLinkToDoc(url); + const info = resolveLinkToDoc(url, baseUrl); if (!info || info.workspaceId !== workspaceService.workspace.id) return; delete info.refreshKey; @@ -28,13 +30,14 @@ function patchParseDocUrlExtension(framework: FrameworkProvider) { function patchGenerateDocUrlExtension(framework: FrameworkProvider) { const workspaceService = framework.get(WorkspaceService); const workspaceServerService = framework.get(WorkspaceServerService); + const baseUrl = workspaceServerService.server?.baseUrl ?? location.origin; const GenerateDocUrl = GenerateDocUrlExtension({ generateDocUrl(pageId: string, params?: ReferenceParams) { return generateUrl({ ...params, pageId, workspaceId: workspaceService.workspace.id, - baseUrl: workspaceServerService.server?.baseUrl ?? location.origin, + baseUrl, }); }, }); diff --git a/packages/frontend/core/src/modules/navigation/utils.ts b/packages/frontend/core/src/modules/navigation/utils.ts index 99c5d300f9..6190276935 100644 --- a/packages/frontend/core/src/modules/navigation/utils.ts +++ b/packages/frontend/core/src/modules/navigation/utils.ts @@ -102,8 +102,8 @@ const isRouteModulePath = ( ): path is (typeof routeModulePaths)[number] => routeModulePaths.includes(path as any); -export const resolveLinkToDoc = (href: string) => { - const meta = resolveRouteLinkMeta(href); +export const resolveLinkToDoc = (href: string, baseUrl?: string) => { + const meta = resolveRouteLinkMeta(href, baseUrl); if (!meta || meta.moduleName !== 'doc') return null; const params = preprocessParams(