diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 2d0f75243..c0b5cf9b0 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -144,15 +144,11 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti this._dialogService.openDialog('confirm', data, async () => { this._loadingService.start(); - await firstValueFrom(this._trashService.deleteDossier(this.dossier)); - this._editDossierDialogRef.close(); - await this._router.navigate([`/${this._tenantsService.activeTenantId}${this.dossier.dossiersListRouterLink}`]); + const successful = await this._trashService.deleteDossier(this.dossier); + if (successful) { + await this.#closeDialogAndRedirectToDossier(); + } this._loadingService.stop(); - this._toaster.success(_('edit-dossier-dialog.delete-successful'), { - params: { - dossierName: this.dossier.dossierName, - }, - }); }); } @@ -193,6 +189,16 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti return this._dossierStatesMapService.get(this.dossier.dossierTemplateId, stateId).color; } + async #closeDialogAndRedirectToDossier() { + this._editDossierDialogRef.close(); + await this._router.navigate([`/${this._tenantsService.activeTenantId}${this.dossier.dossiersListRouterLink}`]); + this._toaster.success(_('edit-dossier-dialog.delete-successful'), { + params: { + dossierName: this.dossier.dossierName, + }, + }); + } + #getForm(): UntypedFormGroup { const formFieldWithArchivedCheck = value => ({ value, disabled: !this.dossier.isActive }); return this._formBuilder.group({ diff --git a/apps/red-ui/src/app/services/entity-services/trash.service.ts b/apps/red-ui/src/app/services/entity-services/trash.service.ts index 921c40d9f..2b8365f93 100644 --- a/apps/red-ui/src/app/services/entity-services/trash.service.ts +++ b/apps/red-ui/src/app/services/entity-services/trash.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { EntitiesService, QueryParam, Toaster } from '@iqser/common-ui'; import { Dossier, File, IDossier, IFile, TrashDossier, TrashFile, TrashItem } from '@red/domain'; import { catchError, switchMap, take, tap } from 'rxjs/operators'; -import { forkJoin, map, Observable, of } from 'rxjs'; +import { firstValueFrom, forkJoin, map, Observable, of } from 'rxjs'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { PermissionsService } from '../permissions.service'; import { ActiveDossiersService } from '../dossiers/active-dossiers.service'; @@ -31,18 +31,20 @@ export class TrashService extends EntitiesService { super(); } - deleteDossier(dossier: Dossier): Observable { + deleteDossier(dossier: Dossier) { const showToast = () => { this._toaster.error(_('dossier-listing.delete.delete-failed'), { params: { dossierName: dossier.dossierName } }); - return of({}); + return of(undefined); }; const reloadDossiers$ = dossier.isActive ? this._activeDossiersService.loadAll() : this._archivedDossiersService.loadAll(); - return this.delete(dossier.id, 'dossier').pipe( + const request$ = this.delete(dossier.id, 'dossier').pipe( switchMap(() => reloadDossiers$), catchError(showToast), ); + + return firstValueFrom(request$); } restore(items: TrashItem[]): Observable { diff --git a/apps/red-ui/src/app/services/license.service.ts b/apps/red-ui/src/app/services/license.service.ts index 7c1dd0d14..8ababb1a5 100644 --- a/apps/red-ui/src/app/services/license.service.ts +++ b/apps/red-ui/src/app/services/license.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { inject, Injectable } from '@angular/core'; import { GenericService } from '@iqser/common-ui'; import { ILicense, ILicenseReport, ILicenseReportRequest, ILicenses } from '@red/domain'; import { BehaviorSubject, firstValueFrom, Observable, of } from 'rxjs'; @@ -39,6 +39,10 @@ const defaultOnError: ILicenses = { providedIn: 'root', }) export class LicenseService extends GenericService { + readonly #licenseData$ = new BehaviorSubject(undefined); + readonly #selectedLicense$ = new BehaviorSubject(undefined); + readonly #logger = inject(NGXLogger); + protected readonly _defaultModelPath = 'report'; readonly licenseData$: Observable; readonly selectedLicense$: Observable; activeLicenseId: string; @@ -48,9 +52,19 @@ export class LicenseService extends GenericService { unlicensedPages = 0; analyzedPagesInCurrentLicensingPeriod = 0; uploadedBytesCapacity = 0; - protected readonly _defaultModelPath = 'report'; - readonly #licenseData$ = new BehaviorSubject(undefined); - readonly #selectedLicense$ = new BehaviorSubject(undefined); + + constructor() { + super(); + this.selectedLicense$ = this.#selectedLicense$.pipe(filter(license => !!license)); + this.licenseData$ = this.#licenseData$.pipe( + filter(licenses => !!licenses), + tap(data => (this.activeLicenseId = data.activeLicense)), + tap(() => { + const uploadedBytesCapacity = this.activeLicense.features.find(f => f.name === 'uploadedBytesCapacity')?.value; + this.uploadedBytesCapacity = uploadedBytesCapacity ? parseInt(uploadedBytesCapacity, 10) : 0; + }), + ); + } get selectedLicense() { return this.#selectedLicense$.value; @@ -66,20 +80,13 @@ export class LicenseService extends GenericService { } get activeLicenseKey(): string { - return this.activeLicense.features.find(f => f.name === 'pdftron').value; - } + const activeLicense = this.activeLicense; + if (!activeLicense) { + this.#logger.error('[LICENSE] No active license found!'); + return ''; + } - constructor(private readonly _logger: NGXLogger) { - super(); - this.selectedLicense$ = this.#selectedLicense$.pipe(filter(license => !!license)); - this.licenseData$ = this.#licenseData$.pipe( - filter(licenses => !!licenses), - tap(data => (this.activeLicenseId = data.activeLicense)), - tap(() => { - const uploadedBytesCapacity = this.activeLicense.features.find(f => f.name === 'uploadedBytesCapacity')?.value; - this.uploadedBytesCapacity = uploadedBytesCapacity ? parseInt(uploadedBytesCapacity, 10) : 0; - }), - ); + return activeLicense.features.find(f => f.name === 'pdftron').value; } async loadLicenseData(license: ILicense = this.selectedLicense) { diff --git a/libs/common-ui b/libs/common-ui index f631395f6..30846478e 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit f631395f613e6cbeaf71826dac4dc8446be33520 +Subproject commit 30846478ed6a112813953b9217a69ef047ffa217