Untitled
unknown
typescript
2 years ago
1.9 kB
10
Indexable
import { Observable } from 'rxjs';
export function canActivate(
route, // ActivatedRouteSnapshot
state, // RouterStateSnapshot
): Observable<boolean | UrlTree> {
return new Observable((observer) => {
// Goes to the Workspace or Contacts page.
if (
(state.url.indexOf('/lk/workspace') === 0 ||
state.url.indexOf('/lk/contacts') === 0) &&
this.accountRightsService.filtersWorkspace // Has read access to workspace filters.
) {
// If the user has access to all devices and cases in the database.
if (this.accountService.accessToAllImagesAndCases) {
// Check if filters are ready.
this.filtersHttpService.filtersWorkspaceReady().subscribe((ready) => {
if (ready.ready) {
// Loading into cache.
this.treeCacheService.loadWorkspace().subscribe(() => {
// Cache loaded.
observer.next(true);
observer.complete();
});
} else {
// Cache not loaded.
if (this.accountRightsService.viewCase) {
observer.next(this.router.createUrlTree(['/lk/cases']));
observer.complete();
} else {
observer.next(this.router.createUrlTree(['/lk/account']));
observer.complete();
}
}
});
} else {
observer.next(true);
observer.complete();
}
} else {
// other pages
observer.next(true);
observer.complete();
}
});
}
Editor is loading...
Leave a Comment