Skip to content
43 changes: 43 additions & 0 deletions apps/roam/src/utils/registerCommandPaletteCommands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {
getPersonalSetting,
setPersonalSetting,
setGlobalSetting,
isSyncEnabled,
} from "~/components/settings/utils/accessors";
import {
DISCOURSE_NODE_KEYS,
Expand Down Expand Up @@ -244,6 +245,45 @@ export const registerCommandPaletteCommands = (onloadArgs: OnloadArgs) => {
});
};

const shareCurrentNode = () => {
const pageUid = getCurrentPageUid();
if (!pageUid) {
renderToast({
id: "share-node-no-page",
content: "Navigate to a discourse node page to share it.",
});
return;
}

const pageTitle = getPageTitleByPageUid(pageUid);
if (!pageTitle) {
renderToast({
id: "share-node-no-title",
content: "Could not determine the current page title.",
});
return;
}

const discourseNode = findDiscourseNode({ uid: pageUid, title: pageTitle });
if (!discourseNode || discourseNode.backedBy === "default") {
renderToast({
id: "share-node-not-a-node",
content: "This page is not a discourse node, so it can't be shared.",
});
return;
}

posthog.capture("Share Node: Current Node Command Triggered", {
pageUid,
nodeType: discourseNode.type,
});

exportRender({
results: [{ uid: pageUid, text: pageTitle, type: discourseNode.type }],
isExportDiscourseGraph: true,
});
Comment thread
sid597 marked this conversation as resolved.
Outdated
};

const exportDiscourseGraph = async () => {
posthog.capture("Export: Discourse Graph Command Triggered");
const discourseNodes = getDiscourseNodes().filter(excludeDefaultNodes);
Expand Down Expand Up @@ -364,6 +404,9 @@ export const registerCommandPaletteCommands = (onloadArgs: OnloadArgs) => {
void addCommand("DG: Export - Current page", exportCurrentPage);
void addCommand("DG: Export - Discourse graph", exportDiscourseGraph);
void addCommand("DG: Open - Discourse settings", renderSettingsPopup);
if (isSyncEnabled()) {
void addCommand("DG: Share current node", shareCurrentNode);
}
if (getFeatureFlag("Advanced node search enabled")) {
void addCommand("DG: Open Node Search", () => {
posthog.capture("Node Search: Open Command Triggered");
Expand Down