From 5d82df9983818c4f5febd64c44e970bb5832964e Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Wed, 29 Nov 2023 13:52:25 +0200 Subject: [PATCH] DM-604 bug fix for release --- apps/red-ui/src/app/app-routing.module.ts | 8 ++++++- .../src/app/guards/dashboard-guard.service.ts | 3 ++- .../src/app/guards/dossier-files-guard.ts | 15 ++++++++----- .../src/app/guards/edit-attribute.guard.ts | 3 ++- .../notifications-screen.component.html | 9 ++++---- .../audit-info-dialog.component.ts | 14 ++++++------ .../base-signature-configuration-component.ts | 3 ++- ...kcs-signature-configuration.component.html | 11 +++++----- .../pkcs-signature-configuration.component.ts | 9 +++++--- .../smtp-auth-dialog.component.ts | 8 +++---- .../upload-dictionary-dialog.component.ts | 3 +-- .../screens/audit/audit-screen.component.html | 1 + .../digital-signature-screen.component.html | 7 +++--- .../add-dossier-dialog.component.html | 6 +++-- .../entity-services/dictionary.service.ts | 22 +++++++++---------- .../src/app/services/logger-rules.service.ts | 2 +- 16 files changed, 72 insertions(+), 52 deletions(-) diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index 7985561ac..de27d72b6 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -228,7 +228,13 @@ const routes: IqserRoutes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes, { scrollPositionRestoration: 'enabled', bindToComponentInputs: true })], + imports: [ + RouterModule.forRoot(routes, { + scrollPositionRestoration: 'enabled', + bindToComponentInputs: true, + paramsInheritanceStrategy: 'always', + }), + ], providers: [{ provide: RouteReuseStrategy, useExisting: CustomRouteReuseStrategy }], exports: [RouterModule], }) diff --git a/apps/red-ui/src/app/guards/dashboard-guard.service.ts b/apps/red-ui/src/app/guards/dashboard-guard.service.ts index 56c22ad95..f6568dc04 100644 --- a/apps/red-ui/src/app/guards/dashboard-guard.service.ts +++ b/apps/red-ui/src/app/guards/dashboard-guard.service.ts @@ -1,8 +1,9 @@ import { Injectable } from '@angular/core'; import { CanActivate } from '@angular/router'; -import { firstValueFrom } from 'rxjs'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; +import { firstValueFrom } from 'rxjs'; +// TODO: Remove this and use a CanActivateFn instead @Injectable({ providedIn: 'root' }) export class DashboardGuard implements CanActivate { constructor(private readonly _dashboardStatsService: DashboardStatsService) {} diff --git a/apps/red-ui/src/app/guards/dossier-files-guard.ts b/apps/red-ui/src/app/guards/dossier-files-guard.ts index 45ece236d..177a5ceb7 100644 --- a/apps/red-ui/src/app/guards/dossier-files-guard.ts +++ b/apps/red-ui/src/app/guards/dossier-files-guard.ts @@ -1,16 +1,19 @@ import { Injectable, Injector, ProviderToken } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router'; -import { FilesMapService } from '@services/files/files-map.service'; -import { FilesService } from '@services/files/files.service'; -import { firstValueFrom } from 'rxjs'; +import { getConfig } from '@iqser/common-ui'; +import { TenantsService } from '@iqser/common-ui/lib/tenants'; import { DOSSIER_ID, DOSSIER_TEMPLATE_ID } from '@red/domain'; import { DossiersService } from '@services/dossiers/dossiers.service'; import { DictionaryService } from '@services/entity-services/dictionary.service'; import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service'; -import { TenantsService } from '@iqser/common-ui/lib/tenants'; +import { FilesMapService } from '@services/files/files-map.service'; +import { FilesService } from '@services/files/files.service'; +import { firstValueFrom } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class DossierFilesGuard implements CanActivate { + readonly isDocumine = getConfig().IS_DOCUMINE; + constructor( private readonly _injector: Injector, private readonly _tenantsService: TenantsService, @@ -45,8 +48,8 @@ export class DossierFilesGuard implements CanActivate { async loadDossierData(dossierId: string, dossierTemplateId: string) { const promises = []; - if (!this._dictionaryMapService.has(dossierId)) { - const dictionaryPromise = this._dictionaryService.loadDossierDictionary(dossierTemplateId, dossierId); + if (!this._dictionaryMapService.has(dossierId) && !this.isDocumine) { + const dictionaryPromise = this._dictionaryService.loadDossierRedaction(dossierTemplateId, dossierId); promises.push(dictionaryPromise); } diff --git a/apps/red-ui/src/app/guards/edit-attribute.guard.ts b/apps/red-ui/src/app/guards/edit-attribute.guard.ts index ea4027e88..654ef1588 100644 --- a/apps/red-ui/src/app/guards/edit-attribute.guard.ts +++ b/apps/red-ui/src/app/guards/edit-attribute.guard.ts @@ -1,7 +1,8 @@ -import { CanDeactivateFn } from '@angular/router'; import { inject } from '@angular/core'; +import { CanDeactivateFn } from '@angular/router'; import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { DossierOverviewScreenComponent } from '../modules/dossier-overview/screen/dossier-overview-screen.component'; +// TODO: rename to something like "isNotEditingFileAttributeGuard" export const editAttributeGuard: CanDeactivateFn = () => !inject(FileAttributesService).isEditingFileAttribute(); diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.html b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.html index b883c12df..7c072b355 100644 --- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.html +++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.html @@ -2,11 +2,12 @@
- {{ - translations[category] | translate - }} + {{ translations[category] | translate }} +
+
@@ -15,8 +16,8 @@
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts index 54780a7f3..323176785 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts @@ -1,14 +1,15 @@ -import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; -import { BaseDialogComponent } from '@iqser/common-ui'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { IAudit } from '@red/domain'; -import { DossierStatesService } from '@services/entity-services/dossier-states.service'; import { KeyValue } from '@angular/common'; +import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { BaseDialogComponent } from '@iqser/common-ui'; +import { IAudit } from '@red/domain'; interface DialogData { readonly auditEntry: IAudit; } +type OrderFn = (a: KeyValue, b: KeyValue) => number; + @Component({ selector: 'redaction-audit-info-dialog', templateUrl: './audit-info-dialog.component.html', @@ -17,14 +18,13 @@ interface DialogData { }) export class AuditInfoDialogComponent extends BaseDialogComponent { constructor( - private readonly _dossierStatesService: DossierStatesService, protected readonly _dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) readonly data: DialogData, ) { super(_dialogRef, false); } - readonly originalOrder = (a: KeyValue, b: KeyValue): number => 0; + readonly originalOrder: OrderFn = () => 0; async save(): Promise { return; diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts index e52dd79ba..680f28786 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts @@ -1,8 +1,9 @@ import { BaseFormComponent } from '@iqser/common-ui'; -import { DigitalSignatureService } from '../../../services/digital-signature.service'; import { DigitalSignatureOption, DigitalSignatureOptions, IDigitalSignatureRequest } from '@red/domain'; import { firstValueFrom, Observable } from 'rxjs'; +import { DigitalSignatureService } from '../../../services/digital-signature.service'; +// TODO: This should be handled with services for each type of signature export abstract class BaseSignatureConfigurationComponent extends BaseFormComponent { file: File | null; diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.html b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.html index 49514c66a..aeb4390d6 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.html @@ -5,28 +5,29 @@ [readonly]="!!file" accept=".p12" > +
- +
- +
- +
- +
- +
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts index 259f9c9a1..f3ca8e9ee 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts @@ -1,10 +1,10 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { UntypedFormBuilder, Validators } from '@angular/forms'; -import { BaseSignatureConfigurationComponent } from '../base-signature-configuration-component'; import { DigitalSignatureOptions, IPkcsDigitalSignature, IPkcsDigitalSignatureRequest } from '@red/domain'; +import { lastIndexOfEnd } from '@utils/functions'; import { firstValueFrom } from 'rxjs'; import { DigitalSignatureService } from '../../../../services/digital-signature.service'; -import { lastIndexOfEnd } from '../../../../../../utils'; +import { BaseSignatureConfigurationComponent } from '../base-signature-configuration-component'; @Component({ selector: 'redaction-pkcs-signature-configuration', @@ -15,7 +15,10 @@ import { lastIndexOfEnd } from '../../../../../../utils'; export class PkcsSignatureConfigurationComponent extends BaseSignatureConfigurationComponent implements OnInit { @Input() digitalSignature!: IPkcsDigitalSignatureRequest; - constructor(protected readonly _digitalSignatureService: DigitalSignatureService, private readonly _formBuilder: UntypedFormBuilder) { + constructor( + protected readonly _digitalSignatureService: DigitalSignatureService, + private readonly _formBuilder: UntypedFormBuilder, + ) { super(_digitalSignatureService, DigitalSignatureOptions.PKCS); } diff --git a/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.ts index 0919ebbee..f87cd4345 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/smtp-auth-dialog/smtp-auth-dialog.component.ts @@ -1,9 +1,9 @@ import { Component, Inject } from '@angular/core'; -import { UntypedFormGroup, Validators } from '@angular/forms'; +import { Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { getCurrentUser } from '@users/user.service'; -import { ISmtpConfiguration } from '@red/domain'; import { BaseDialogComponent } from '@iqser/common-ui'; +import { ISmtpConfiguration } from '@red/domain'; +import { getCurrentUser } from '@users/user.service'; @Component({ selector: 'redaction-smtp-auth-dialog', @@ -25,7 +25,7 @@ export class SmtpAuthDialogComponent extends BaseDialogComponent { this._dialogRef.close(this.form.getRawValue()); } - private _getForm(): UntypedFormGroup { + private _getForm() { return this._formBuilder.group({ user: [this.data?.user || this.#currentUser.email, [Validators.required]], password: [this.data?.password, Validators.required], diff --git a/apps/red-ui/src/app/modules/admin/dialogs/upload-dictionary-dialog/upload-dictionary-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/upload-dictionary-dialog/upload-dictionary-dialog.component.ts index 2117b1040..f9376b2e2 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/upload-dictionary-dialog/upload-dictionary-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/upload-dictionary-dialog/upload-dictionary-dialog.component.ts @@ -1,5 +1,4 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { TranslateService } from '@ngx-translate/core'; import { MatDialogRef } from '@angular/material/dialog'; import { IconButtonTypes } from '@iqser/common-ui'; @@ -11,7 +10,7 @@ import { IconButtonTypes } from '@iqser/common-ui'; export class UploadDictionaryDialogComponent { readonly iconButtonTypes = IconButtonTypes; - constructor(private readonly _translateService: TranslateService, public dialogRef: MatDialogRef) {} + constructor(public dialogRef: MatDialogRef) {} cancel() { this.dialogRef.close(); diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html index 2a5d31257..1bfbdcf8b 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html @@ -96,6 +96,7 @@
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html index 93f531353..a83c6e586 100644 --- a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.html @@ -14,8 +14,8 @@ [helpModeKey]="'digital_signature'" [showButton]="permissionsService.has$(roles.digitalSignature.write) | async" [text]="'digital-signature-screen.no-data.title' | translate" - icon="iqser:document" buttonId="configure-certificate-btn" + icon="iqser:document" > @@ -23,6 +23,7 @@ *ngIf="currentCertificateType === certificateType.PKCS" [digitalSignature]="digitalSignature" > +
diff --git a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html index 4b123aad6..7863f8f8e 100644 --- a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html +++ b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html @@ -52,12 +52,14 @@
diff --git a/apps/red-ui/src/app/services/entity-services/dictionary.service.ts b/apps/red-ui/src/app/services/entity-services/dictionary.service.ts index 2cb0fac0a..7b4f4f4c1 100644 --- a/apps/red-ui/src/app/services/entity-services/dictionary.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dictionary.service.ts @@ -1,16 +1,16 @@ -import { Injectable } from '@angular/core'; -import { firstValueFrom, forkJoin, Observable, throwError } from 'rxjs'; -import { EntitiesService, QueryParam, Toaster } from '@iqser/common-ui'; -import { Dictionary, DictionaryEntryType, DictionaryEntryTypes, IDictionary, IUpdateDictionary, SuperTypes } from '@red/domain'; -import { catchError, map, switchMap, tap } from 'rxjs/operators'; -import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { DossierTemplateStatsService } from './dossier-template-stats.service'; -import { DictionariesMapService } from './dictionaries-map.service'; import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http'; -import { FALLBACK_COLOR } from '@utils/constants'; -import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service'; +import { Injectable } from '@angular/core'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { EntitiesService, QueryParam, Toaster } from '@iqser/common-ui'; import { List } from '@iqser/common-ui/lib/utils'; +import { Dictionary, DictionaryEntryType, DictionaryEntryTypes, IDictionary, IUpdateDictionary, SuperTypes } from '@red/domain'; +import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service'; +import { FALLBACK_COLOR } from '@utils/constants'; +import { firstValueFrom, forkJoin, Observable, throwError } from 'rxjs'; +import { catchError, map, switchMap, tap } from 'rxjs/operators'; import { IMAGE_CATEGORIES } from '../../modules/file-preview/utils/constants'; +import { DictionariesMapService } from './dictionaries-map.service'; +import { DossierTemplateStatsService } from './dossier-template-stats.service'; const IMAGE_TYPES = ['image', 'formula', 'ocr']; @@ -216,7 +216,7 @@ export class DictionaryService extends EntitiesService return possibleDictionaries; } - async loadDossierDictionary(dossierTemplateId: string, dossierId: string): Promise { + async loadDossierRedaction(dossierTemplateId: string, dossierId: string): Promise { const promise = this.getForType(dossierTemplateId, 'dossier_redaction', dossierId); const dict = await promise.catch(() => undefined); if (dict) { diff --git a/apps/red-ui/src/app/services/logger-rules.service.ts b/apps/red-ui/src/app/services/logger-rules.service.ts index 3db35feab..2f58bf2a1 100644 --- a/apps/red-ui/src/app/services/logger-rules.service.ts +++ b/apps/red-ui/src/app/services/logger-rules.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; -import { INGXLoggerConfig, NgxLoggerLevel, NGXLoggerRulesService } from 'ngx-logger'; import { ILoggerConfig } from '@red/domain'; +import { INGXLoggerConfig, NgxLoggerLevel, NGXLoggerRulesService } from 'ngx-logger'; @Injectable() export class LoggerRulesService extends NGXLoggerRulesService {