From ab77e66be7c99f57358adfe8b744bd5ee99328dc Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Wed, 21 Sep 2022 17:16:10 +0200 Subject: [PATCH] [CST-6494] Fix issue for which sometimes claimed and pool task weren't shown when a filter is applied --- ...med-search-result-list-element.component.spec.ts | 7 ++++++- .../claimed-search-result-list-element.component.ts | 13 ++++++++++--- ...ool-search-result-list-element.component.spec.ts | 8 +++++++- .../pool-search-result-list-element.component.ts | 12 +++++++++--- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts index 7896061a73..87cc70b67c 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts @@ -18,6 +18,7 @@ import { getMockLinkService } from '../../../mocks/link-service.mock'; import { By } from '@angular/platform-browser'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; +import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; let component: ClaimedSearchResultListElementComponent; let fixture: ComponentFixture; @@ -59,6 +60,9 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem); mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) }); const linkService = getMockLinkService(); +const objectCacheServiceMock = jasmine.createSpyObj('ObjectCacheService', { + remove: jasmine.createSpy('remove') +}); describe('ClaimedSearchResultListElementComponent', () => { beforeEach(waitForAsync(() => { @@ -68,7 +72,8 @@ describe('ClaimedSearchResultListElementComponent', () => { providers: [ { provide: TruncatableService, useValue: {} }, { provide: LinkService, useValue: linkService }, - { provide: DSONameService, useClass: DSONameServiceMock } + { provide: DSONameService, useClass: DSONameServiceMock }, + { provide: ObjectCacheService, useValue: objectCacheServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(ClaimedSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts index 2cf8f9a231..9de27ff7e6 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; @@ -13,6 +13,7 @@ import { followLink } from '../../../utils/follow-link-config.model'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; @Component({ selector: 'ds-claimed-search-result-list-element', @@ -20,7 +21,7 @@ import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; templateUrl: './claimed-search-result-list-element.component.html' }) @listableObjectComponent(ClaimedTaskSearchResult, ViewMode.ListElement) -export class ClaimedSearchResultListElementComponent extends SearchResultListElementComponent { +export class ClaimedSearchResultListElementComponent extends SearchResultListElementComponent implements OnInit, OnDestroy { /** * A boolean representing if to show submitter information @@ -40,7 +41,8 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle public constructor( protected linkService: LinkService, protected truncatableService: TruncatableService, - protected dsoNameService: DSONameService + protected dsoNameService: DSONameService, + protected objectCache: ObjectCacheService ) { super(truncatableService, dsoNameService); } @@ -56,4 +58,9 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle this.workflowitemRD$ = this.dso.workflowitem as Observable>; } + ngOnDestroy() { + // This ensures the object is removed from cache, when action is performed on task + this.objectCache.remove(this.dso._links.workflowitem.href); + } + } diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts index 18db9abd67..85f056a129 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts @@ -18,6 +18,7 @@ import { getMockLinkService } from '../../../mocks/link-service.mock'; import { By } from '@angular/platform-browser'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; +import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; let component: PoolSearchResultListElementComponent; let fixture: ComponentFixture; @@ -59,6 +60,10 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem); mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) }); const linkService = getMockLinkService(); +const objectCacheServiceMock = jasmine.createSpyObj('ObjectCacheService', { + remove: jasmine.createSpy('remove') +}); + describe('PoolSearchResultListElementComponent', () => { beforeEach(waitForAsync(() => { @@ -68,7 +73,8 @@ describe('PoolSearchResultListElementComponent', () => { providers: [ { provide: TruncatableService, useValue: {} }, { provide: LinkService, useValue: linkService }, - { provide: DSONameService, useClass: DSONameServiceMock } + { provide: DSONameService, useClass: DSONameServiceMock }, + { provide: ObjectCacheService, useValue: objectCacheServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(PoolSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts index e9d64db572..c5c9721003 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; @@ -14,6 +14,7 @@ import { TruncatableService } from '../../../truncatable/truncatable.service'; import { followLink } from '../../../utils/follow-link-config.model'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; /** * This component renders pool task object for the search result in the list view. @@ -25,7 +26,7 @@ import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; }) @listableObjectComponent(PoolTaskSearchResult, ViewMode.ListElement) -export class PoolSearchResultListElementComponent extends SearchResultListElementComponent implements OnInit { +export class PoolSearchResultListElementComponent extends SearchResultListElementComponent implements OnInit, OnDestroy { /** * A boolean representing if to show submitter information @@ -50,7 +51,8 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen constructor( protected linkService: LinkService, protected truncatableService: TruncatableService, - protected dsoNameService: DSONameService + protected dsoNameService: DSONameService, + protected objectCache: ObjectCacheService ) { super(truncatableService, dsoNameService); } @@ -66,4 +68,8 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen this.workflowitemRD$ = this.dso.workflowitem as Observable>; } + ngOnDestroy() { + // This ensures the object is removed from cache, when action is performed on task + this.objectCache.remove(this.dso._links.workflowitem.href); + } }