diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-references-list/annotation-references-list.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-references-list/annotation-references-list.component.ts
index b759f0d94..6657f3c96 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-references-list/annotation-references-list.component.ts
+++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-references-list/annotation-references-list.component.ts
@@ -1,8 +1,10 @@
-import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';
+import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { AnnotationReferencesService } from '../../services/annotation-references.service';
import { File } from '@red/domain';
-import { FileDataModel } from '@models/file/file-data.model';
+import { FilePreviewStateService } from '../../services/file-preview-state.service';
+import { combineLatest, Observable } from 'rxjs';
+import { filter, map } from 'rxjs/operators';
@Component({
selector: 'redaction-annotation-references-list',
@@ -10,18 +12,23 @@ import { FileDataModel } from '@models/file/file-data.model';
styleUrls: ['./annotation-references-list.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class AnnotationReferencesListComponent implements OnChanges {
- @Input() annotation: AnnotationWrapper;
+export class AnnotationReferencesListComponent {
@Input() file: File;
- @Input() fileData: FileDataModel;
@Input() selectedAnnotations: AnnotationWrapper[];
@Output() readonly referenceClicked = new EventEmitter
();
- annotationReferences: AnnotationWrapper[];
+ references$ = this._annotationReferences;
- constructor(readonly annotationReferencesService: AnnotationReferencesService) {}
+ constructor(
+ readonly annotationReferencesService: AnnotationReferencesService,
+ private readonly _filePreviewStateService: FilePreviewStateService,
+ ) {}
- ngOnChanges(): void {
- this.annotationReferences = this.fileData.allAnnotations.filter(a => this.annotation.reference.includes(a.annotationId));
+ private get _annotationReferences(): Observable {
+ const combination = combineLatest([this.annotationReferencesService.annotation$, this._filePreviewStateService.fileData$]);
+ return combination.pipe(
+ filter(([annotation]) => !!annotation),
+ map(([{ reference }, fileData]) => fileData.allAnnotations.filter(a => reference.includes(a.annotationId))),
+ );
}
isSelected(annotationId: string): boolean {
diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.html b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.html
index d45e29274..0ad1cdb71 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.html
+++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.html
@@ -44,11 +44,9 @@