diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index a0552c150..6686dc25f 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -107,7 +107,9 @@ const routes: Routes = [ pathMatch: 'full', loadChildren: () => import('./modules/dossiers-listing/dossiers-listing.module').then(m => m.DossiersListingModule), - data: { breadcrumbs: [BreadcrumbTypes.dossierTemplate] }, + data: { + breadcrumbs: [BreadcrumbTypes.dossierTemplate], + }, }, ], canActivate: [CompositeRouteGuard], 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 6a035632a..4dddfa180 100644 --- a/apps/red-ui/src/app/guards/dossier-files-guard.ts +++ b/apps/red-ui/src/app/guards/dossier-files-guard.ts @@ -23,16 +23,31 @@ export class DossierFilesGuard implements CanActivate { const token: ProviderToken = route.data.dossiersService; const dossiersService: DossiersService = this._injector.get(token); - await firstValueFrom(this._dictionaryService.loadDossierDictionary(dossierTemplateId, dossierId)); + if (!dossierId && dossierTemplateId) { + const dossiers = dossiersService.all.filter(dossier => dossier.dossierTemplateId === dossierTemplateId); + await Promise.all(dossiers.map(dossier => this.loadDossierData(dossier.dossierId, dossierTemplateId))); + return true; + } if (!dossiersService.has(dossierId)) { await this._router.navigate(['/main', dossierTemplateId]); return false; } - if (!this._filesMapService.has(dossierId)) { - await firstValueFrom(this._filesService.loadAll(dossierId)); - } + await this.loadDossierData(dossierId, dossierTemplateId); return true; } + + async loadDossierData(dossierId: string, dossierTemplateId: string) { + const promises = []; + + const dictionary$ = this._dictionaryService.loadDossierDictionary(dossierTemplateId, dossierId); + promises.push(firstValueFrom(dictionary$)); + + if (!this._filesMapService.has(dossierId)) { + promises.push(firstValueFrom(this._filesService.loadAll(dossierId))); + } + + return Promise.all(promises); + } } diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts index 2b93bbd1e..9a3d4ef08 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; -import { CircleButtonTypes, List, ScrollableParentView, ScrollableParentViews, StatusBarConfig } from '@iqser/common-ui'; +import { CircleButtonTypes, ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui'; import { UserService } from '@users/user.service'; import { Dossier, DossierStats, File } from '@red/domain'; import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service'; @@ -8,7 +8,6 @@ import { LongPressEvent } from '@shared/directives/long-press.directive'; import { UserPreferenceService } from '@users/user-preference.service'; import { FilesMapService } from '@services/files/files-map.service'; import { ReanalysisService } from '@services/reanalysis.service'; -import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { firstValueFrom } from 'rxjs'; @Component({ @@ -21,7 +20,6 @@ export class DossiersListingActionsComponent implements OnChanges { readonly currentUser = this._userService.currentUser; analysisForced: boolean; - statusBarConfig: List>; files: File[]; displayReanalyseBtn = false; @@ -31,7 +29,6 @@ export class DossiersListingActionsComponent implements OnChanges { constructor( private readonly _reanalysisService: ReanalysisService, private readonly _userService: UserService, - private readonly _activeDossiersService: ActiveDossiersService, readonly permissionsService: PermissionsService, readonly filesMapService: FilesMapService, private readonly _dialogService: DossiersDialogService, diff --git a/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts b/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts index 399d72b5b..40798365f 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts @@ -20,13 +20,16 @@ import { TableItemComponent } from './components/table-item/table-item.component import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; import { DossierWorkloadColumnComponent } from './components/dossier-workload-column/dossier-workload-column.component'; import { DossierDocumentsStatusComponent } from './components/dossier-documents-status/dossier-documents-status.component'; +import { DossierFilesGuard } from '@guards/dossier-files-guard'; +import { ACTIVE_DOSSIERS_SERVICE } from '../../tokens'; const routes: Routes = [ { path: '', component: DossiersListingScreenComponent, pathMatch: 'full', - data: { reuse: true }, + canActivate: [DossierFilesGuard], + data: { reuse: true, dossiersService: ACTIVE_DOSSIERS_SERVICE }, }, ];