diff --git a/src/app/core/data/dso-redirect-data.service.ts b/src/app/core/data/dso-redirect-data.service.ts index b7acc371bf..2df8b70cd8 100644 --- a/src/app/core/data/dso-redirect-data.service.ts +++ b/src/app/core/data/dso-redirect-data.service.ts @@ -14,7 +14,7 @@ import { IdentifierType } from '../index/index.reducer'; import { RemoteData } from './remote-data'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; import { Injectable } from '@angular/core'; -import { filter, tap } from 'rxjs/operators'; +import { filter, take, tap } from 'rxjs/operators'; import { hasValue } from '../../shared/empty.util'; import { getFinishedRemoteData } from '../shared/operators'; import { Router } from '@angular/router'; @@ -63,12 +63,14 @@ export class DsoRedirectDataService extends DataService { this.setLinkPath(identifierType); return super.findById(id, identifierType).pipe( getFinishedRemoteData(), - filter((response) => response.hasSucceeded), + take(1), tap((response) => { - const uuid = response.payload.uuid; - const newRoute = this.getEndpointFromDSOType(response.payload.type); - if (hasValue(uuid) && hasValue(newRoute)) { - this.router.navigate([newRoute + '/' + uuid]); + if (response.hasSucceeded) { + const uuid = response.payload.uuid; + const newRoute = this.getEndpointFromDSOType(response.payload.type); + if (hasValue(uuid) && hasValue(newRoute)) { + this.router.navigate([newRoute + '/' + uuid]); + } } }) );