From f53c64f76d32700e74f82d2b0c88d2f42e134e0a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 7 Feb 2026 23:30:34 +0200 Subject: [PATCH] feat(client/import_preview): count attachments --- .../client/src/translations/en/translation.json | 2 ++ .../src/widgets/dialogs/import_preview.tsx | 1 + .../src/services/import/zip_preview.spec.ts | 17 +++++++++++++++++ apps/server/src/services/import/zip_preview.ts | 11 +++++++++-- packages/commons/src/lib/server_api.ts | 1 + 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index d78f7de1fc..62dc7fac4e 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -2295,6 +2295,8 @@ "notes_count_other": "{{count}} notes", "attributes_count_one": "{{count}} attribute", "attributes_count_other": "{{count}} attributes", + "attachments_count_one": "{{count}} attachment", + "attachments_count_other": "{{count}} attachments", "cancel": "Cancel", "import": "Import", "import_with_timeout": "Import ({{timeout}})", diff --git a/apps/client/src/widgets/dialogs/import_preview.tsx b/apps/client/src/widgets/dialogs/import_preview.tsx index 27ebab35d6..945b5af7bc 100644 --- a/apps/client/src/widgets/dialogs/import_preview.tsx +++ b/apps/client/src/widgets/dialogs/import_preview.tsx @@ -156,6 +156,7 @@ function SinglePreview({ preview }: { preview: ImportPreviewResponse }) {
{t("import_preview.notes_count", { count: preview.numNotes })} {t("import_preview.attributes_count", { count: preview.numAttributes })} + {t("import_preview.attachments_count", { count: preview.numAttachments })}
diff --git a/apps/server/src/services/import/zip_preview.spec.ts b/apps/server/src/services/import/zip_preview.spec.ts index 5e47fb52b0..ccbb1813bd 100644 --- a/apps/server/src/services/import/zip_preview.spec.ts +++ b/apps/server/src/services/import/zip_preview.spec.ts @@ -33,11 +33,28 @@ describe("Preview meta", () => { type: "label", name: "customRequestHandler", value: "" + }, + { + type: "label", + name: "safe", + value: "" + } + ], + attachments: [ + { + attachmentId: "YRAEUXCDKNtn", + title: "icon-color.svg", + role: "image", + mime: "image/svg+xml", + position: 10, + dataFileName: "Trilium Demo_icon-color.svg" } ] }); const result = previewMeta(meta); expect(result.numNotes).toBe(3); + expect(result.numAttributes).toBe(4); + expect(result.numAttachments).toBe(1); expect(result.isDangerous).toBe(true); expect(result.dangerousAttributes).toContain("widget"); expect(result.dangerousAttributes).toContain("customRequestHandler"); diff --git a/apps/server/src/services/import/zip_preview.ts b/apps/server/src/services/import/zip_preview.ts index de06fcb4bf..29ddb42d05 100644 --- a/apps/server/src/services/import/zip_preview.ts +++ b/apps/server/src/services/import/zip_preview.ts @@ -33,6 +33,7 @@ interface PreviewContext { dangerousAttributeCategories: Set; numNotes: number; numAttributes: number; + numAttachments: number; } export function previewMeta(meta: NoteMetaFile): Omit { @@ -40,7 +41,8 @@ export function previewMeta(meta: NoteMetaFile): Omit(), dangerousAttributeCategories: new Set(), numNotes: 0, - numAttributes: 0 + numAttributes: 0, + numAttachments: 0 }; previewMetaInternal(meta.files, context); @@ -49,7 +51,8 @@ export function previewMeta(meta: NoteMetaFile): Omit