Skip to content

Commit 049fbb8

Browse files
Merge branch 'feature-process_polling-7.6' into feature-process_polling
2 parents 21cc311 + 8ddc621 commit 049fbb8

2 files changed

Lines changed: 22 additions & 14 deletions

File tree

src/app/core/data/base/base-data.service.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ describe('BaseDataService', () => {
7878
const msToLive = 15 * 60 * 1000;
7979
const payload = {
8080
foo: 'bar',
81+
followLink1: {},
82+
followLink2: {},
8183
_links: {
8284
self: Object.assign(new HALLink(), {
8385
href: 'self-test-link',
@@ -413,7 +415,7 @@ describe('BaseDataService', () => {
413415

414416
expectObservable(service.findByHref(selfLink, false, false, ...linksToFollow)).toBe(expected, values);
415417
flush();
416-
expect(objectCache.addDependency).toHaveBeenCalledTimes(4);
418+
expect(objectCache.addDependency).toHaveBeenCalledTimes(3);
417419
});
418420
});
419421
});
@@ -621,7 +623,7 @@ describe('BaseDataService', () => {
621623

622624
expectObservable(service.findListByHref(selfLink, findListOptions, false, false, ...linksToFollow)).toBe(expected, values);
623625
flush();
624-
expect(objectCache.addDependency).toHaveBeenCalledTimes(4);
626+
expect(objectCache.addDependency).toHaveBeenCalledTimes(3);
625627
});
626628
});
627629
});

src/app/core/data/base/base-data.service.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -282,12 +282,15 @@ export class BaseDataService<T extends CacheableObject> implements HALDataServic
282282
// Ensure all followLinks from the cached object are automatically invalidated when invalidating the cached object
283283
tap((remoteDataObject: RemoteData<T>) => {
284284
if (hasValue(remoteDataObject?.payload?._links)) {
285-
for (const followLink of Object.values(remoteDataObject.payload._links)) {
286-
// followLink can be either an individual HALLink or a HALLink[]
287-
const followLinksList: HALLink[] = [].concat(followLink);
288-
for (const individualFollowLink of followLinksList) {
289-
if (hasValue(individualFollowLink?.href)) {
290-
this.addDependency(response$, individualFollowLink.href);
285+
for (const followLinkName of Object.keys(remoteDataObject.payload._links)) {
286+
// only add the followLinks if they are embedded
287+
if (hasValue(remoteDataObject.payload[followLinkName]) && followLinkName !== 'self') {
288+
// followLink can be either an individual HALLink or a HALLink[]
289+
const followLinksList: HALLink[] = [].concat(remoteDataObject.payload._links[followLinkName]);
290+
for (const individualFollowLink of followLinksList) {
291+
if (hasValue(individualFollowLink?.href)) {
292+
this.addDependency(response$, individualFollowLink.href);
293+
}
291294
}
292295
}
293296
}
@@ -334,12 +337,15 @@ export class BaseDataService<T extends CacheableObject> implements HALDataServic
334337
if (hasValue(remoteDataObject?.payload?.page)) {
335338
for (const object of remoteDataObject.payload.page) {
336339
if (hasValue(object?._links)) {
337-
for (const followLink of Object.values(object._links)) {
338-
// followLink can be either an individual HALLink or a HALLink[]
339-
const followLinksList: HALLink[] = [].concat(followLink);
340-
for (const individualFollowLink of followLinksList) {
341-
if (hasValue(individualFollowLink?.href)) {
342-
this.addDependency(response$, individualFollowLink.href);
340+
for (const followLinkName of Object.keys(object._links)) {
341+
// only add the followLinks if they are embedded
342+
if (hasValue(object[followLinkName]) && followLinkName !== 'self') {
343+
// followLink can be either an individual HALLink or a HALLink[]
344+
const followLinksList: HALLink[] = [].concat(object._links[followLinkName]);
345+
for (const individualFollowLink of followLinksList) {
346+
if (hasValue(individualFollowLink?.href)) {
347+
this.addDependency(response$, individualFollowLink.href);
348+
}
343349
}
344350
}
345351
}

0 commit comments

Comments
 (0)