From 7046837740b4277a5ad8ef34e9e3459faf7c6eca Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 20 Apr 2026 22:29:31 -0700 Subject: [PATCH] Fix compatibility with duplicate_of instead of duplicate_documents --- .../admin/tasks/tasks.component.html | 23 +++++++++++++++++++ .../admin/tasks/tasks.component.spec.ts | 14 ++++++++++- .../components/admin/tasks/tasks.component.ts | 15 +++++++++++- 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.html b/src-ui/src/app/components/admin/tasks/tasks.component.html index 27f0e2e4d..8fd5ce174 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.html +++ b/src-ui/src/app/components/admin/tasks/tasks.component.html @@ -173,6 +173,12 @@ @if (taskHasResultMessage(task) && !taskHasLongResultMessage(task)) { {{ taskResultMessage(task) }} } + @if (duplicateDocumentId(task)) { +
{{ taskResultPopoverMessage(task) }}@if (taskResultMessageOverflowsPopover(task)) {
…
@@ -214,6 +220,23 @@
}
+ @if (duplicateDocumentId(task); as duplicateDocumentId) {
+
+ Duplicate
+
+
+ {{ duplicateTaskLabel(task) }}
+
+
+
+
+ }
+
diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts
index dc98b7cb2..cf17b411a 100644
--- a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts
+++ b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts
@@ -94,7 +94,7 @@ const tasks: PaperlessTask[] = [
trigger_source_display: 'Email Consume',
status: PaperlessTaskStatus.Success,
status_display: 'Success',
- result_data: { document_id: 422 },
+ result_data: { document_id: 422, duplicate_of: 99 },
acknowledged: false,
related_document_ids: [422],
},
@@ -344,6 +344,18 @@ describe('TasksComponent', () => {
expect(detailText).toContain('"issues_found": 0')
})
+ it('should show duplicate warnings and duplicate details when present', () => {
+ component.setSection(TaskSection.Completed)
+ component.expandTask(tasks[3])
+ fixture.detectChanges()
+
+ const content = fixture.nativeElement.textContent
+
+ expect(content).toContain('Duplicate of document #99')
+ expect(content).toContain('Duplicate')
+ expect(content).toContain('Open')
+ })
+
it('should support dismiss single task', () => {
const dismissSpy = jest.spyOn(tasksService, 'dismissTasks')
component.dismissTask(tasks[0])
diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.ts b/src-ui/src/app/components/admin/tasks/tasks.component.ts
index 87e26866b..7e8155bac 100644
--- a/src-ui/src/app/components/admin/tasks/tasks.component.ts
+++ b/src-ui/src/app/components/admin/tasks/tasks.component.ts
@@ -371,7 +371,7 @@ export class TasksComponent
const duplicateOf = task.result_data?.['duplicate_of']
if (typeof duplicateOf === 'number') {
- return `Not consuming: It is a duplicate of document #${duplicateOf}`
+ return `Duplicate of document #${duplicateOf}`
}
const errorMessage = task.result_data?.['error_message']
@@ -399,6 +399,19 @@ export class TasksComponent
return !!this.taskResultMessage(task)
}
+ duplicateDocumentId(task: PaperlessTask): number | null {
+ const duplicateOf = task.result_data?.['duplicate_of']
+ return typeof duplicateOf === 'number' ? duplicateOf : null
+ }
+
+ duplicateTaskLabel(task: PaperlessTask): string {
+ return $localize`Duplicate of document #${this.duplicateDocumentId(task)}`
+ }
+
+ openDuplicateDocument(documentId: number) {
+ this.router.navigate(['documents', documentId, 'details'])
+ }
+
taskResultPopoverMessage(task: PaperlessTask): string {
return this.taskResultMessage(task)?.slice(0, 300) ?? ''
}