diff --git a/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts b/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts index a8fa7fb05..184d986bd 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts @@ -18,7 +18,7 @@ import type { import { dictionaryActionsTranslations, manualRedactionActionsTranslations } from '@translations/annotation-actions-translations'; import { Roles } from '@users/roles'; import { NGXLogger } from 'ngx-logger'; -import { EMPTY, of, OperatorFunction } from 'rxjs'; +import { EMPTY, of, OperatorFunction, pipe } from 'rxjs'; import { catchError, tap } from 'rxjs/operators'; function getResponseType(error: boolean, isConflict: boolean) { @@ -63,13 +63,11 @@ export class ManualRedactionService extends GenericService { } changeLegalBasis(body: List, dossierId: string, fileId: string) { - return this.legalBasisChange(body, dossierId, fileId).pipe( - ...(this.#showToast('change-legal-basis') as [OperatorFunction]), - ); + return this.legalBasisChange(body, dossierId, fileId).pipe(this.#showToast('change-legal-basis')); } recategorizeRedactions(body: List, dossierId: string, fileId: string) { - return this.recategorize(body, dossierId, fileId).pipe(...(this.#showToast('change-type') as [OperatorFunction])); + return this.recategorize(body, dossierId, fileId).pipe(this.#showToast('change-type')); } addAnnotation( @@ -79,32 +77,26 @@ export class ManualRedactionService extends GenericService { options?: { hint?: boolean; dictionaryLabel?: string }, ) { const toast = requests[0].addToDictionary - ? [this.#showAddToDictionaryToast(requests, options?.dictionaryLabel)] + ? this.#showAddToDictionaryToast(requests, options?.dictionaryLabel) : this.#showToast(options?.hint ? 'force-hint' : 'add'); const canAddRedaction = this._iqserPermissionsService.has(Roles.redactions.write); if (canAddRedaction) { - return this.add(requests, dossierId, fileId).pipe(...(toast as [OperatorFunction])); + return this.add(requests, dossierId, fileId).pipe(toast); } return of(undefined); } bulkForce(requests: List, dossierId: string, fileId: string, isIgnoredHint = false) { - return this.forceRedaction(requests, dossierId, fileId).pipe( - ...(this.#showToast(!isIgnoredHint ? 'force-redaction' : 'force-hint') as [OperatorFunction]), - ); + return this.forceRedaction(requests, dossierId, fileId).pipe(this.#showToast(!isIgnoredHint ? 'force-redaction' : 'force-hint')); } undoRequest(annotationIds: List, dossierId: string, fileId: string, modifyDictionary = false) { - return this.undo(annotationIds, dossierId, fileId).pipe( - ...(this.#showToast('undo', modifyDictionary) as [OperatorFunction]), - ); + return this.undo(annotationIds, dossierId, fileId).pipe(this.#showToast('undo', modifyDictionary)); } removeRedaction(body: List, dossierId: string, fileId: string, removeFromDictionary = false, isHint = false) { - return this.remove(body, dossierId, fileId).pipe( - ...(this.#showToast(!isHint ? 'remove' : 'remove-hint', removeFromDictionary) as [OperatorFunction]), - ); + return this.remove(body, dossierId, fileId).pipe(this.#showToast(!isHint ? 'remove' : 'remove-hint', removeFromDictionary)); } getTitle(type: ManualRedactionEntryType) { @@ -157,8 +149,8 @@ export class ManualRedactionService extends GenericService { }); } - #showToast(action: ManualRedactionActions | DictionaryActions, isDictionary = false): OperatorFunction[] { - return [ + #showToast(action: ManualRedactionActions | DictionaryActions, isDictionary = false) { + return pipe( catchError((error: unknown) => { const isConflict = (error as HttpErrorResponse).status === HttpStatusCode.Conflict; this._toaster.error(getMessage(action, isDictionary, true, isConflict), { @@ -168,13 +160,12 @@ export class ManualRedactionService extends GenericService { return EMPTY; }), tap(() => this._toaster.success(getMessage(action, isDictionary), { positionClass: 'toast-file-preview' })), - ]; + ); } #showAddToDictionaryToast(body: List, dictionaryLabel?: string) { - return tap({ - next: () => this._toaster.success(getDictionaryMessage('add'), { positionClass: 'toast-file-preview' }), - error: (error: unknown) => { + return pipe( + catchError((error: unknown) => { const isConflict = (error as HttpErrorResponse).status === HttpStatusCode.Conflict; this._toaster.error(getDictionaryMessage('add', true, isConflict), { error: error as HttpErrorResponse, @@ -184,7 +175,11 @@ export class ManualRedactionService extends GenericService { }, positionClass: 'toast-file-preview', }); - }, - }); + return EMPTY; + }), + tap({ + next: () => this._toaster.success(getDictionaryMessage('add'), { positionClass: 'toast-file-preview' }), + }), + ); } }