Move attachment folders when moving notes between categories

When renaming categories, notes are moved to new folders but their
.attachments.{noteId} folders were left behind. Now moveNoteWebDAV
also moves the attachment folder to the new category location.
This commit is contained in:
drelich
2026-03-26 09:51:43 +01:00
parent 511ebca4ad
commit b31f974411

View File

@@ -509,6 +509,32 @@ export class NextcloudAPI {
throw new Error(`Failed to move note: ${response.status}`);
}
// Move attachment folder if it exists
const noteIdStr = String(note.id);
const justFilename = noteIdStr.split('/').pop() || noteIdStr;
const sanitizedNoteId = justFilename.replace(/\.(md|txt)$/, '').replace(/[^\w\s-]/g, '_');
const attachmentFolder = `.attachments.${sanitizedNoteId}`;
const oldAttachmentPath = `/remote.php/dav/files/${this.username}/Notes${oldCategoryPath}/${attachmentFolder}`;
const newAttachmentPath = `/remote.php/dav/files/${this.username}/Notes${newCategoryPath}/${attachmentFolder}`;
try {
const attachmentResponse = await tauriFetch(`${this.serverURL}${oldAttachmentPath}`, {
method: 'MOVE',
headers: {
'Authorization': this.authHeader,
'Destination': `${this.serverURL}${newAttachmentPath}`,
},
});
if (attachmentResponse.ok || attachmentResponse.status === 201 || attachmentResponse.status === 204) {
console.log(`Moved attachment folder: ${attachmentFolder}`);
}
} catch (e) {
// Attachment folder might not exist, that's okay
console.log(`No attachment folder to move for note: ${note.filename}`);
}
return {
...note,
category: newCategory,