From: Galen Charlton Date: Tue, 1 Sep 2020 22:26:36 +0000 (-0400) Subject: LH#27: navigate to search page if given direct link to provider that cannot be retrieved X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=25a0ec449adf85631e1c6fec6686fce4714528e0;p=working%2FEvergreen.git LH#27: navigate to search page if given direct link to provider that cannot be retrieved Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-record.service.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-record.service.ts index cff63aef79..2f3f8231d2 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-record.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-record.service.ts @@ -1,7 +1,7 @@ import {Injectable} from '@angular/core'; import {Observable, from} from 'rxjs'; import {empty, throwError, Subject} from 'rxjs'; -import {map} from 'rxjs/operators'; +import {map, defaultIfEmpty} from 'rxjs/operators'; import {PcrudService} from '@eg/core/pcrud.service'; import {IdlService, IdlObject} from '@eg/core/idl.service'; import {NetService} from '@eg/core/net.service'; @@ -69,6 +69,8 @@ export class ProviderRecordService { getProviderRecord(id: number): Observable { console.debug('fetching provider ' + id); this.currentProviderId = id; + const emptyGuard = this.idl.create('acqpro'); + emptyGuard.id('no_provider_fetched'); return this.pcrud.search('acqpro', { id: id }, { flesh: 3, @@ -85,7 +87,10 @@ export class ProviderRecordService { } }, {} - ).pipe(map(acqpro => { + ).pipe(defaultIfEmpty(emptyGuard), map(acqpro => { + if (acqpro.id() == 'no_provider_fetched') { + throw new Error('no provider to fetch'); + } const provider = new ProviderRecord(acqpro); // make a copy of holding_tag for use by the holdings definitions tab acqpro['_holding_tag'] = acqpro.holding_tag(); @@ -168,9 +173,8 @@ export class ProviderRecordService { resolve(); }, error => { - console.debug(error); reject(); - } + }, ); }); } diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/resolver.service.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/resolver.service.ts index 30200916c1..44e48f77dd 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/resolver.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/resolver.service.ts @@ -30,7 +30,14 @@ export class ProviderResolver implements Resolve> { } else { this.savedId = id; return Promise.all([ - this.providerRecord.fetch(id), + this.providerRecord.fetch(id).then( + ok => { + console.debug(this.providerRecord.current()); + }, + err => { + this.router.navigate(['/staff', 'acq', 'provider']); + } + ), ]); } }