From e84af6ab916969442931ba4f0e0ad200008adda7 Mon Sep 17 00:00:00 2001 From: FrancescoMolinaro Date: Wed, 23 Apr 2025 15:07:00 +0200 Subject: [PATCH] [DURACOM-350] fix cache issue after mydspace action --- src/app/shared/mydspace-actions/mydspace-actions.ts | 6 +++++- .../mydspace-actions/mydspace-reloadable-actions.spec.ts | 4 +++- .../shared/mydspace-actions/mydspace-reloadable-actions.ts | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/app/shared/mydspace-actions/mydspace-actions.ts b/src/app/shared/mydspace-actions/mydspace-actions.ts index 5100d8122e..1a5ebbcc8c 100644 --- a/src/app/shared/mydspace-actions/mydspace-actions.ts +++ b/src/app/shared/mydspace-actions/mydspace-actions.ts @@ -101,13 +101,17 @@ export abstract class MyDSpaceActionsComponent { return false; }; // This assures that the search cache is empty before reloading mydspace. // See https://github.com/DSpace/dspace-angular/pull/468 + this.invalidateCacheForCurrentSearchUrl(); + } + + invalidateCacheForCurrentSearchUrl(): void { + const url = decodeURIComponent(this.router.url); this.searchService.getEndpoint().pipe( take(1), tap((cachedHref: string) => this.requestService.removeByHrefSubstring(cachedHref)), diff --git a/src/app/shared/mydspace-actions/mydspace-reloadable-actions.spec.ts b/src/app/shared/mydspace-actions/mydspace-reloadable-actions.spec.ts index 1d0d231503..b7a0a20219 100644 --- a/src/app/shared/mydspace-actions/mydspace-reloadable-actions.spec.ts +++ b/src/app/shared/mydspace-actions/mydspace-reloadable-actions.spec.ts @@ -219,6 +219,7 @@ describe('MyDSpaceReloadableActionsComponent', () => { spyOn(component, 'reloadObjectExecution').and.callThrough(); spyOn(component, 'convertReloadedObject').and.callThrough(); spyOn(component.processCompleted, 'emit').and.callThrough(); + spyOn(component, 'invalidateCacheForCurrentSearchUrl').and.callThrough(); (component as any).objectDataService = mockDataService; }); @@ -239,10 +240,11 @@ describe('MyDSpaceReloadableActionsComponent', () => { }); }); - it('should emit the reloaded object in case of success', (done) => { + it('should emit the reloaded object and invalidate cache in case of success', (done) => { component.startActionExecution().subscribe( (result) => { expect(component.processCompleted.emit).toHaveBeenCalledWith({ result: true, reloadedObject: result as any }); + expect(component.invalidateCacheForCurrentSearchUrl).toHaveBeenCalled(); done(); }); }); diff --git a/src/app/shared/mydspace-actions/mydspace-reloadable-actions.ts b/src/app/shared/mydspace-actions/mydspace-reloadable-actions.ts index 28e3ac4040..062bf25741 100644 --- a/src/app/shared/mydspace-actions/mydspace-reloadable-actions.ts +++ b/src/app/shared/mydspace-actions/mydspace-reloadable-actions.ts @@ -105,6 +105,8 @@ export abstract class MyDSpaceReloadableActionsComponent