From 22609b2cb01fbc66b5764b12dc6b27512cd946d9 Mon Sep 17 00:00:00 2001 From: sid597 Date: Sun, 7 Sep 2025 00:28:05 +0530 Subject: [PATCH] Move the new block as first child of the current block --- apps/roam/src/components/CreateNodeDialog.tsx | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/apps/roam/src/components/CreateNodeDialog.tsx b/apps/roam/src/components/CreateNodeDialog.tsx index 4e78e6c13..17853c63b 100644 --- a/apps/roam/src/components/CreateNodeDialog.tsx +++ b/apps/roam/src/components/CreateNodeDialog.tsx @@ -11,6 +11,7 @@ import getDiscourseNodes, { } from "~/utils/getDiscourseNodes"; import { getNewDiscourseNodeText } from "~/utils/formatUtils"; import MenuItemSelect from "roamjs-components/components/MenuItemSelect"; +import createBlock from "roamjs-components/writes/createBlock"; export type CreateNodeDialogProps = { onClose: () => void; @@ -48,6 +49,20 @@ const CreateNodeDialog = ({ if (!title.trim()) return; setLoading(true); + const query = `[:find ?parentUid ?order + :keys parentUid order + :in $ ?block-uid + :where + [?e :block/uid ?block-uid] + [?e :block/order ?order] + [?p :block/children ?e] + [?p :block/uid ?parentUid] + ]`; + + const blockData = ( + await window.roamAlphaAPI.data.async.q(query, sourceBlockUid) + )?.[0] as unknown as { parentUid: string; order: number }; + const formattedTitle = await getNewDiscourseNodeText({ text: title.trim(), nodeType: selectedType.type, @@ -71,7 +86,16 @@ const CreateNodeDialog = ({ // the correct reference. The reference format should be determined by the // node's specification. const pageRef = `[[${formattedTitle}]]`; - await updateBlock({ uid: sourceBlockUid, text: pageRef }); + const newBlockUid = await createBlock({ + node: { text: pageRef }, + parentUid: blockData.parentUid, + order: blockData.order, + }); + + await window.roamAlphaAPI.moveBlock({ + block: { uid: sourceBlockUid }, + location: { "parent-uid": newBlockUid, order: 0 }, + }); const newCursorPosition = pageRef.length; const windowId =