MCPcopy Create free account
hub / github.com/ZenNotes/zennotes / moveNote

Function moveNote

apps/desktop/src/mcp/vault-ops.ts:691–714  ·  view source on GitHub ↗
(
  root: string,
  oldRel: string,
  targetFolder: NoteFolder,
  targetSubpath: string
)

Source from the content-addressed store, hash-verified

689 moveBetweenFolders(root, rel, 'inbox')
690
691export async function moveNote(
692 root: string,
693 oldRel: string,
694 targetFolder: NoteFolder,
695 targetSubpath: string
696): Promise<NoteMeta> {
697 const oldAbs = resolveSafe(root, oldRel)
698 const filename = path.basename(oldAbs)
699 const cleanSub = targetSubpath.replace(/^\/+|\/+$/g, '')
700 const folderAbs = await folderRoot(root, targetFolder)
701 const destDir = cleanSub ? resolveSafe(folderAbs, cleanSub) : folderAbs
702 if (path.dirname(oldAbs) === destDir) {
703 const folder = folderOf(root, oldAbs)
704 if (!folder) throw new Error(`Note not in a known folder: ${oldRel}`)
705 return await readMeta(root, oldAbs, folder)
706 }
707 await fs.mkdir(destDir, { recursive: true })
708 const ext = path.extname(filename)
709 const baseTitle = path.basename(filename, ext)
710 const finalTitle = await uniqueTitle(destDir, baseTitle)
711 const destAbs = path.join(destDir, `${finalTitle}${ext}`)
712 await fs.rename(oldAbs, destAbs)
713 return await readMeta(root, destAbs, targetFolder)
714}
715
716export async function duplicateNote(root: string, rel: string): Promise<NoteMeta> {
717 const abs = resolveSafe(root, rel)

Callers 1

server.tsFile · 0.70

Calls 5

resolveSafeFunction · 0.70
folderRootFunction · 0.70
folderOfFunction · 0.70
readMetaFunction · 0.70
uniqueTitleFunction · 0.70

Tested by

no test coverage detected