From 10b94cba3cdd3c50f9a4d2cea3ee3f40b9974231 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Wed, 30 Mar 2022 17:47:57 +0300 Subject: [PATCH 1/3] handled deleted file when click on notification file link --- .../modules/archive/archive-routing.module.ts | 2 +- .../dossier/dossiers-routing.module.ts | 2 +- .../file-preview-screen.component.ts | 48 ++++++++++++------- .../services/file-data.service.ts | 7 +-- 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/apps/red-ui/src/app/modules/archive/archive-routing.module.ts b/apps/red-ui/src/app/modules/archive/archive-routing.module.ts index 3e1c8f3ca..3fb43c206 100644 --- a/apps/red-ui/src/app/modules/archive/archive-routing.module.ts +++ b/apps/red-ui/src/app/modules/archive/archive-routing.module.ts @@ -29,7 +29,7 @@ const routes: Routes = [ path: `:${DOSSIER_ID}/file/:${FILE_ID}`, canActivate: [CompositeRouteGuard], data: { - routeGuards: [DossierFilesGuard, FilePreviewGuard], + routeGuards: [DossierFilesGuard], breadcrumbs: [BreadcrumbTypes.archive, BreadcrumbTypes.dossier, BreadcrumbTypes.file], dossiersService: ARCHIVED_DOSSIERS_SERVICE, }, diff --git a/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts b/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts index d83e69f31..8c31d2698 100644 --- a/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts +++ b/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts @@ -22,7 +22,7 @@ const routes: Routes = [ path: `:${DOSSIER_ID}/file/:${FILE_ID}`, canActivate: [CompositeRouteGuard], data: { - routeGuards: [DossierFilesGuard, FilePreviewGuard], + routeGuards: [DossierFilesGuard], breadcrumbs: [BreadcrumbTypes.main, BreadcrumbTypes.dossier, BreadcrumbTypes.file], dossiersService: ACTIVE_DOSSIERS_SERVICE, }, diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index ddc08f024..0d2d29b9b 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -202,7 +202,8 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni async ngOnAttach(previousRoute: ActivatedRouteSnapshot): Promise { const file = await this.stateService.file; if (!file.canBeOpened) { - return this._router.navigate([this._dossiersService.find(this.dossierId)?.routerLink]); + this._navigateToDossier(); + return; } this._viewModeService.compareMode = false; this._viewModeService.switchToStandard(); @@ -214,18 +215,23 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni } async ngOnInit(): Promise { - this.ready = false; - this._loadingService.start(); - await this.userPreferenceService.saveLastOpenedFileForDossier(this.dossierId, this.fileId); - this._subscribeToFileUpdates(); - const file = await this.stateService.file; - if (file?.analysisRequired && !file.excludedFromAutomaticAnalysis) { - const reanalyzeFiles = this._reanalysisService.reanalyzeFilesForDossier([file], this.dossierId, { force: true }); - await firstValueFrom(reanalyzeFiles); - } - this.displayPdfViewer = true; + if (!file) { + this._handleDeletedFile(); + } else { + this.ready = false; + this._loadingService.start(); + await this.userPreferenceService.saveLastOpenedFileForDossier(this.dossierId, this.fileId); + this._subscribeToFileUpdates(); + + if (file?.analysisRequired && !file.excludedFromAutomaticAnalysis) { + const reanalyzeFiles = this._reanalysisService.reanalyzeFilesForDossier([file], this.dossierId, { force: true }); + await firstValueFrom(reanalyzeFiles); + } + + this.displayPdfViewer = true; + } } async rebuildFilters() { @@ -586,10 +592,10 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni .pipe(tap(() => this._handleDeletedDossier())) .subscribe(); - this.addActiveScreenSubscription = this._filesMapService - .watchDeleted$(this.fileId) - .pipe(tap(() => this._handleDeletedFile())) - .subscribe(); + // this.addActiveScreenSubscription = this._filesMapService + // .watchDeleted$(this.fileId) + // .pipe(tap(() => this._handleDeletedFile())) + // .subscribe(); this.addActiveScreenSubscription = this._skippedService.hideSkipped$ .pipe(tap(hideSkipped => this._handleIgnoreAnnotationsDrawing(hideSkipped))) @@ -604,7 +610,13 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni private _handleDeletedFile(): void { this._errorService.set( - new CustomError(_('error.deleted-entity.file.label'), _('error.deleted-entity.file.action'), 'iqser:expand'), + new CustomError( + _('error.deleted-entity.file.label'), + _('error.deleted-entity.file.action'), + 'iqser:expand', + null, + this._navigateToDossier.bind(this), + ), ); } @@ -677,4 +689,8 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni annotation['FillColor'] = color; }); } + + private _navigateToDossier() { + this._router.navigate([this._dossiersService.find(this.dossierId)?.routerLink]); + } } diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts index 074fa1187..ed193df33 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts @@ -102,12 +102,7 @@ export class FileDataService { async loadAnnotations() { const file = await this._state.file; - if (!file) { - const dossier = await this._state.dossier; - return this._router.navigate([dossier.routerLink]); - } - - if (file.isUnprocessed) { + if (!file || file.isUnprocessed) { return; } From 19afc3d65de5e3813fb25b7955f6111fd8ad958a Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Wed, 30 Mar 2022 17:52:30 +0300 Subject: [PATCH 2/3] removed comment --- .../modules/file-preview/file-preview-screen.component.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index 0d2d29b9b..02e7ee09f 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -592,10 +592,10 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni .pipe(tap(() => this._handleDeletedDossier())) .subscribe(); - // this.addActiveScreenSubscription = this._filesMapService - // .watchDeleted$(this.fileId) - // .pipe(tap(() => this._handleDeletedFile())) - // .subscribe(); + this.addActiveScreenSubscription = this._filesMapService + .watchDeleted$(this.fileId) + .pipe(tap(() => this._handleDeletedFile())) + .subscribe(); this.addActiveScreenSubscription = this._skippedService.hideSkipped$ .pipe(tap(hideSkipped => this._handleIgnoreAnnotationsDrawing(hideSkipped))) From 3b9923b4dfa946e51994cc9c37c3e5d36d3d0861 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Wed, 30 Mar 2022 20:49:28 +0300 Subject: [PATCH 3/3] removed "FilePreviewGuard" as it's no longer used --- .../src/app/guards/file-preview.guard.ts | 31 ------------------- .../modules/archive/archive-routing.module.ts | 1 - .../dossier/dossiers-routing.module.ts | 1 - 3 files changed, 33 deletions(-) delete mode 100644 apps/red-ui/src/app/guards/file-preview.guard.ts diff --git a/apps/red-ui/src/app/guards/file-preview.guard.ts b/apps/red-ui/src/app/guards/file-preview.guard.ts deleted file mode 100644 index 23ff8f2cb..000000000 --- a/apps/red-ui/src/app/guards/file-preview.guard.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Injectable, Injector, ProviderToken } from '@angular/core'; -import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router'; -import { FilesMapService } from '@services/entity-services/files-map.service'; -import { DOSSIER_ID, FILE_ID } from '@utils/constants'; -import { DossiersService } from '@services/dossiers/dossiers.service'; - -@Injectable({ providedIn: 'root' }) -export class FilePreviewGuard implements CanActivate { - constructor( - private readonly _filesMapService: FilesMapService, - private readonly _router: Router, - private readonly _injector: Injector, - ) {} - - async canActivate(route: ActivatedRouteSnapshot): Promise { - const token: ProviderToken = route.data.dossiersService; - const dossiersService: DossiersService = this._injector.get(token); - - const dossierId = route.paramMap.get(DOSSIER_ID); - const fileId = route.paramMap.get(FILE_ID); - - const dossier = dossiersService.find(dossierId); - - if (!this._filesMapService.get(dossierId, fileId)) { - await this._router.navigate([dossier.routerLink]); - return false; - } - - return true; - } -} diff --git a/apps/red-ui/src/app/modules/archive/archive-routing.module.ts b/apps/red-ui/src/app/modules/archive/archive-routing.module.ts index 3fb43c206..9a2774a25 100644 --- a/apps/red-ui/src/app/modules/archive/archive-routing.module.ts +++ b/apps/red-ui/src/app/modules/archive/archive-routing.module.ts @@ -6,7 +6,6 @@ import { DOSSIER_ID, FILE_ID } from '@utils/constants'; import { CompositeRouteGuard } from '@iqser/common-ui'; import { ARCHIVED_DOSSIERS_SERVICE } from '../../tokens'; import { DossierFilesGuard } from '@guards/dossier-files-guard'; -import { FilePreviewGuard } from '@guards/file-preview.guard'; const routes: Routes = [ { diff --git a/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts b/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts index 8c31d2698..2112b6bdf 100644 --- a/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts +++ b/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts @@ -1,6 +1,5 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { FilePreviewGuard } from '@guards/file-preview.guard'; import { DossierFilesGuard } from '@guards/dossier-files-guard'; import { CompositeRouteGuard } from '@iqser/common-ui'; import { BreadcrumbTypes } from '@red/domain';