108915: Fixed Proxy Timout error when retrieving a non-existing process

This commit is contained in:
Alexandre Vryghem
2024-02-08 16:16:06 +01:00
parent 252b3673ee
commit ecb20bbcbf
3 changed files with 18 additions and 11 deletions

View File

@@ -175,12 +175,14 @@ export class ProcessDataService extends IdentifiableDataService<Process> impleme
) )
).subscribe((processRD: RemoteData<Process>) => { ).subscribe((processRD: RemoteData<Process>) => {
this.clearCurrentTimeout(processId); this.clearCurrentTimeout(processId);
if (processRD.hasSucceeded) {
const nextTimeout = this.timer(() => { const nextTimeout = this.timer(() => {
this.activelyBeingPolled.delete(processId); this.activelyBeingPolled.delete(processId);
this.invalidateByHref(processRD.payload._links.self.href); this.invalidateByHref(processRD.payload._links.self.href);
}, pollingIntervalInMs); }, pollingIntervalInMs);
this.activelyBeingPolled.set(processId, nextTimeout); this.activelyBeingPolled.set(processId, nextTimeout);
}
}); });
// When the process completes create a one off subscription (the `find` completes the // When the process completes create a one off subscription (the `find` completes the

View File

@@ -6,8 +6,9 @@ import { Process } from './processes/process.model';
import { followLink } from '../shared/utils/follow-link-config.model'; import { followLink } from '../shared/utils/follow-link-config.model';
import { ProcessDataService } from '../core/data/processes/process-data.service'; import { ProcessDataService } from '../core/data/processes/process-data.service';
import { BreadcrumbConfig } from '../breadcrumbs/breadcrumb/breadcrumb-config.model'; import { BreadcrumbConfig } from '../breadcrumbs/breadcrumb/breadcrumb-config.model';
import { getRemoteDataPayload, getFirstSucceededRemoteData } from '../core/shared/operators'; import { getFirstCompletedRemoteData } from '../core/shared/operators';
import { ProcessBreadcrumbsService } from './process-breadcrumbs.service'; import { ProcessBreadcrumbsService } from './process-breadcrumbs.service';
import { RemoteData } from '../core/data/remote-data';
/** /**
* This class represents a resolver that requests a specific process before the route is activated * This class represents a resolver that requests a specific process before the route is activated
@@ -28,12 +29,11 @@ export class ProcessBreadcrumbResolver implements Resolve<BreadcrumbConfig<Proce
const id = route.params.id; const id = route.params.id;
return this.processService.findById(route.params.id, true, false, followLink('script')).pipe( return this.processService.findById(route.params.id, true, false, followLink('script')).pipe(
getFirstSucceededRemoteData(), getFirstCompletedRemoteData(),
getRemoteDataPayload(), map((object: RemoteData<Process>) => {
map((object: Process) => {
const fullPath = state.url; const fullPath = state.url;
const url = fullPath.substr(0, fullPath.indexOf(id)) + id; const url = fullPath.substr(0, fullPath.indexOf(id)) + id;
return { provider: this.breadcrumbService, key: object, url: url }; return { provider: this.breadcrumbService, key: object.payload, url: url };
}) })
); );
} }

View File

@@ -3,6 +3,7 @@ import { Injectable } from '@angular/core';
import { BreadcrumbsProviderService } from '../core/breadcrumbs/breadcrumbsProviderService'; import { BreadcrumbsProviderService } from '../core/breadcrumbs/breadcrumbsProviderService';
import { Breadcrumb } from '../breadcrumbs/breadcrumb/breadcrumb.model'; import { Breadcrumb } from '../breadcrumbs/breadcrumb/breadcrumb.model';
import { Process } from './processes/process.model'; import { Process } from './processes/process.model';
import { hasValue } from '../shared/empty.util';
/** /**
* Service to calculate process breadcrumbs for a single part of the route * Service to calculate process breadcrumbs for a single part of the route
@@ -16,6 +17,10 @@ export class ProcessBreadcrumbsService implements BreadcrumbsProviderService<Pro
* @param url The url to use as a link for this breadcrumb * @param url The url to use as a link for this breadcrumb
*/ */
getBreadcrumbs(key: Process, url: string): Observable<Breadcrumb[]> { getBreadcrumbs(key: Process, url: string): Observable<Breadcrumb[]> {
if (hasValue(key)) {
return observableOf([new Breadcrumb(key.processId + ' - ' + key.scriptName, url)]); return observableOf([new Breadcrumb(key.processId + ' - ' + key.scriptName, url)]);
} else {
return observableOf([]);
}
} }
} }