From c9f7f2cfbe0181cfda2ac5b707604b7c1b6c6507 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 23 Sep 2026 12:12:26 -0700 Subject: [PATCH] Fix: ensure documentDeleted subscription is discarded (#14247) --- .../document-list/document-list.component.spec.ts | 13 +++++++++++++ .../document-list/document-list.component.ts | 9 ++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src-ui/src/app/components/document-list/document-list.component.spec.ts b/src-ui/src/app/components/document-list/document-list.component.spec.ts index 3ef7a7ffa..798abc1c8 100644 --- a/src-ui/src/app/components/document-list/document-list.component.spec.ts +++ b/src-ui/src/app/components/document-list/document-list.component.spec.ts @@ -146,6 +146,19 @@ describe('DocumentListComponent', () => { expect(reloadSpy).toHaveBeenCalled() }) + it('should stop reloading on document deleted after destroy', () => { + const reloadSpy = jest.spyOn(documentListService, 'reload') + const documentDeletedSubject = new Subject() + jest + .spyOn(websocketStatusService, 'onDocumentDeleted') + .mockReturnValue(documentDeletedSubject) + fixture.detectChanges() + fixture.destroy() + reloadSpy.mockClear() + documentDeletedSubject.next(true) + expect(reloadSpy).not.toHaveBeenCalled() + }) + it('should show score sort fields on fulltext queries', () => { documentListService.setFilterRules([ { diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index 358d94547..48e4841f3 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -270,9 +270,12 @@ export class DocumentListComponent this.list.reload() }) - this.websocketStatusService.onDocumentDeleted().subscribe(() => { - this.list.reload() - }) + this.websocketStatusService + .onDocumentDeleted() + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe(() => { + this.list.reload() + }) this.route.paramMap .pipe(