From 8ec3702df935794cb30bcb4c4c1b7c3a4acba1a4 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 | 21 ++++++++++++++----- packages/core/src/api/monographs.ts | 19 +++++++++++++++-- packages/core/src/collections/monographs.ts | 1 + packages/core/src/database/migrations.ts | 8 +++++++ packages/core/src/types.ts | 1 + 5 files changed, 43 insertions(+), 7 deletions(-) diff --git a/apps/web/src/components/publish-view/index.tsx b/apps/web/src/components/publish-view/index.tsx index bd7bc8610..598ef5491 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"; @@ -65,6 +65,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( @@ -96,23 +99,29 @@ 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 + : monograph?.publishUrl}