fix activating files
This commit is contained in:
parent
5e12a76b16
commit
c939ded098
@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
|
||||
import { Colors, IFile, ReanalysisControllerService } from '@redaction/red-ui-http';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { Event, ResolveStart, Router } from '@angular/router';
|
||||
import { ActivationEnd, Event, ResolveStart, Router } from '@angular/router';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { forkJoin, Observable, of, Subject } from 'rxjs';
|
||||
import { catchError, filter, first, map, tap } from 'rxjs/operators';
|
||||
@ -17,6 +17,7 @@ import { FilesService } from '../modules/dossier/services/files.service';
|
||||
import { DictionaryService } from '@shared/services/dictionary.service';
|
||||
import { DossierTemplatesService } from '../modules/dossier/services/dossier-templates.service';
|
||||
import { FileAttributesService } from '../modules/dossier/services/file-attributes.service';
|
||||
import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
|
||||
|
||||
export interface AppState {
|
||||
dossierTemplates: DossierTemplate[];
|
||||
@ -25,6 +26,8 @@ export interface AppState {
|
||||
activeDictionaryType?: string;
|
||||
}
|
||||
|
||||
const getRelatedEvents = filter(event => event instanceof ActivationEnd && event.snapshot.component !== BaseScreenComponent);
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
@ -52,20 +55,26 @@ export class AppStateService {
|
||||
dossierTemplates: []
|
||||
};
|
||||
|
||||
_router.events.subscribe(async (event: Event) => {
|
||||
if (AppStateService._isFileOverviewRoute(event)) {
|
||||
const url = (event as ResolveStart).url.replace('/main/dossiers/', '');
|
||||
const [dossierId, , fileId] = url.split(/[/?]/);
|
||||
await _dossiersService.activeDossier$
|
||||
.pipe(
|
||||
filter(dossier => !!dossier),
|
||||
first()
|
||||
)
|
||||
.toPromise();
|
||||
return await this.activateFile(dossierId, fileId);
|
||||
_router.events.pipe(getRelatedEvents).subscribe(async (event: ActivationEnd) => {
|
||||
const fileId = event.snapshot.paramMap.get('fileId');
|
||||
const sameIdAsCurrentActive = fileId === this.activeFileId;
|
||||
|
||||
if (sameIdAsCurrentActive) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._appState.activeFileId = undefined;
|
||||
if (fileId === null || fileId === undefined) {
|
||||
return (this._appState.activeFileId = undefined);
|
||||
}
|
||||
|
||||
await _dossiersService.activeDossier$
|
||||
.pipe(
|
||||
filter(dossier => !!dossier),
|
||||
first()
|
||||
)
|
||||
.toPromise();
|
||||
const dossierId = event.snapshot.paramMap.get('dossierId');
|
||||
return await this.activateFile(dossierId, fileId);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user