diff --git a/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.spec.ts b/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.spec.ts index 3b6add68c..0e16ac2b2 100644 --- a/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.spec.ts +++ b/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.spec.ts @@ -283,6 +283,22 @@ describe('PngxPdfViewerComponent', () => { expect(mockViewer.currentPageNumber).toBe(1) }) + it('reloads when the source revision changes', () => { + const resetSpy = jest.spyOn(component as any, 'resetViewerState') + const loadSpy = jest + .spyOn(component as any, 'loadDocument') + .mockImplementation(() => {}) + component.src = 'test.pdf' + component.sourceRevision = 1 + + component.ngOnChanges({ + sourceRevision: new SimpleChange(0, 1, false), + }) + + expect(resetSpy).toHaveBeenCalled() + expect(loadSpy).toHaveBeenCalled() + }) + it('applies viewer state after view init when already loaded', () => { const applySpy = jest.spyOn(component as any, 'applyViewerState') ;(component as any).hasLoaded = true diff --git a/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.ts b/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.ts index c86294b9d..4a0478316 100644 --- a/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.ts +++ b/src-ui/src/app/components/common/pdf-viewer/pdf-viewer.component.ts @@ -43,6 +43,7 @@ export class PngxPdfViewerComponent private readonly document = inject(DOCUMENT) @Input() src!: string + @Input() sourceRevision = 0 @Input() password?: string @Input() page?: number @Output() pageChange = new EventEmitter() @@ -93,7 +94,7 @@ export class PngxPdfViewerComponent } ngOnChanges(changes: SimpleChanges): void { - if (changes['src'] || changes['password']) { + if (changes['src'] || changes['sourceRevision'] || changes['password']) { this.resetViewerState() if (this.src) { this.loadDocument() diff --git a/src-ui/src/app/components/document-detail/document-detail.component.html b/src-ui/src/app/components/document-detail/document-detail.component.html index 83e5b4bfb..6ee6b442a 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.html +++ b/src-ui/src/app/components/document-detail/document-detail.component.html @@ -472,6 +472,7 @@
{ expect(openDoc.__changedFields).toEqual([]) expect(setDirtySpy).toHaveBeenCalledWith(openDoc, false) expect(saveSpy).toHaveBeenCalled() + expect(component.previewRevision()).toBe(1) }) it('should ignore incoming update for a different document id', () => { diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts index f2cc502c0..3820f9ed1 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.ts @@ -249,6 +249,7 @@ export class DocumentDetailComponent titleSubject: Subject = new Subject() readonly previewUrl = signal(undefined) readonly pdfSource = signal(undefined) + readonly previewRevision = signal(0) readonly pdfPassword = signal(undefined) readonly thumbUrl = signal(undefined) readonly previewText = signal(undefined) @@ -609,6 +610,9 @@ export class DocumentDetailComponent .subscribe() } this.updateComponent(useDoc) + if (forceRemote) { + this.previewRevision.update((revision) => revision + 1) + } this.titleSubject .pipe( debounceTime(1000),