]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: table view doesnt immediately display custom fields on app startup (#6600)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Tue, 7 May 2024 15:30:34 +0000 (08:30 -0700)
committerGitHub <noreply@github.com>
Tue, 7 May 2024 15:30:34 +0000 (15:30 +0000)
src-ui/src/app/components/document-list/document-list.component.ts
src-ui/src/app/services/document-list-view.service.spec.ts
src-ui/src/app/services/document-list-view.service.ts
src-ui/src/app/services/settings.service.ts

index f345c7c3ec179d9c203bd450bf70bc5f34f80c96..03c2501825a10f0c49f7a7b2b4fdcaa1ab2df510 100644 (file)
@@ -209,6 +209,7 @@ export class DocumentListComponent
         takeUntil(this.unsubscribeNotifier)
       )
       .subscribe((queryParams) => {
+        this.updateDisplayCustomFields()
         if (queryParams.has('view')) {
           // loading a saved view on /documents
           this.loadViewConfig(parseInt(queryParams.get('view')))
index 2319d91aaae80d9c96f873f68518c785a9e9b468..73d0bc4295e15d4947da635b1fb19d71f53bb361 100644 (file)
@@ -591,4 +591,18 @@ describe('DocumentListViewService', () => {
       )
     )
   })
+
+  it('should not filter out custom fields if settings not initialized', () => {
+    const customFields = ['custom_field_1', 'custom_field_2']
+    documentListViewService.displayFields = customFields as any
+    settingsService.displayFieldsInitialized = false
+    expect(documentListViewService.displayFields).toEqual(customFields)
+    jest.spyOn(settingsService, 'allDisplayFields', 'get').mockReturnValue([
+      { id: DisplayField.ADDED, name: 'Added' },
+      { id: DisplayField.TITLE, name: 'Title' },
+      { id: 'custom_field_1', name: 'Custom Field 1' },
+    ] as any)
+    settingsService.displayFieldsInitialized = true
+    expect(documentListViewService.displayFields).toEqual(['custom_field_1'])
+  })
 })
index 715095266c4d2d0b252fea3e5b0852e9aecac601..677dcdb575397ba95c1bf0e864164d3612545910 100644 (file)
@@ -420,10 +420,13 @@ export class DocumentListViewService {
     if (!this.activeListViewState.displayFields) {
       fields = fields.filter((f) => f !== DisplayField.ADDED)
     }
-    return fields.filter(
-      (field) =>
-        this.settings.allDisplayFields.find((f) => f.id === field) !== undefined
-    )
+    return this.settings.displayFieldsInitialized
+      ? fields.filter(
+          (field) =>
+            this.settings.allDisplayFields.find((f) => f.id === field) !==
+            undefined
+        )
+      : fields
   }
 
   set displayFields(fields: DisplayField[]) {
index 4a411bafc22d2a4971a11fe99239e5c0c73ca684..7e671070149a4441f12933d4e10a45800f9859b8 100644 (file)
@@ -268,6 +268,7 @@ export class SettingsService {
   public get allDisplayFields(): Array<{ id: DisplayField; name: string }> {
     return this._allDisplayFields
   }
+  public displayFieldsInitialized: boolean = false
 
   constructor(
     rendererFactory: RendererFactory2,
@@ -361,7 +362,10 @@ export class SettingsService {
             }
           })
         )
+        this.displayFieldsInitialized = true
       })
+    } else {
+      this.displayFieldsInitialized = true
     }
   }