From dbcab6fc45ac77481836ec79db3b388491401c8a Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Fri, 7 Jun 2024 16:30:27 +0200 Subject: [PATCH] [DURACOM-271] Renamed and reorganized suggestion data services --- src/app/core/data-services-map.ts | 12 +++--- .../suggestion-objects.resource-type.ts | 2 +- .../suggestion-source-object.resource-type.ts | 2 +- .../models/suggestion-source.model.ts | 10 ++--- .../suggestion-target-object.resource-type.ts | 2 +- .../models/suggestion-target.model.ts | 10 ++--- .../models/suggestion.model.ts | 12 +++--- .../suggestion-source-data.service.spec.ts} | 30 +++++++------- .../source/suggestion-source-data.service.ts | 26 ++++++------ .../suggestion-data.service.spec.ts} | 28 ++++++------- .../suggestion-data.service.ts} | 31 +++++++------- .../suggestion-target-data.service.spec.ts} | 36 ++++++++-------- .../target/suggestion-target-data.service.ts | 41 +++++++++++-------- src/app/core/provide-core.ts | 4 +- .../suggestion-actions.component.ts | 2 +- .../suggestion-approve-and-import.ts | 2 +- .../suggestion-evidences.component.ts | 2 +- .../suggestion-list-element.component.ts | 2 +- .../publication-claim.component.ts | 2 +- .../suggestion-targets.actions.ts | 2 +- .../suggestion-targets.effects.ts | 2 +- .../suggestion-targets.reducer.ts | 2 +- .../suggestion-targets.state.service.ts | 4 +- .../notifications/suggestion.service.spec.ts | 10 ++--- .../suggestions-notification.component.ts | 2 +- .../suggestions-popup.component.ts | 2 +- src/app/notifications/suggestions.service.ts | 14 +++---- .../mocks/publication-claim-targets.mock.ts | 2 +- .../shared/mocks/publication-claim.mock.ts | 4 +- src/app/suggestion-notifications/selectors.ts | 2 +- .../suggestions-page.component.ts | 4 +- .../suggestions-page.resolver.ts | 4 +- 32 files changed, 158 insertions(+), 152 deletions(-) rename src/app/core/notifications/{ => suggestions}/models/suggestion-objects.resource-type.ts (76%) rename src/app/core/notifications/{ => suggestions}/models/suggestion-source-object.resource-type.ts (77%) rename src/app/core/notifications/{ => suggestions}/models/suggestion-source.model.ts (71%) rename src/app/core/notifications/{ => suggestions}/models/suggestion-target-object.resource-type.ts (77%) rename src/app/core/notifications/{ => suggestions}/models/suggestion-target.model.ts (75%) rename src/app/core/notifications/{ => suggestions}/models/suggestion.model.ts (80%) rename src/app/core/notifications/{source/suggestions-source-data.service.spec.ts => suggestions/source/suggestion-source-data.service.spec.ts} (75%) rename src/app/core/notifications/{ => suggestions}/source/suggestion-source-data.service.ts (82%) rename src/app/core/notifications/{suggestions-data.service.spec.ts => suggestions/suggestion-data.service.spec.ts} (76%) rename src/app/core/notifications/{suggestions-data.service.ts => suggestions/suggestion-data.service.ts} (73%) rename src/app/core/notifications/{target/suggestions-target-data.service.spec.ts => suggestions/target/suggestion-target-data.service.spec.ts} (76%) rename src/app/core/notifications/{ => suggestions}/target/suggestion-target-data.service.ts (79%) diff --git a/src/app/core/data-services-map.ts b/src/app/core/data-services-map.ts index 8e76eef925..c9ebbc5ffc 100644 --- a/src/app/core/data-services-map.ts +++ b/src/app/core/data-services-map.ts @@ -27,12 +27,12 @@ import { WORKSPACEITEM } from './eperson/models/workspaceitem.resource-type'; import { FEEDBACK } from './feedback/models/feedback.resource-type'; import { METADATA_FIELD } from './metadata/metadata-field.resource-type'; import { METADATA_SCHEMA } from './metadata/metadata-schema.resource-type'; -import { SUGGESTION } from './notifications/models/suggestion-objects.resource-type'; -import { SUGGESTION_SOURCE } from './notifications/models/suggestion-source-object.resource-type'; -import { SUGGESTION_TARGET } from './notifications/models/suggestion-target-object.resource-type'; import { QUALITY_ASSURANCE_EVENT_OBJECT } from './notifications/qa/models/quality-assurance-event-object.resource-type'; import { QUALITY_ASSURANCE_SOURCE_OBJECT } from './notifications/qa/models/quality-assurance-source-object.resource-type'; import { QUALITY_ASSURANCE_TOPIC_OBJECT } from './notifications/qa/models/quality-assurance-topic-object.resource-type'; +import { SUGGESTION } from './notifications/suggestions/models/suggestion-objects.resource-type'; +import { SUGGESTION_SOURCE } from './notifications/suggestions/models/suggestion-source-object.resource-type'; +import { SUGGESTION_TARGET } from './notifications/suggestions/models/suggestion-target-object.resource-type'; import { ORCID_HISTORY } from './orcid/model/orcid-history.resource-type'; import { ORCID_QUEUE } from './orcid/model/orcid-queue.resource-type'; import { RESEARCHER_PROFILE } from './profile/model/researcher-profile.resource-type'; @@ -131,9 +131,9 @@ export const LAZY_DATA_SERVICES: LazyDataServicesMap = new Map([ [QUALITY_ASSURANCE_EVENT_OBJECT.value, () => import('./notifications/qa/events/quality-assurance-event-data.service').then(m => m.QualityAssuranceEventDataService)], [QUALITY_ASSURANCE_SOURCE_OBJECT.value, () => import('./notifications/qa/source/quality-assurance-source-data.service').then(m => m.QualityAssuranceSourceDataService)], [QUALITY_ASSURANCE_TOPIC_OBJECT.value, () => import('./notifications/qa/topics/quality-assurance-topic-data.service').then(m => m.QualityAssuranceTopicDataService)], - [SUGGESTION.value, () => import('./notifications/suggestions-data.service').then(m => m.SuggestionsDataService)], - [SUGGESTION_SOURCE.value, () => import('./notifications/source/suggestion-source-data.service').then(m => m.SuggestionSourceDataService)], - [SUGGESTION_TARGET.value, () => import('./notifications/target/suggestion-target-data.service').then(m => m.SuggestionTargetDataService)], + [SUGGESTION.value, () => import('./notifications/suggestions/suggestion-data.service').then(m => m.SuggestionDataService)], + [SUGGESTION_SOURCE.value, () => import('./notifications/suggestions/source/suggestion-source-data.service').then(m => m.SuggestionSourceDataService)], + [SUGGESTION_TARGET.value, () => import('./notifications/suggestions/target/suggestion-target-data.service').then(m => m.SuggestionTargetDataService)], [DUPLICATE.value, () => import('./submission/submission-duplicate-data.service').then(m => m.SubmissionDuplicateDataService)], [CorrectionType.type.value, () => import('./submission/correctiontype-data.service').then(m => m.CorrectionTypeDataService)], ]); diff --git a/src/app/core/notifications/models/suggestion-objects.resource-type.ts b/src/app/core/notifications/suggestions/models/suggestion-objects.resource-type.ts similarity index 76% rename from src/app/core/notifications/models/suggestion-objects.resource-type.ts rename to src/app/core/notifications/suggestions/models/suggestion-objects.resource-type.ts index 8f83d86376..8f87027a8c 100644 --- a/src/app/core/notifications/models/suggestion-objects.resource-type.ts +++ b/src/app/core/notifications/suggestions/models/suggestion-objects.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../../shared/resource-type'; /** * The resource type for the Suggestion object diff --git a/src/app/core/notifications/models/suggestion-source-object.resource-type.ts b/src/app/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts similarity index 77% rename from src/app/core/notifications/models/suggestion-source-object.resource-type.ts rename to src/app/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts index e319ed5109..2e26fe4301 100644 --- a/src/app/core/notifications/models/suggestion-source-object.resource-type.ts +++ b/src/app/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../../shared/resource-type'; /** * The resource type for the Suggestion Source object diff --git a/src/app/core/notifications/models/suggestion-source.model.ts b/src/app/core/notifications/suggestions/models/suggestion-source.model.ts similarity index 71% rename from src/app/core/notifications/models/suggestion-source.model.ts rename to src/app/core/notifications/suggestions/models/suggestion-source.model.ts index 1a757a5aa0..0218ab4ae1 100644 --- a/src/app/core/notifications/models/suggestion-source.model.ts +++ b/src/app/core/notifications/suggestions/models/suggestion-source.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../../cache/builders/build-decorators'; +import { CacheableObject } from '../../../cache/cacheable-object.model'; +import { HALLink } from '../../../shared/hal-link.model'; +import { ResourceType } from '../../../shared/resource-type'; +import { excludeFromEquals } from '../../../utilities/equals.decorators'; import { SUGGESTION_SOURCE } from './suggestion-source-object.resource-type'; /** diff --git a/src/app/core/notifications/models/suggestion-target-object.resource-type.ts b/src/app/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts similarity index 77% rename from src/app/core/notifications/models/suggestion-target-object.resource-type.ts rename to src/app/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts index 81b1b5c261..71dd41912a 100644 --- a/src/app/core/notifications/models/suggestion-target-object.resource-type.ts +++ b/src/app/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../../shared/resource-type'; /** * The resource type for the Suggestion Target object diff --git a/src/app/core/notifications/models/suggestion-target.model.ts b/src/app/core/notifications/suggestions/models/suggestion-target.model.ts similarity index 75% rename from src/app/core/notifications/models/suggestion-target.model.ts rename to src/app/core/notifications/suggestions/models/suggestion-target.model.ts index cdc78eb466..94d6b7bfa1 100644 --- a/src/app/core/notifications/models/suggestion-target.model.ts +++ b/src/app/core/notifications/suggestions/models/suggestion-target.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../../cache/builders/build-decorators'; +import { CacheableObject } from '../../../cache/cacheable-object.model'; +import { HALLink } from '../../../shared/hal-link.model'; +import { ResourceType } from '../../../shared/resource-type'; +import { excludeFromEquals } from '../../../utilities/equals.decorators'; import { SUGGESTION_TARGET } from './suggestion-target-object.resource-type'; /** diff --git a/src/app/core/notifications/models/suggestion.model.ts b/src/app/core/notifications/suggestions/models/suggestion.model.ts similarity index 80% rename from src/app/core/notifications/models/suggestion.model.ts rename to src/app/core/notifications/suggestions/models/suggestion.model.ts index bd4015b499..82bc46750e 100644 --- a/src/app/core/notifications/models/suggestion.model.ts +++ b/src/app/core/notifications/suggestions/models/suggestion.model.ts @@ -4,15 +4,15 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; +import { typedObject } from '../../../cache/builders/build-decorators'; +import { CacheableObject } from '../../../cache/cacheable-object.model'; +import { HALLink } from '../../../shared/hal-link.model'; import { MetadataMap, MetadataMapSerializer, -} from '../../shared/metadata.models'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../../shared/metadata.models'; +import { ResourceType } from '../../../shared/resource-type'; +import { excludeFromEquals } from '../../../utilities/equals.decorators'; import { SUGGESTION } from './suggestion-objects.resource-type'; /** diff --git a/src/app/core/notifications/source/suggestions-source-data.service.spec.ts b/src/app/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts similarity index 75% rename from src/app/core/notifications/source/suggestions-source-data.service.spec.ts rename to src/app/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts index 3026c2d8b4..b5c7158979 100644 --- a/src/app/core/notifications/source/suggestions-source-data.service.spec.ts +++ b/src/app/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts @@ -7,21 +7,21 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { RestResponse } from '../../cache/response.models'; -import { CoreState } from '../../core-state.model'; -import { FindAllData } from '../../data/base/find-all-data'; -import { testFindAllDataImplementation } from '../../data/base/find-all-data.spec'; -import { DefaultChangeAnalyzer } from '../../data/default-change-analyzer.service'; -import { RemoteData } from '../../data/remote-data'; -import { GetRequest } from '../../data/request.models'; -import { RequestService } from '../../data/request.service'; -import { RequestEntry } from '../../data/request-entry.model'; -import { RequestEntryState } from '../../data/request-entry-state.model'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { NotificationsService } from '../../../../shared/notifications/notifications.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; +import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { RestResponse } from '../../../cache/response.models'; +import { CoreState } from '../../../core-state.model'; +import { FindAllData } from '../../../data/base/find-all-data'; +import { testFindAllDataImplementation } from '../../../data/base/find-all-data.spec'; +import { DefaultChangeAnalyzer } from '../../../data/default-change-analyzer.service'; +import { RemoteData } from '../../../data/remote-data'; +import { GetRequest } from '../../../data/request.models'; +import { RequestService } from '../../../data/request.service'; +import { RequestEntry } from '../../../data/request-entry.model'; +import { RequestEntryState } from '../../../data/request-entry-state.model'; +import { HALEndpointService } from '../../../shared/hal-endpoint.service'; import { SuggestionSource } from '../models/suggestion-source.model'; import { SuggestionSourceDataService } from './suggestion-source-data.service'; diff --git a/src/app/core/notifications/source/suggestion-source-data.service.ts b/src/app/core/notifications/suggestions/source/suggestion-source-data.service.ts similarity index 82% rename from src/app/core/notifications/source/suggestion-source-data.service.ts rename to src/app/core/notifications/suggestions/source/suggestion-source-data.service.ts index f9e21ec49d..d90c1a8e8c 100644 --- a/src/app/core/notifications/source/suggestion-source-data.service.ts +++ b/src/app/core/notifications/suggestions/source/suggestion-source-data.service.ts @@ -3,22 +3,22 @@ import { Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { CoreState } from '../../core-state.model'; +import { NotificationsService } from '../../../../shared/notifications/notifications.service'; +import { FollowLinkConfig } from '../../../../shared/utils/follow-link-config.model'; +import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { CoreState } from '../../../core-state.model'; import { FindAllData, FindAllDataImpl, -} from '../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; -import { DefaultChangeAnalyzer } from '../../data/default-change-analyzer.service'; -import { FindListOptions } from '../../data/find-list-options.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +} from '../../../data/base/find-all-data'; +import { IdentifiableDataService } from '../../../data/base/identifiable-data.service'; +import { DefaultChangeAnalyzer } from '../../../data/default-change-analyzer.service'; +import { FindListOptions } from '../../../data/find-list-options.model'; +import { PaginatedList } from '../../../data/paginated-list.model'; +import { RemoteData } from '../../../data/remote-data'; +import { RequestService } from '../../../data/request.service'; +import { HALEndpointService } from '../../../shared/hal-endpoint.service'; import { SuggestionSource } from '../models/suggestion-source.model'; /** diff --git a/src/app/core/notifications/suggestions-data.service.spec.ts b/src/app/core/notifications/suggestions/suggestion-data.service.spec.ts similarity index 76% rename from src/app/core/notifications/suggestions-data.service.spec.ts rename to src/app/core/notifications/suggestions/suggestion-data.service.spec.ts index 7d32cb3f9b..5b3bf0b0ae 100644 --- a/src/app/core/notifications/suggestions-data.service.spec.ts +++ b/src/app/core/notifications/suggestions/suggestion-data.service.spec.ts @@ -6,22 +6,22 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { RestResponse } from '../cache/response.models'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { RequestEntry } from '../data/request-entry.model'; -import { RequestEntryState } from '../data/request-entry-state.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { SuggestionsDataService } from './suggestions-data.service'; +import { NotificationsService } from '../../../shared/notifications/notifications.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; +import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; +import { RequestParam } from '../../cache/models/request-param.model'; +import { ObjectCacheService } from '../../cache/object-cache.service'; +import { RestResponse } from '../../cache/response.models'; +import { RemoteData } from '../../data/remote-data'; +import { RequestService } from '../../data/request.service'; +import { RequestEntry } from '../../data/request-entry.model'; +import { RequestEntryState } from '../../data/request-entry-state.model'; +import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { SuggestionDataService } from './suggestion-data.service'; describe('SuggestionDataService test', () => { let scheduler: TestScheduler; - let service: SuggestionsDataService; + let service: SuggestionDataService; let requestService: RequestService; let rdbService: RemoteDataBuildService; let objectCache: ObjectCacheService; @@ -40,7 +40,7 @@ describe('SuggestionDataService test', () => { }; function initTestService() { - return new SuggestionsDataService( + return new SuggestionDataService( requestService, rdbService, objectCache, diff --git a/src/app/core/notifications/suggestions-data.service.ts b/src/app/core/notifications/suggestions/suggestion-data.service.ts similarity index 73% rename from src/app/core/notifications/suggestions-data.service.ts rename to src/app/core/notifications/suggestions/suggestion-data.service.ts index 9d4b3da95d..328862dbaf 100644 --- a/src/app/core/notifications/suggestions-data.service.ts +++ b/src/app/core/notifications/suggestions/suggestion-data.service.ts @@ -2,32 +2,31 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { NotificationsService } from '../../../shared/notifications/notifications.service'; +import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; +import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; +import { RequestParam } from '../../cache/models/request-param.model'; +import { ObjectCacheService } from '../../cache/object-cache.service'; import { DeleteData, DeleteDataImpl, -} from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { SearchDataImpl } from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; +} from '../../data/base/delete-data'; +import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; +import { SearchDataImpl } from '../../data/base/search-data'; +import { FindListOptions } from '../../data/find-list-options.model'; +import { PaginatedList } from '../../data/paginated-list.model'; +import { RemoteData } from '../../data/remote-data'; +import { RequestService } from '../../data/request.service'; +import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { NoContent } from '../../shared/NoContent.model'; import { Suggestion } from './models/suggestion.model'; /** * The service handling all Suggestion Target REST requests. */ @Injectable({ providedIn: 'root' }) -export class SuggestionsDataService extends IdentifiableDataService { +export class SuggestionDataService extends IdentifiableDataService { - protected searchFindBySourceMethod = 'findBySource'; protected searchFindByTargetAndSourceMethod = 'findByTargetAndSource'; private deleteData: DeleteData; diff --git a/src/app/core/notifications/target/suggestions-target-data.service.spec.ts b/src/app/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts similarity index 76% rename from src/app/core/notifications/target/suggestions-target-data.service.spec.ts rename to src/app/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts index 7b4ed3e82a..4cfd662fc2 100644 --- a/src/app/core/notifications/target/suggestions-target-data.service.spec.ts +++ b/src/app/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts @@ -7,24 +7,24 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { RestResponse } from '../../cache/response.models'; -import { CoreState } from '../../core-state.model'; -import { FindAllData } from '../../data/base/find-all-data'; -import { testFindAllDataImplementation } from '../../data/base/find-all-data.spec'; -import { SearchData } from '../../data/base/search-data'; -import { testSearchDataImplementation } from '../../data/base/search-data.spec'; -import { DefaultChangeAnalyzer } from '../../data/default-change-analyzer.service'; -import { RemoteData } from '../../data/remote-data'; -import { GetRequest } from '../../data/request.models'; -import { RequestService } from '../../data/request.service'; -import { RequestEntry } from '../../data/request-entry.model'; -import { RequestEntryState } from '../../data/request-entry-state.model'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { NotificationsService } from '../../../../shared/notifications/notifications.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; +import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; +import { RequestParam } from '../../../cache/models/request-param.model'; +import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { RestResponse } from '../../../cache/response.models'; +import { CoreState } from '../../../core-state.model'; +import { FindAllData } from '../../../data/base/find-all-data'; +import { testFindAllDataImplementation } from '../../../data/base/find-all-data.spec'; +import { SearchData } from '../../../data/base/search-data'; +import { testSearchDataImplementation } from '../../../data/base/search-data.spec'; +import { DefaultChangeAnalyzer } from '../../../data/default-change-analyzer.service'; +import { RemoteData } from '../../../data/remote-data'; +import { GetRequest } from '../../../data/request.models'; +import { RequestService } from '../../../data/request.service'; +import { RequestEntry } from '../../../data/request-entry.model'; +import { RequestEntryState } from '../../../data/request-entry-state.model'; +import { HALEndpointService } from '../../../shared/hal-endpoint.service'; import { SuggestionTarget } from '../models/suggestion-target.model'; import { SuggestionTargetDataService } from './suggestion-target-data.service'; diff --git a/src/app/core/notifications/target/suggestion-target-data.service.ts b/src/app/core/notifications/suggestions/target/suggestion-target-data.service.ts similarity index 79% rename from src/app/core/notifications/target/suggestion-target-data.service.ts rename to src/app/core/notifications/suggestions/target/suggestion-target-data.service.ts index 67f8b1349c..a83b24f085 100644 --- a/src/app/core/notifications/target/suggestion-target-data.service.ts +++ b/src/app/core/notifications/suggestions/target/suggestion-target-data.service.ts @@ -3,27 +3,27 @@ import { Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { CoreState } from '../../core-state.model'; +import { NotificationsService } from '../../../../shared/notifications/notifications.service'; +import { FollowLinkConfig } from '../../../../shared/utils/follow-link-config.model'; +import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; +import { RequestParam } from '../../../cache/models/request-param.model'; +import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { CoreState } from '../../../core-state.model'; import { FindAllData, FindAllDataImpl, -} from '../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; +} from '../../../data/base/find-all-data'; +import { IdentifiableDataService } from '../../../data/base/identifiable-data.service'; import { SearchData, SearchDataImpl, -} from '../../data/base/search-data'; -import { DefaultChangeAnalyzer } from '../../data/default-change-analyzer.service'; -import { FindListOptions } from '../../data/find-list-options.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +} from '../../../data/base/search-data'; +import { DefaultChangeAnalyzer } from '../../../data/default-change-analyzer.service'; +import { FindListOptions } from '../../../data/find-list-options.model'; +import { PaginatedList } from '../../../data/paginated-list.model'; +import { RemoteData } from '../../../data/remote-data'; +import { RequestService } from '../../../data/request.service'; +import { HALEndpointService } from '../../../shared/hal-endpoint.service'; import { SuggestionTarget } from '../models/suggestion-target.model'; @Injectable({ providedIn: 'root' }) @@ -55,19 +55,26 @@ export class SuggestionTargetDataService extends IdentifiableDataService>> * The list of Suggestion Target. */ - public getTargets( + public getTargetsBySource( source: string, options: FindListOptions = {}, + useCachedVersionIfAvailable = true, + reRequestOnStale = true, ...linksToFollow: FollowLinkConfig[] ): Observable>> { options.searchParams = [new RequestParam('source', source)]; - return this.searchBy(this.searchFindBySourceMethod, options, true, true, ...linksToFollow); + return this.searchBy(this.searchFindBySourceMethod, options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); } /** diff --git a/src/app/core/provide-core.ts b/src/app/core/provide-core.ts index 5d9a4df61e..37f0d61656 100644 --- a/src/app/core/provide-core.ts +++ b/src/app/core/provide-core.ts @@ -30,11 +30,11 @@ import { EPerson } from './eperson/models/eperson.model'; import { Group } from './eperson/models/group.model'; import { MetadataField } from './metadata/metadata-field.model'; import { MetadataSchema } from './metadata/metadata-schema.model'; -import { SuggestionSource } from './notifications/models/suggestion-source.model'; -import { SuggestionTarget } from './notifications/models/suggestion-target.model'; import { QualityAssuranceEventObject } from './notifications/qa/models/quality-assurance-event.model'; import { QualityAssuranceSourceObject } from './notifications/qa/models/quality-assurance-source.model'; import { QualityAssuranceTopicObject } from './notifications/qa/models/quality-assurance-topic.model'; +import { SuggestionSource } from './notifications/suggestions/models/suggestion-source.model'; +import { SuggestionTarget } from './notifications/suggestions/models/suggestion-target.model'; import { OrcidHistory } from './orcid/model/orcid-history.model'; import { OrcidQueue } from './orcid/model/orcid-queue.model'; import { ResearcherProfile } from './profile/model/researcher-profile.model'; diff --git a/src/app/notifications/suggestion-actions/suggestion-actions.component.ts b/src/app/notifications/suggestion-actions/suggestion-actions.component.ts index 02eaf10321..36d58acbbf 100644 --- a/src/app/notifications/suggestion-actions/suggestion-actions.component.ts +++ b/src/app/notifications/suggestion-actions/suggestion-actions.component.ts @@ -12,7 +12,7 @@ import { import { TranslateModule } from '@ngx-translate/core'; import { take } from 'rxjs/operators'; -import { Suggestion } from '../../core/notifications/models/suggestion.model'; +import { Suggestion } from '../../core/notifications/suggestions/models/suggestion.model'; import { Collection } from '../../core/shared/collection.model'; import { ItemType } from '../../core/shared/item-relationships/item-type.model'; import { ThemedCreateItemParentSelectorComponent } from '../../shared/dso-selector/modal-wrappers/create-item-parent-selector/themed-create-item-parent-selector.component'; diff --git a/src/app/notifications/suggestion-list-element/suggestion-approve-and-import.ts b/src/app/notifications/suggestion-list-element/suggestion-approve-and-import.ts index e85b6ec4d0..bda9532393 100644 --- a/src/app/notifications/suggestion-list-element/suggestion-approve-and-import.ts +++ b/src/app/notifications/suggestion-list-element/suggestion-approve-and-import.ts @@ -1,4 +1,4 @@ -import { Suggestion } from '../../core/notifications/models/suggestion.model'; +import { Suggestion } from '../../core/notifications/suggestions/models/suggestion.model'; /** * A simple interface to unite a specific suggestion and the id of the chosen collection diff --git a/src/app/notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component.ts b/src/app/notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component.ts index 7fe10fc6c5..e07a1dce75 100644 --- a/src/app/notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component.ts +++ b/src/app/notifications/suggestion-list-element/suggestion-evidences/suggestion-evidences.component.ts @@ -8,7 +8,7 @@ import { } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; -import { SuggestionEvidences } from '../../../core/notifications/models/suggestion.model'; +import { SuggestionEvidences } from '../../../core/notifications/suggestions/models/suggestion.model'; import { fadeIn } from '../../../shared/animations/fade'; import { ObjectKeysPipe } from '../../../shared/utils/object-keys-pipe'; diff --git a/src/app/notifications/suggestion-list-element/suggestion-list-element.component.ts b/src/app/notifications/suggestion-list-element/suggestion-list-element.component.ts index c636fabe10..11bc64935b 100644 --- a/src/app/notifications/suggestion-list-element/suggestion-list-element.component.ts +++ b/src/app/notifications/suggestion-list-element/suggestion-list-element.component.ts @@ -8,7 +8,7 @@ import { } from '@angular/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule } from '@ngx-translate/core'; -import { Suggestion } from 'src/app/core/notifications/models/suggestion.model'; +import { Suggestion } from 'src/app/core/notifications/suggestions/models/suggestion.model'; import { ItemSearchResultListElementComponent } from '../../../themes/custom/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component'; import { Item } from '../../core/shared/item.model'; diff --git a/src/app/notifications/suggestion-targets/publication-claim/publication-claim.component.ts b/src/app/notifications/suggestion-targets/publication-claim/publication-claim.component.ts index 136466b4ac..e833df15f6 100644 --- a/src/app/notifications/suggestion-targets/publication-claim/publication-claim.component.ts +++ b/src/app/notifications/suggestion-targets/publication-claim/publication-claim.component.ts @@ -22,7 +22,7 @@ import { take, } from 'rxjs/operators'; -import { SuggestionTarget } from '../../../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../../../core/notifications/suggestions/models/suggestion-target.model'; import { PaginationService } from '../../../core/pagination/pagination.service'; import { hasValue } from '../../../shared/empty.util'; import { ThemedLoadingComponent } from '../../../shared/loading/themed-loading.component'; diff --git a/src/app/notifications/suggestion-targets/suggestion-targets.actions.ts b/src/app/notifications/suggestion-targets/suggestion-targets.actions.ts index abbf08d812..a4e0d0e027 100644 --- a/src/app/notifications/suggestion-targets/suggestion-targets.actions.ts +++ b/src/app/notifications/suggestion-targets/suggestion-targets.actions.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../../core/notifications/suggestions/models/suggestion-target.model'; import { type } from '../../shared/ngrx/type'; /** diff --git a/src/app/notifications/suggestion-targets/suggestion-targets.effects.ts b/src/app/notifications/suggestion-targets/suggestion-targets.effects.ts index e648190228..e3956cbbdc 100644 --- a/src/app/notifications/suggestion-targets/suggestion-targets.effects.ts +++ b/src/app/notifications/suggestion-targets/suggestion-targets.effects.ts @@ -15,7 +15,7 @@ import { } from 'rxjs/operators'; import { PaginatedList } from '../../core/data/paginated-list.model'; -import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../../core/notifications/suggestions/models/suggestion-target.model'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { SuggestionsService } from '../suggestions.service'; import { diff --git a/src/app/notifications/suggestion-targets/suggestion-targets.reducer.ts b/src/app/notifications/suggestion-targets/suggestion-targets.reducer.ts index 0fcf4c5fe2..16bd7b0b7b 100644 --- a/src/app/notifications/suggestion-targets/suggestion-targets.reducer.ts +++ b/src/app/notifications/suggestion-targets/suggestion-targets.reducer.ts @@ -1,4 +1,4 @@ -import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../../core/notifications/suggestions/models/suggestion-target.model'; import { SuggestionTargetActionTypes, SuggestionTargetsActions, diff --git a/src/app/notifications/suggestion-targets/suggestion-targets.state.service.ts b/src/app/notifications/suggestion-targets/suggestion-targets.state.service.ts index d011bbe34d..25115f794c 100644 --- a/src/app/notifications/suggestion-targets/suggestion-targets.state.service.ts +++ b/src/app/notifications/suggestion-targets/suggestion-targets.state.service.ts @@ -6,8 +6,7 @@ import { import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model'; -import { SuggestionNotificationsState } from '../../notifications/notifications.reducer'; +import { SuggestionTarget } from '../../core/notifications/suggestions/models/suggestion-target.model'; import { getCurrentUserSuggestionTargetsSelector, getCurrentUserSuggestionTargetsVisitedSelector, @@ -17,6 +16,7 @@ import { isSuggestionTargetLoadedSelector, suggestionTargetObjectSelector, } from '../../suggestion-notifications/selectors'; +import { SuggestionNotificationsState } from '../notifications.reducer'; import { ClearSuggestionTargetsAction, MarkUserSuggestionsAsVisitedAction, diff --git a/src/app/notifications/suggestion.service.spec.ts b/src/app/notifications/suggestion.service.spec.ts index aee00c8bf4..b2f862d136 100644 --- a/src/app/notifications/suggestion.service.spec.ts +++ b/src/app/notifications/suggestion.service.spec.ts @@ -7,9 +7,9 @@ import { SortOptions, } from '../core/cache/models/sort-options.model'; import { FindListOptions } from '../core/data/find-list-options.model'; -import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model'; -import { SuggestionsDataService } from '../core/notifications/suggestions-data.service'; -import { SuggestionTargetDataService } from '../core/notifications/target/suggestion-target-data.service'; +import { SuggestionTarget } from '../core/notifications/suggestions/models/suggestion-target.model'; +import { SuggestionDataService } from '../core/notifications/suggestions/suggestion-data.service'; +import { SuggestionTargetDataService } from '../core/notifications/suggestions/target/suggestion-target-data.service'; import { ResearcherProfile } from '../core/profile/model/researcher-profile.model'; import { ResearcherProfileDataService } from '../core/profile/researcher-profile-data.service'; import { ResourceType } from '../core/shared/resource-type'; @@ -22,7 +22,7 @@ describe('SuggestionsService test', () => { let scheduler: TestScheduler; let service: SuggestionsService; let researcherProfileService: ResearcherProfileDataService; - let suggestionsDataService: SuggestionsDataService; + let suggestionsDataService: SuggestionDataService; let suggestionTargetDataService: SuggestionTargetDataService; let translateService: any = { instant: (str) => str, @@ -89,7 +89,7 @@ describe('SuggestionsService test', () => { sort: sortOptions, }; service.getTargets('source', 10, 1); - expect(suggestionTargetDataService.getTargets).toHaveBeenCalledWith('source', findListOptions); + expect(suggestionTargetDataService.getTargetsBySource).toHaveBeenCalledWith('source', findListOptions); }); it('should get suggestions', () => { diff --git a/src/app/notifications/suggestions-notification/suggestions-notification.component.ts b/src/app/notifications/suggestions-notification/suggestions-notification.component.ts index 11fbf2ea4c..3a8d497b82 100644 --- a/src/app/notifications/suggestions-notification/suggestions-notification.component.ts +++ b/src/app/notifications/suggestions-notification/suggestions-notification.component.ts @@ -11,7 +11,7 @@ import { RouterLink } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; import { Observable } from 'rxjs'; -import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../../core/notifications/suggestions/models/suggestion-target.model'; import { SuggestionTargetsStateService } from '../suggestion-targets/suggestion-targets.state.service'; import { SuggestionsService } from '../suggestions.service'; diff --git a/src/app/notifications/suggestions-popup/suggestions-popup.component.ts b/src/app/notifications/suggestions-popup/suggestions-popup.component.ts index 2b2f67c58c..07fd7d2e2d 100644 --- a/src/app/notifications/suggestions-popup/suggestions-popup.component.ts +++ b/src/app/notifications/suggestions-popup/suggestions-popup.component.ts @@ -22,7 +22,7 @@ import { takeUntil, } from 'rxjs/operators'; -import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../../core/notifications/suggestions/models/suggestion-target.model'; import { fromTopEnter } from '../../shared/animations/fromTop'; import { isNotEmpty } from '../../shared/empty.util'; import { SuggestionTargetsStateService } from '../suggestion-targets/suggestion-targets.state.service'; diff --git a/src/app/notifications/suggestions.service.ts b/src/app/notifications/suggestions.service.ts index f128c87704..e37aa728a2 100644 --- a/src/app/notifications/suggestions.service.ts +++ b/src/app/notifications/suggestions.service.ts @@ -21,10 +21,10 @@ import { import { FindListOptions } from '../core/data/find-list-options.model'; import { PaginatedList } from '../core/data/paginated-list.model'; import { RemoteData } from '../core/data/remote-data'; -import { Suggestion } from '../core/notifications/models/suggestion.model'; -import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model'; -import { SuggestionsDataService } from '../core/notifications/suggestions-data.service'; -import { SuggestionTargetDataService } from '../core/notifications/target/suggestion-target-data.service'; +import { Suggestion } from '../core/notifications/suggestions/models/suggestion.model'; +import { SuggestionTarget } from '../core/notifications/suggestions/models/suggestion-target.model'; +import { SuggestionDataService } from '../core/notifications/suggestions/suggestion-data.service'; +import { SuggestionTargetDataService } from '../core/notifications/suggestions/target/suggestion-target-data.service'; import { ResearcherProfile } from '../core/profile/model/researcher-profile.model'; import { ResearcherProfileDataService } from '../core/profile/researcher-profile-data.service'; import { NoContent } from '../core/shared/NoContent.model'; @@ -62,12 +62,12 @@ export class SuggestionsService { * Initialize the service variables. * @param {ResearcherProfileDataService} researcherProfileService * @param {SuggestionTargetDataService} suggestionTargetDataService - * @param {SuggestionsDataService} suggestionsDataService + * @param {SuggestionDataService} suggestionsDataService * @param translateService */ constructor( private researcherProfileService: ResearcherProfileDataService, - private suggestionsDataService: SuggestionsDataService, + private suggestionsDataService: SuggestionDataService, private suggestionTargetDataService: SuggestionTargetDataService, private translateService: TranslateService, ) { @@ -94,7 +94,7 @@ export class SuggestionsService { sort: sortOptions, }; - return this.suggestionTargetDataService.getTargets(source, findListOptions).pipe( + return this.suggestionTargetDataService.getTargetsBySource(source, findListOptions).pipe( getFinishedRemoteData(), take(1), map((rd: RemoteData>) => { diff --git a/src/app/shared/mocks/publication-claim-targets.mock.ts b/src/app/shared/mocks/publication-claim-targets.mock.ts index 0b3c3bc9b0..b94235c047 100644 --- a/src/app/shared/mocks/publication-claim-targets.mock.ts +++ b/src/app/shared/mocks/publication-claim-targets.mock.ts @@ -1,4 +1,4 @@ -import { SuggestionTarget } from '../../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../../core/notifications/suggestions/models/suggestion-target.model'; import { ResourceType } from '../../core/shared/resource-type'; // REST Mock --------------------------------------------------------------------- diff --git a/src/app/shared/mocks/publication-claim.mock.ts b/src/app/shared/mocks/publication-claim.mock.ts index 41866a47f9..a5ef4e3001 100644 --- a/src/app/shared/mocks/publication-claim.mock.ts +++ b/src/app/shared/mocks/publication-claim.mock.ts @@ -2,8 +2,8 @@ // REST Mock --------------------------------------------------------------------- // ------------------------------------------------------------------------------- -import { Suggestion } from '../../core/notifications/models/suggestion.model'; -import { SUGGESTION } from '../../core/notifications/models/suggestion-objects.resource-type'; +import { Suggestion } from '../../core/notifications/suggestions/models/suggestion.model'; +import { SUGGESTION } from '../../core/notifications/suggestions/models/suggestion-objects.resource-type'; export const mockSuggestionPublicationOne: Suggestion = { id: '24694773', diff --git a/src/app/suggestion-notifications/selectors.ts b/src/app/suggestion-notifications/selectors.ts index a8ec8c7def..b44b0877da 100644 --- a/src/app/suggestion-notifications/selectors.ts +++ b/src/app/suggestion-notifications/selectors.ts @@ -4,7 +4,7 @@ import { MemoizedSelector, } from '@ngrx/store'; -import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model'; +import { SuggestionTarget } from '../core/notifications/suggestions/models/suggestion-target.model'; import { suggestionNotificationsSelector, SuggestionNotificationsState, diff --git a/src/app/suggestions-page/suggestions-page.component.ts b/src/app/suggestions-page/suggestions-page.component.ts index 843c6b71a8..e5dfe5a2ce 100644 --- a/src/app/suggestions-page/suggestions-page.component.ts +++ b/src/app/suggestions-page/suggestions-page.component.ts @@ -37,8 +37,8 @@ import { import { FindListOptions } from '../core/data/find-list-options.model'; import { PaginatedList } from '../core/data/paginated-list.model'; import { RemoteData } from '../core/data/remote-data'; -import { Suggestion } from '../core/notifications/models/suggestion.model'; -import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model'; +import { Suggestion } from '../core/notifications/suggestions/models/suggestion.model'; +import { SuggestionTarget } from '../core/notifications/suggestions/models/suggestion-target.model'; import { PaginationService } from '../core/pagination/pagination.service'; import { redirectOn4xx } from '../core/shared/authorized.operators'; import { getFirstSucceededRemoteDataPayload } from '../core/shared/operators'; diff --git a/src/app/suggestions-page/suggestions-page.resolver.ts b/src/app/suggestions-page/suggestions-page.resolver.ts index 48c5a40f31..ef9bb3e55b 100644 --- a/src/app/suggestions-page/suggestions-page.resolver.ts +++ b/src/app/suggestions-page/suggestions-page.resolver.ts @@ -8,8 +8,8 @@ import { Observable } from 'rxjs'; import { find } from 'rxjs/operators'; import { RemoteData } from '../core/data/remote-data'; -import { SuggestionTarget } from '../core/notifications/models/suggestion-target.model'; -import { SuggestionTargetDataService } from '../core/notifications/target/suggestion-target-data.service'; +import { SuggestionTarget } from '../core/notifications/suggestions/models/suggestion-target.model'; +import { SuggestionTargetDataService } from '../core/notifications/suggestions/target/suggestion-target-data.service'; import { hasValue } from '../shared/empty.util'; /**