fix file not loading on refresh
This commit is contained in:
parent
9a70607801
commit
a7a99efbc0
@ -3,6 +3,7 @@ import { RouterModule, Routes } from '@angular/router';
|
||||
import { CompositeRouteGuard } from '@iqser/common-ui';
|
||||
import { SearchScreenComponent } from './screens/search-screen/search-screen.component';
|
||||
import { FilePreviewScreenComponent } from './screens/file-preview-screen/file-preview-screen.component';
|
||||
import { FilesGuard } from './utils/file.guard';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
@ -17,6 +18,7 @@ const routes: Routes = [
|
||||
{
|
||||
path: ':dossierId/file/:fileId',
|
||||
component: FilePreviewScreenComponent,
|
||||
canActivate: [FilesGuard],
|
||||
data: {
|
||||
reuse: true,
|
||||
},
|
||||
|
||||
@ -40,6 +40,7 @@ import { OverlayModule } from '@angular/cdk/overlay';
|
||||
import { SharedDossiersModule } from './shared/shared-dossiers.module';
|
||||
import { PlatformSearchService } from './shared/services/platform-search.service';
|
||||
import { ResizeAnnotationDialogComponent } from './dialogs/resize-annotation-dialog/resize-annotation-dialog.component';
|
||||
import { FilesGuard } from './utils/file.guard';
|
||||
|
||||
const screens = [FilePreviewScreenComponent, SearchScreenComponent];
|
||||
|
||||
@ -90,7 +91,7 @@ const services = [
|
||||
|
||||
@NgModule({
|
||||
declarations: [...components],
|
||||
providers: [...services],
|
||||
providers: [...services, FilesGuard],
|
||||
imports: [CommonModule, SharedModule, SharedDossiersModule, FileUploadDownloadModule, DossiersRoutingModule, OverlayModule],
|
||||
})
|
||||
export class DossiersModule {}
|
||||
|
||||
32
apps/red-ui/src/app/modules/dossier/utils/file.guard.ts
Normal file
32
apps/red-ui/src/app/modules/dossier/utils/file.guard.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router';
|
||||
import { FilesMapService } from '@services/entity-services/files-map.service';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
|
||||
@Injectable()
|
||||
export class FilesGuard implements CanActivate {
|
||||
constructor(
|
||||
private readonly _filesMapService: FilesMapService,
|
||||
private readonly _dossiersService: DossiersService,
|
||||
private readonly _appStateService: AppStateService,
|
||||
private readonly _router: Router,
|
||||
) {}
|
||||
|
||||
async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {
|
||||
const dossierId = route.paramMap.get('dossierId');
|
||||
const fileId = route.paramMap.get('fileId');
|
||||
|
||||
if (!this._filesMapService.get(dossierId, fileId)) {
|
||||
const dossier = this._dossiersService.find(dossierId);
|
||||
await this._appStateService.getFiles(dossier);
|
||||
|
||||
if (!this._filesMapService.get(dossierId, fileId)) {
|
||||
await this._router.navigate([dossier.routerLink]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user