From 95c814112288fbd74adada077cd1c425f2ebc260 Mon Sep 17 00:00:00 2001 From: 01zulfi <85733202+01zulfi@users.noreply.github.com> Date: Tue, 25 Nov 2025 11:45:00 +0500 Subject: [PATCH] core: support monograph.publishUrl field Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com> --- .../web/src/components/publish-view/index.tsx | 19 +++++++++++---- packages/core/src/api/monographs.ts | 24 ++++++++++++++++--- packages/core/src/collections/monographs.ts | 1 + packages/core/src/database/migrations.ts | 8 +++++++ packages/core/src/types.ts | 1 + 5 files changed, 45 insertions(+), 8 deletions(-) diff --git a/apps/web/src/components/publish-view/index.tsx b/apps/web/src/components/publish-view/index.tsx index 6e878c176..49b19f725 100644 --- a/apps/web/src/components/publish-view/index.tsx +++ b/apps/web/src/components/publish-view/index.tsx @@ -23,7 +23,7 @@ import { Loading, Refresh } from "../icons"; import { db } from "../../common/db"; import { writeText } from "clipboard-polyfill"; import { showToast } from "../../utils/toast"; -import { EV, EVENTS, hosts, MonographAnalytics } from "@notesnook/core"; +import { EV, EVENTS, hosts } from "@notesnook/core"; import { useStore } from "../../stores/monograph-store"; import { Note } from "@notesnook/core"; import { strings } from "@notesnook/intl"; @@ -64,6 +64,9 @@ function PublishView(props: PublishViewProps) { if (!monographAnalytics?.isAllowed || !monograph) return { totalViews: 0 }; return await db.monographs.analytics(monograph?.id); }, [monograph?.id, monographAnalytics]); + const publishUrl = usePromise(async () => { + return await db.monographs.publishUrl(note.id); + }, [monograph?.id, monograph?.publishUrl]); useEffect(() => { const fileDownloadedEvent = EV.subscribe( @@ -95,23 +98,27 @@ function PublishView(props: PublishViewProps) { variant="text.body" as="a" target="_blank" - href={`${hosts.MONOGRAPH_HOST}/${monograph?.id}`} + href={publishUrl.status === "fulfilled" ? publishUrl.value : "#"} sx={{ textOverflow: "ellipsis", whiteSpace: "nowrap", textDecoration: "none", overflow: "hidden", - px: 1 + px: 1, + opacity: publishUrl.status === "fulfilled" ? 1 : 0.8 }} > - {`${hosts.MONOGRAPH_HOST}/${monograph?.id}`} + {publishUrl.status === "fulfilled" ? publishUrl.value : ""}