fix: make note renames crash-safe

This commit is contained in:
lucaronin
2026-04-22 21:18:38 +02:00
parent 0ffb7c65a9
commit 9fda0a67ec
13 changed files with 703 additions and 258 deletions

View File

@@ -7,6 +7,7 @@ import { slugify } from './useNoteCreation'
interface RenameResult {
new_path: string
updated_files: number
failed_updates?: number
}
export { slugify }
@@ -86,7 +87,14 @@ export async function loadNoteContent({ path }: LoadNoteContentRequest): Promise
: mockInvoke<string>('get_note_content', { path })
}
export function renameToastMessage(updatedFiles: number): string {
export function renameToastMessage(updatedFiles: number, failedUpdates = 0): string {
if (failedUpdates > 0) {
const noteLabel = `${failedUpdates} linked note${failedUpdates > 1 ? 's' : ''}`
if (updatedFiles === 0) {
return `Renamed, but ${noteLabel} need${failedUpdates === 1 ? 's' : ''} manual updates`
}
return `Updated ${updatedFiles} note${updatedFiles > 1 ? 's' : ''}, but ${noteLabel} need${failedUpdates === 1 ? 's' : ''} manual updates`
}
if (updatedFiles === 0) return 'Renamed'
return `Updated ${updatedFiles} note${updatedFiles > 1 ? 's' : ''}`
}
@@ -166,7 +174,7 @@ export function useNoteRename(config: NoteRenameConfig, tabDeps: RenameTabDeps)
onEntryRenamed(oldPath, newEntry, newContent)
await reloadTabsAfterRename({ tabPaths: otherTabPaths, updateTabContent })
await reloadVaultAfterRename(reloadVault)
setToastMessage(renameToastMessage(result.updated_files))
setToastMessage(renameToastMessage(result.updated_files, result.failed_updates ?? 0))
}, [entries, setTabs, activeTabPathRef, handleSwitchTab, updateTabContent, reloadVault, setToastMessage])
const handleRenameNote = useCallback(async (