]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: reset documents sort field if user deletes the custom field (#9127)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Sun, 16 Feb 2025 15:24:17 +0000 (07:24 -0800)
committerGitHub <noreply@github.com>
Sun, 16 Feb 2025 15:24:17 +0000 (07:24 -0800)
src-ui/src/app/components/manage/custom-fields/custom-fields.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/rest/document.service.ts

index 9a17a45287fe30888de03b646081dbb26a74ef37..a431453d44f218813730f5bf975a8ccfdca25abd 100644 (file)
@@ -16,6 +16,7 @@ import { IfPermissionsDirective } from 'src/app/directives/if-permissions.direct
 import { DocumentListViewService } from 'src/app/services/document-list-view.service'
 import { PermissionsService } from 'src/app/services/permissions.service'
 import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service'
+import { DocumentService } from 'src/app/services/rest/document.service'
 import { SettingsService } from 'src/app/services/settings.service'
 import { ToastService } from 'src/app/services/toast.service'
 import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component'
@@ -48,7 +49,8 @@ export class CustomFieldsComponent
     private modalService: NgbModal,
     private toastService: ToastService,
     private documentListViewService: DocumentListViewService,
-    private settingsService: SettingsService
+    private settingsService: SettingsService,
+    private documentService: DocumentService
   ) {
     super()
   }
@@ -85,6 +87,7 @@ export class CustomFieldsComponent
         this.toastService.showInfo($localize`Saved field "${newField.name}".`)
         this.customFieldsService.clearCache()
         this.settingsService.initializeDisplayFields()
+        this.documentService.reload()
         this.reload()
       })
     modal.componentInstance.failed
@@ -111,6 +114,7 @@ export class CustomFieldsComponent
           this.toastService.showInfo($localize`Deleted field "${field.name}"`)
           this.customFieldsService.clearCache()
           this.settingsService.initializeDisplayFields()
+          this.documentService.reload()
           this.reload()
         },
         error: (e) => {
index b4be8bfcfee50d1aa0baaedf79f11c6670ef5ec5..82d3ac425103a4d43eca9dd18a6198089b123e74 100644 (file)
@@ -195,11 +195,7 @@ describe('DocumentListViewService', () => {
       { custom_field_999: ['Custom field not found'] },
       { status: 400, statusText: 'Unexpected error' }
     )
-    expect(documentListViewService.error).toEqual(
-      'custom_field_999: Custom field not found'
-    )
-    // reset the list
-    documentListViewService.sortField = 'created'
+    // resets itself
     req = httpTestingController.expectOne(
       `${environment.apiBaseUrl}documents/?page=1&page_size=50&ordering=-created&truncate_content=true`
     )
index 09d83a2fbc017aa1219052c173a8909eb3b29e5a..0c7d9f9e7be123f00957bfd6f1d03dc448f28710 100644 (file)
@@ -306,6 +306,14 @@ export class DocumentListViewService {
             // this happens when applying a filter: the current page might not be available anymore due to the reduced result set.
             activeListViewState.currentPage = 1
             this.reload()
+          } else if (
+            activeListViewState.sortField.indexOf('custom_field') === 0 &&
+            this.settings.allDisplayFields.find(
+              (f) => f.id === activeListViewState.sortField
+            ) === undefined
+          ) {
+            // e.g. field was deleted
+            this.sortField = 'created'
           } else {
             this.selectionData = null
             let errorMessage
index 6bc29276bfea2065411a438cb541821c240130fa..bbb611adfb473d137afc532eeaea30970eafcc54 100644 (file)
@@ -62,6 +62,10 @@ export class DocumentService extends AbstractPaperlessService<Document> {
     private customFieldService: CustomFieldsService
   ) {
     super(http, 'documents')
+    this.reload()
+  }
+
+  public reload() {
     if (
       this.permissionsService.currentUserCan(
         PermissionAction.View,