From 4718df271fddbd0782586f50dd2f65bb79acc137 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 16 Feb 2025 07:24:17 -0800 Subject: [PATCH] Fix: reset documents sort field if user deletes the custom field (#9127) --- .../manage/custom-fields/custom-fields.component.ts | 6 +++++- .../src/app/services/document-list-view.service.spec.ts | 6 +----- src-ui/src/app/services/document-list-view.service.ts | 8 ++++++++ src-ui/src/app/services/rest/document.service.ts | 4 ++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts index 9a17a4528..a431453d4 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts @@ -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) => { diff --git a/src-ui/src/app/services/document-list-view.service.spec.ts b/src-ui/src/app/services/document-list-view.service.spec.ts index b4be8bfcf..82d3ac425 100644 --- a/src-ui/src/app/services/document-list-view.service.spec.ts +++ b/src-ui/src/app/services/document-list-view.service.spec.ts @@ -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` ) diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts index 09d83a2fb..0c7d9f9e7 100644 --- a/src-ui/src/app/services/document-list-view.service.ts +++ b/src-ui/src/app/services/document-list-view.service.ts @@ -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 diff --git a/src-ui/src/app/services/rest/document.service.ts b/src-ui/src/app/services/rest/document.service.ts index 6bc29276b..bbb611adf 100644 --- a/src-ui/src/app/services/rest/document.service.ts +++ b/src-ui/src/app/services/rest/document.service.ts @@ -62,6 +62,10 @@ export class DocumentService extends AbstractPaperlessService { private customFieldService: CustomFieldsService ) { super(http, 'documents') + this.reload() + } + + public reload() { if ( this.permissionsService.currentUserCan( PermissionAction.View,