]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Handle very old date strings in correspondent list 3953/head
authorshamoon <4887959+shamoon@users.noreply.github.com>
Mon, 7 Aug 2023 22:48:00 +0000 (15:48 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Tue, 8 Aug 2023 00:31:38 +0000 (17:31 -0700)
src-ui/src/app/components/document-detail/document-detail.component.spec.ts
src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.spec.ts
src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts
src-ui/src/app/data/paperless-correspondent.ts

index 6ca99803c18c471969c5003bb5ebe8af639ef7e7..dee1435b72623849a1c61908efb63c489f33e3a5 100644 (file)
@@ -668,7 +668,7 @@ describe('DocumentDetailComponent', () => {
     const object = {
       id: 22,
       name: 'Correspondent22',
-      last_correspondence: new Date(),
+      last_correspondence: new Date().toISOString(),
     } as PaperlessCorrespondent
     const qfSpy = jest.spyOn(documentListViewService, 'quickFilter')
     component.filterDocuments([object])
index 4f68a609b28b7045c31834418a3271cee6a8e072..d2168d8bd0ead2545d50675b2e69575c311302c0 100644 (file)
@@ -31,8 +31,12 @@ describe('CorrespondentListComponent', () => {
         ReactiveFormsModule,
       ],
     }).compileComponents()
-
     correspondentsService = TestBed.inject(CorrespondentService)
+  })
+
+  // Tests are included in management-list.compontent.spec.ts
+
+  it('should use correct delete message', () => {
     jest.spyOn(correspondentsService, 'listFiltered').mockReturnValue(
       of({
         count: 3,
@@ -56,15 +60,30 @@ describe('CorrespondentListComponent', () => {
     fixture = TestBed.createComponent(CorrespondentListComponent)
     component = fixture.componentInstance
     fixture.detectChanges()
-  })
 
-  // Tests are included in management-list.compontent.spec.ts
-
-  it('should use correct delete message', () => {
     expect(
       component.getDeleteMessage({ id: 1, name: 'Correspondent1' })
     ).toEqual(
       'Do you really want to delete the correspondent "Correspondent1"?'
     )
   })
+
+  it('should support very old date strings', () => {
+    jest.spyOn(correspondentsService, 'listFiltered').mockReturnValue(
+      of({
+        count: 1,
+        all: [1],
+        results: [
+          {
+            id: 1,
+            name: 'Correspondent1',
+            last_correspondence: '1832-12-31T15:32:54-07:52:58',
+          },
+        ],
+      })
+    )
+    fixture = TestBed.createComponent(CorrespondentListComponent)
+    component = fixture.componentInstance
+    fixture.detectChanges()
+  })
 })
index d75d208ef64126a23a94a9902793d6f7ec7c6824..06f9d11b104897a88be4c396bb624cde60639be4 100644 (file)
@@ -44,7 +44,19 @@ export class CorrespondentListComponent extends ManagementListComponent<Paperles
           key: 'last_correspondence',
           name: $localize`Last used`,
           valueFn: (c: PaperlessCorrespondent) => {
-            return this.datePipe.transform(c.last_correspondence)
+            if (c.last_correspondence) {
+              let date = new Date(c.last_correspondence)
+              if (date.toString() == 'Invalid Date') {
+                // very old date strings are unable to be parsed
+                date = new Date(
+                  c.last_correspondence
+                    ?.toString()
+                    .replace(/-(\d\d):\d\d:\d\d/gm, `-$1:00`)
+                )
+              }
+              return this.datePipe.transform(date)
+            }
+            return ''
           },
         },
       ]
index 142efd4525188b150a1c90a44a4201b881526e17..89aa6a6944de52b5927358362ce65416a89a6a4b 100644 (file)
@@ -1,5 +1,5 @@
 import { MatchingModel } from './matching-model'
 
 export interface PaperlessCorrespondent extends MatchingModel {
-  last_correspondence?: Date
+  last_correspondence?: string // Date
 }