diff --git a/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts b/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts index 9d466ccd1..2729dcad0 100644 --- a/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts +++ b/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts @@ -25,8 +25,9 @@ export const canRemoveFromDictionary = (annotation: AnnotationWrapper) => !annotation.pending && !annotation.hasBeenResized; -export const canRemoveRedaction = (permissions: AnnotationPermissions) => - permissions.canRemoveOnlyHere || permissions.canRemoveFromDictionary || permissions.canMarkAsFalsePositive; +export const canRemoveRedaction = (annotation: AnnotationWrapper, permissions: AnnotationPermissions) => + !annotation.isIgnoredHint && + (permissions.canRemoveOnlyHere || permissions.canRemoveFromDictionary || permissions.canMarkAsFalsePositive); export const canChangeLegalBasis = (annotation: AnnotationWrapper, canAddRedaction: boolean) => canAddRedaction && annotation.isRedacted && !annotation.pending; diff --git a/apps/red-ui/src/app/models/file/annotation.permissions.ts b/apps/red-ui/src/app/models/file/annotation.permissions.ts index aa287465d..bb9ca0e16 100644 --- a/apps/red-ui/src/app/models/file/annotation.permissions.ts +++ b/apps/red-ui/src/app/models/file/annotation.permissions.ts @@ -54,7 +54,7 @@ export class AnnotationPermissions { permissions.canMarkAsFalsePositive = canMarkAsFalsePositive(annotation, annotationEntity); permissions.canRemoveOnlyHere = canRemoveOnlyHere(annotation, canAddRedaction); permissions.canRemoveFromDictionary = canRemoveFromDictionary(annotation); - permissions.canRemoveRedaction = canRemoveRedaction(permissions); + permissions.canRemoveRedaction = canRemoveRedaction(annotation, permissions); permissions.canChangeLegalBasis = canChangeLegalBasis(annotation, canAddRedaction); permissions.canRecategorizeAnnotation = canRecategorizeAnnotation(annotation, canAddRedaction); permissions.canResizeAnnotation = canResizeAnnotation(annotation, canAddRedaction); diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts b/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts index ba84aa774..60cd1703f 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts @@ -60,14 +60,7 @@ export class AnnotationActionsComponent implements OnChanges { } get canRemoveRedaction(): boolean { - if (this.annotationPermissions.canRemoveRedaction) { - if (this.annotations.length > 1) { - const foundIgnoredHint = this.annotations.find(a => a.isIgnoredHint); - return !foundIgnoredHint && this.#sameType; - } - return true; - } - return false; + return this.annotationPermissions.canRemoveRedaction && this.#sameType; } get viewerAnnotations() { @@ -78,6 +71,11 @@ export class AnnotationActionsComponent implements OnChanges { return this.#annotations?.length === 1 && this.#annotations?.[0].id === this._annotationManager.resizingAnnotationId; } + get #sameType() { + const type = this.annotations[0].superType; + return this.annotations.every(a => a.superType === type); + } + constructor( readonly viewModeService: ViewModeService, readonly helpModeService: HelpModeService, @@ -126,6 +124,10 @@ export class AnnotationActionsComponent implements OnChanges { return this.annotationActionsService.cancelResize(this.#annotations[0]); } + helpModeKey(action: string) { + return this.#isDocumine ? `${action}_annotation` : ''; + } + #setPermissions() { this.annotationPermissions = AnnotationPermissions.forUser( this._permissionsService.isApprover(this._state.dossier()), @@ -134,13 +136,4 @@ export class AnnotationActionsComponent implements OnChanges { this._iqserPermissionsService, ); } - - helpModeKey(action: string) { - return this.#isDocumine ? `${action}_annotation` : ''; - } - - get #sameType() { - const type = this.annotations[0].superType; - return this.annotations.every(a => a.superType === type); - } } diff --git a/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts b/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts index 329236294..db391c1aa 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts @@ -26,6 +26,7 @@ export class PdfAnnotationActionsService { get(annotations: AnnotationWrapper[]): IHeaderElement[] { const availableActions: IHeaderElement[] = []; const permissions = this.#getAnnotationsPermissions(annotations); + const sameType = annotations.every(a => a.type === annotations[0].type); // you can only resize one annotation at a time if (permissions.canResizeAnnotation) { @@ -82,7 +83,7 @@ export class PdfAnnotationActionsService { availableActions.push(forceHintButton); } - if (permissions.canRemoveRedaction) { + if (permissions.canRemoveRedaction && sameType) { const removeRedactionButton = this.#getButton('trash', _('annotation-actions.remove-annotation.remove-redaction'), () => this.#annotationActionsService.removeRedaction(annotations, permissions), );