Skip to content

Commit 0dabc8e

Browse files
127655: refactor to use buildFromRequestUUID
1 parent 99e8c10 commit 0dabc8e

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

src/app/core/submission/submission-rest.service.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import {
1414
SubmissionRequest
1515
} from '../data/request.models';
1616
import { FormFieldMetadataValueObject } from '../../shared/form/builder/models/form-field-metadata-value.model';
17+
import { of } from 'rxjs';
18+
import { RequestEntry } from '../data/request-entry.model';
1719

1820
describe('SubmissionRestService test suite', () => {
1921
let scheduler: TestScheduler;
@@ -38,7 +40,9 @@ describe('SubmissionRestService test suite', () => {
3840
}
3941

4042
beforeEach(() => {
41-
requestService = getMockRequestService();
43+
requestService = getMockRequestService(of(Object.assign(new RequestEntry(), {
44+
request: new SubmissionRequest('mock-request-uuid', 'mock-request-href'),
45+
})));
4246
rdbService = getMockRemoteDataBuildService();
4347
scheduler = getTestScheduler();
4448
halService = new HALEndpointServiceStub(resourceEndpointURL);

src/app/core/submission/submission-rest.service.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Injectable } from '@angular/core';
22

33
import { Observable, skipWhile } from 'rxjs';
4-
import { distinctUntilChanged, filter, map, mergeMap, tap } from 'rxjs/operators';
4+
import { distinctUntilChanged, filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';
55

66
import { RequestService } from '../data/request.service';
77
import { hasValue, isNotEmpty } from '../../shared/empty.util';
@@ -21,7 +21,6 @@ import { getFirstCompletedRemoteData } from '../shared/operators';
2121
import { URLCombiner } from '../url-combiner/url-combiner';
2222
import { RemoteData } from '../data/remote-data';
2323
import { SubmissionResponse } from './submission-response.model';
24-
import { RestRequest } from '../data/rest-request.model';
2524

2625
/**
2726
* Retrieve the first emitting payload's dataDefinition, or throw an error if the request failed
@@ -126,9 +125,12 @@ export class SubmissionRestService {
126125
filter((href: string) => isNotEmpty(href)),
127126
distinctUntilChanged(),
128127
mergeMap((endpointURL: string) => {
129-
const request = this.sendGetDataRequest(endpointURL, useCachedVersionIfAvailable);
128+
this.sendGetDataRequest(endpointURL, useCachedVersionIfAvailable);
130129
const startTime: number = new Date().getTime();
131-
return this.rdbService.buildSingle(request.href).pipe(
130+
return this.requestService.getByHref(endpointURL).pipe(
131+
map((requestEntry) => requestEntry.request.uuid),
132+
distinctUntilChanged(),
133+
switchMap((requestId) => this.rdbService.buildFromRequestUUID<SubmissionResponse>(requestId)),
132134
// This skip ensures that if a stale object is present in the cache when you do a
133135
// call it isn't immediately returned, but we wait until the remote data for the new request
134136
// is created. If useCachedVersionIfAvailable is false it also ensures you don't get a
@@ -152,14 +154,11 @@ export class SubmissionRestService {
152154
* Endpoint URL of the submission data
153155
* @param useCachedVersionIfAvailable
154156
* If this is true, the request will only be sent if there's no valid & cached version. Defaults to false
155-
* @return RestRequest
156-
* Request sent
157157
*/
158-
private sendGetDataRequest(href: string, useCachedVersionIfAvailable = false): RestRequest {
158+
private sendGetDataRequest(href: string, useCachedVersionIfAvailable = false) {
159159
const requestId = this.requestService.generateRequestId();
160160
const request = new SubmissionRequest(requestId, href);
161161
this.requestService.send(request, useCachedVersionIfAvailable);
162-
return request;
163162
}
164163

165164
/**

0 commit comments

Comments
 (0)