From f114819e65b77b58eb097e3213f4b059a3e5d21d Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 19 Feb 2025 15:35:28 -0800 Subject: [PATCH] Prevent double-reload --- .../services/rest/saved-view.service.spec.ts | 23 +++++++++++++++++++ .../app/services/rest/saved-view.service.ts | 12 +++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src-ui/src/app/services/rest/saved-view.service.spec.ts b/src-ui/src/app/services/rest/saved-view.service.spec.ts index 7aea1a827..7b12e8533 100644 --- a/src-ui/src/app/services/rest/saved-view.service.spec.ts +++ b/src-ui/src/app/services/rest/saved-view.service.spec.ts @@ -133,6 +133,29 @@ describe(`Additional service tests for SavedViewService`, () => { expect(req.request.body.display_fields).toBeNull() }) + it('should support patch without reload', () => { + subscription = service + .patch( + { + id: 1, + name: 'Saved View', + show_on_dashboard: true, + show_in_sidebar: true, + sort_field: 'name', + sort_reverse: true, + filter_rules: [], + }, + false + ) + .subscribe() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}${endpoint}/1/` + ) + expect(req.request.method).toEqual('PATCH') + req.flush({}) + httpTestingController.verify() // no reload + }) + beforeEach(() => { // Dont need to setup again diff --git a/src-ui/src/app/services/rest/saved-view.service.ts b/src-ui/src/app/services/rest/saved-view.service.ts index 4d9361b21..ef794ae06 100644 --- a/src-ui/src/app/services/rest/saved-view.service.ts +++ b/src-ui/src/app/services/rest/saved-view.service.ts @@ -87,15 +87,21 @@ export class SavedViewService extends AbstractPaperlessService { return super.create(o).pipe(tap(() => this.reload())) } - patch(o: SavedView): Observable { + patch(o: SavedView, reload: boolean = false): Observable { if (o.display_fields?.length === 0) { o.display_fields = null } - return super.patch(o) + return super.patch(o).pipe( + tap(() => { + if (reload) { + this.reload() + } + }) + ) } patchMany(objects: SavedView[]): Observable { - return combineLatest(objects.map((o) => super.patch(o))).pipe( + return combineLatest(objects.map((o) => this.patch(o, false))).pipe( tap(() => this.reload()) ) }