diff --git a/src/app/core/config/submission-accesses-config.service.ts b/src/app/core/config/submission-accesses-config.service.ts index de9afc66ea..7c2d2046d9 100644 --- a/src/app/core/config/submission-accesses-config.service.ts +++ b/src/app/core/config/submission-accesses-config.service.ts @@ -7,7 +7,6 @@ import { dataService } from '../cache/builders/build-decorators'; import { SUBMISSION_ACCESSES_TYPE } from './models/config-type'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { Store } from '@ngrx/store'; -import { CoreState } from '../core.reducers'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { HttpClient } from '@angular/common/http'; import { DefaultChangeAnalyzer } from '../data/default-change-analyzer.service'; @@ -16,6 +15,7 @@ import { SubmissionAccessesModel } from './models/config-submission-accesses.mod import { RemoteData } from '../data/remote-data'; import { Observable } from 'rxjs'; import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; +import { CoreState } from '../core-state.model'; /** * Provides methods to retrieve, from REST server, bitstream access conditions configurations applicable during the submission process. diff --git a/src/app/core/data/entity-type.service.ts b/src/app/core/data/entity-type.service.ts index aeeb9a7ac9..d08e6d28e7 100644 --- a/src/app/core/data/entity-type.service.ts +++ b/src/app/core/data/entity-type.service.ts @@ -9,7 +9,6 @@ import { NotificationsService } from '../../shared/notifications/notifications.s import { HttpClient } from '@angular/common/http'; import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; import { Injectable } from '@angular/core'; -import { FindListOptions } from './request.models'; import { Observable } from 'rxjs'; import { filter, map, switchMap, take } from 'rxjs/operators'; import { RemoteData } from './remote-data'; @@ -19,6 +18,7 @@ import { ItemType } from '../shared/item-relationships/item-type.model'; import { getFirstSucceededRemoteData, getRemoteDataPayload } from '../shared/operators'; import { RelationshipTypeService } from './relationship-type.service'; import { CoreState } from '../core-state.model'; +import { FindListOptions } from './find-list-options.model'; /** * Service handling all ItemType requests diff --git a/src/app/core/data/item-request-data.service.ts b/src/app/core/data/item-request-data.service.ts index 41ad19211a..2bab0b304f 100644 --- a/src/app/core/data/item-request-data.service.ts +++ b/src/app/core/data/item-request-data.service.ts @@ -3,7 +3,7 @@ import { Observable } from 'rxjs'; import { distinctUntilChanged, filter, find, map } from 'rxjs/operators'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData, sendRequest } from '../shared/operators'; +import { getFirstCompletedRemoteData } from '../shared/operators'; import { RemoteData } from './remote-data'; import { PostRequest, PutRequest } from './request.models'; import { RequestService } from './request.service'; @@ -11,13 +11,14 @@ import { ItemRequest } from '../shared/item-request.model'; import { hasValue, isNotEmpty } from '../../shared/empty.util'; import { DataService } from './data.service'; import { Store } from '@ngrx/store'; -import { CoreState } from '../core.reducers'; import { ObjectCacheService } from '../cache/object-cache.service'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; import { RequestCopyEmail } from '../../request-copy/email-request-copy/request-copy-email.model'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { CoreState } from '../core-state.model'; +import { sendRequest } from '../shared/request.operators'; /** * A service responsible for fetching/sending data from/to the REST API on the itemrequests endpoint diff --git a/src/app/core/data/version-data.service.spec.ts b/src/app/core/data/version-data.service.spec.ts index 5a8caf31be..29de3389d7 100644 --- a/src/app/core/data/version-data.service.spec.ts +++ b/src/app/core/data/version-data.service.spec.ts @@ -9,12 +9,10 @@ import { HALEndpointService } from '../shared/hal-endpoint.service'; import { RequestService } from './request.service'; import { PageInfo } from '../shared/page-info.model'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { RequestEntry } from './request.reducer'; import { HrefOnlyDataService } from './href-only-data.service'; import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; import { Store } from '@ngrx/store'; -import { CoreState } from '../core.reducers'; import { RestResponse } from '../cache/response.models'; import { cold, getTestScheduler, hot } from 'jasmine-marbles'; import { Item } from '../shared/item.model'; @@ -22,6 +20,8 @@ import { VersionDataService } from './version-data.service'; import { Version } from '../shared/version.model'; import { VersionHistory } from '../shared/version-history.model'; import { followLink } from '../../shared/utils/follow-link-config.model'; +import { CoreState } from '../core-state.model'; +import { RequestEntry } from './request-entry.model'; describe('VersionDataService test', () => { diff --git a/src/app/core/data/version-history-data.service.ts b/src/app/core/data/version-history-data.service.ts index 9bdfc3ec6a..2769e26770 100644 --- a/src/app/core/data/version-history-data.service.ts +++ b/src/app/core/data/version-history-data.service.ts @@ -9,7 +9,7 @@ import { HALEndpointService } from '../shared/hal-endpoint.service'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; -import { PostRequest, RestRequest } from './request.models'; +import { PostRequest } from './request.models'; import { Observable, of } from 'rxjs'; import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; import { RemoteData } from './remote-data'; @@ -25,13 +25,15 @@ import { getAllSucceededRemoteData, getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, - getRemoteDataPayload, - sendRequest + getRemoteDataPayload } from '../shared/operators'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { hasValueOperator } from '../../shared/empty.util'; import { Item } from '../shared/item.model'; import { CoreState } from '../core-state.model'; +import { FindListOptions } from './find-list-options.model'; +import { sendRequest } from '../shared/request.operators'; +import { RestRequest } from './rest-request.model'; /** * Service responsible for handling requests related to the VersionHistory object diff --git a/src/app/core/feedback/feedback-data.service.spec.ts b/src/app/core/feedback/feedback-data.service.spec.ts index 4bb5e642c2..1462a79587 100644 --- a/src/app/core/feedback/feedback-data.service.spec.ts +++ b/src/app/core/feedback/feedback-data.service.spec.ts @@ -7,9 +7,9 @@ import { getMockRequestService } from '../../shared/mocks/request.service.mock'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { HttpClient } from '@angular/common/http'; import { Store } from '@ngrx/store'; -import { CoreState } from '../core.reducers'; import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service'; import { Feedback } from './models/feedback.model'; +import { CoreState } from '../core-state.model'; describe('FeedbackDataService', () => { let service: FeedbackDataService; diff --git a/src/app/core/shared/item-request.model.ts b/src/app/core/shared/item-request.model.ts index 08b65abebf..35dacc67c4 100644 --- a/src/app/core/shared/item-request.model.ts +++ b/src/app/core/shared/item-request.model.ts @@ -3,8 +3,8 @@ import { typedObject } from '../cache/builders/build-decorators'; import { excludeFromEquals } from '../utilities/equals.decorators'; import { ResourceType } from './resource-type'; import { ITEM_REQUEST } from './item-request.resource-type'; -import { CacheableObject } from '../cache/object-cache.reducer'; import { HALLink } from './hal-link.model'; +import { CacheableObject } from '../cache/cacheable-object.model'; /** * Model class for an ItemRequest diff --git a/src/app/core/shared/search/search-configuration.service.spec.ts b/src/app/core/shared/search/search-configuration.service.spec.ts index caca1b417a..b21692fb5c 100644 --- a/src/app/core/shared/search/search-configuration.service.spec.ts +++ b/src/app/core/shared/search/search-configuration.service.spec.ts @@ -9,9 +9,9 @@ import { PaginationServiceStub } from '../../../shared/testing/pagination-servic import { map } from 'rxjs/operators'; import { RemoteData } from '../../data/remote-data'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { SearchObjects } from '../../../shared/search/search-objects.model'; import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; import { RequestEntry } from '../../data/request-entry.model'; +import { SearchObjects } from '../../../shared/search/models/search-objects.model'; describe('SearchConfigurationService', () => { let service: SearchConfigurationService; diff --git a/src/app/core/shared/search/search-configuration.service.ts b/src/app/core/shared/search/search-configuration.service.ts index 3f6334f770..eed93ae201 100644 --- a/src/app/core/shared/search/search-configuration.service.ts +++ b/src/app/core/shared/search/search-configuration.service.ts @@ -2,7 +2,7 @@ import { Injectable, OnDestroy } from '@angular/core'; import { ActivatedRoute, Params } from '@angular/router'; import { BehaviorSubject, combineLatest as observableCombineLatest, merge as observableMerge, Observable, Subscription } from 'rxjs'; -import { filter, map, startWith } from 'rxjs/operators'; +import { filter, map, startWith, take } from 'rxjs/operators'; import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; import { SearchOptions } from '../../../shared/search/models/search-options.model'; import { PaginatedSearchOptions } from '../../../shared/search/models/paginated-search-options.model'; @@ -15,7 +15,6 @@ import { getAllSucceededRemoteDataPayload, getFirstSucceededRemoteData } from '. import { hasNoValue, hasValue, isNotEmpty, isNotEmptyOperator } from '../../../shared/empty.util'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { SearchConfig, SortConfig } from './search-filters/search-config.model'; -import { SearchService } from './search.service'; import { PaginationService } from '../../pagination/pagination.service'; import { LinkService } from '../../cache/builders/link.service'; import { HALEndpointService } from '../hal-endpoint.service'; @@ -23,12 +22,12 @@ import { RequestService } from '../../data/request.service'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { GetRequest } from '../../data/request.models'; import { URLCombiner } from '../../url-combiner/url-combiner'; -import { SearchFilterConfig } from '../../../shared/search/search-filter-config.model'; import { GenericConstructor } from '../generic-constructor'; import { ResponseParsingService } from '../../data/parsing.service'; import { FacetConfigResponseParsingService } from '../../data/facet-config-response-parsing.service'; -import { FacetConfigResponse } from '../../../shared/search/facet-config-response.model'; import { ViewMode } from '../view-mode.model'; +import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; +import { FacetConfigResponse } from '../../../shared/search/models/facet-config-response.model'; /** * Service that performs all actions that have to do with the current search configuration @@ -232,11 +231,10 @@ export class SearchConfigurationService implements OnDestroy { /** * Creates an observable of SearchConfig every time the configuration stream emits. * @param configuration The search configuration - * @param service The search service to use * @param scope The search scope if exists */ - getConfigurationSearchConfig(configuration: string, service: SearchService, scope?: string): Observable { - return service.getSearchConfigurationFor(scope, configuration).pipe( + getConfigurationSearchConfig(configuration: string, scope?: string): Observable { + return this.getSearchConfigurationFor(scope, configuration).pipe( getAllSucceededRemoteDataPayload() ); } diff --git a/src/app/core/shared/search/search.service.ts b/src/app/core/shared/search/search.service.ts index 5ba31c4f8d..01eabf7897 100644 --- a/src/app/core/shared/search/search.service.ts +++ b/src/app/core/shared/search/search.service.ts @@ -19,7 +19,6 @@ import { SearchFilterConfig } from '../../../shared/search/models/search-filter- import { SearchResponseParsingService } from '../../data/search-response-parsing.service'; import { SearchObjects } from '../../../shared/search/models/search-objects.model'; import { FacetValueResponseParsingService } from '../../data/facet-value-response-parsing.service'; -import { FacetConfigResponseParsingService } from '../../data/facet-config-response-parsing.service'; import { PaginatedSearchOptions } from '../../../shared/search/models/paginated-search-options.model'; import { CommunityDataService } from '../../data/community-data.service'; import { ViewMode } from '../view-mode.model'; @@ -30,9 +29,7 @@ import { RouteService } from '../../services/route.service'; import { SearchResult } from '../../../shared/search/models/search-result.model'; import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model'; import { getSearchResultFor } from '../../../shared/search/search-result-element-decorator'; -import { FacetConfigResponse } from '../../../shared/search/models/facet-config-response.model'; import { FacetValues } from '../../../shared/search/models/facet-values.model'; -import { SearchConfig } from './search-filters/search-config.model'; import { PaginationService } from '../../pagination/pagination.service'; import { SearchConfigurationService } from './search-configuration.service'; import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; diff --git a/src/app/core/submission/workflowitem-data.service.spec.ts b/src/app/core/submission/workflowitem-data.service.spec.ts index 8a5177118d..fb974a9db3 100644 --- a/src/app/core/submission/workflowitem-data.service.spec.ts +++ b/src/app/core/submission/workflowitem-data.service.spec.ts @@ -9,16 +9,16 @@ import { HALEndpointService } from '../shared/hal-endpoint.service'; import { RequestService } from '../data/request.service'; import { PageInfo } from '../shared/page-info.model'; import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { RequestEntry } from '../data/request.reducer'; import { HrefOnlyDataService } from '../data/href-only-data.service'; import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; import { Store } from '@ngrx/store'; -import { CoreState } from '../core.reducers'; import { RestResponse } from '../cache/response.models'; import { cold, getTestScheduler, hot } from 'jasmine-marbles'; import { Item } from '../shared/item.model'; import { WorkflowItemDataService } from './workflowitem-data.service'; import { WorkflowItem } from './models/workflowitem.model'; +import { CoreState } from '../core-state.model'; +import { RequestEntry } from '../data/request-entry.model'; describe('WorkflowItemDataService test', () => { let scheduler: TestScheduler; diff --git a/src/app/core/submission/workflowitem-data.service.ts b/src/app/core/submission/workflowitem-data.service.ts index 60fd66ccef..cc9ceab36c 100644 --- a/src/app/core/submission/workflowitem-data.service.ts +++ b/src/app/core/submission/workflowitem-data.service.ts @@ -8,7 +8,7 @@ import { DataService } from '../data/data.service'; import { RequestService } from '../data/request.service'; import { WorkflowItem } from './models/workflowitem.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { DeleteByIDRequest, FindListOptions } from '../data/request.models'; +import { DeleteByIDRequest } from '../data/request.models'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service'; @@ -22,6 +22,7 @@ import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; import { WorkspaceItem } from './models/workspaceitem.model'; import { RequestParam } from '../cache/models/request-param.model'; import { CoreState } from '../core-state.model'; +import { FindListOptions } from '../data/find-list-options.model'; /** * A service that provides methods to make REST requests with workflow items endpoint. diff --git a/src/app/core/submission/workspaceitem-data.service.spec.ts b/src/app/core/submission/workspaceitem-data.service.spec.ts index da7edccda7..6c2fa15e7c 100644 --- a/src/app/core/submission/workspaceitem-data.service.spec.ts +++ b/src/app/core/submission/workspaceitem-data.service.spec.ts @@ -9,16 +9,16 @@ import { HALEndpointService } from '../shared/hal-endpoint.service'; import { RequestService } from '../data/request.service'; import { PageInfo } from '../shared/page-info.model'; import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { RequestEntry } from '../data/request.reducer'; import { HrefOnlyDataService } from '../data/href-only-data.service'; import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; import { WorkspaceitemDataService } from './workspaceitem-data.service'; import { Store } from '@ngrx/store'; -import { CoreState } from '../core.reducers'; import { RestResponse } from '../cache/response.models'; import { cold, getTestScheduler, hot } from 'jasmine-marbles'; import { Item } from '../shared/item.model'; import { WorkspaceItem } from './models/workspaceitem.model'; +import { RequestEntry } from '../data/request-entry.model'; +import { CoreState } from '../core-state.model'; describe('WorkspaceitemDataService test', () => { let scheduler: TestScheduler; diff --git a/src/app/core/submission/workspaceitem-data.service.ts b/src/app/core/submission/workspaceitem-data.service.ts index 516f22e8fd..1b9782834c 100644 --- a/src/app/core/submission/workspaceitem-data.service.ts +++ b/src/app/core/submission/workspaceitem-data.service.ts @@ -13,10 +13,10 @@ import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service'; import { WorkspaceItem } from './models/workspaceitem.model'; import { Observable } from 'rxjs'; import { RemoteData } from '../data/remote-data'; -import { FindListOptions } from '../data/request.models'; import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; import { RequestParam } from '../cache/models/request-param.model'; import { CoreState } from '../core-state.model'; +import { FindListOptions } from '../data/find-list-options.model'; /** * A service that provides methods to make REST requests with workspaceitems endpoint. diff --git a/src/app/correlation-id/correlation-id.reducer.ts b/src/app/correlation-id/correlation-id.reducer.ts index b7525b0b1c..d18c7bc83e 100644 --- a/src/app/correlation-id/correlation-id.reducer.ts +++ b/src/app/correlation-id/correlation-id.reducer.ts @@ -1,14 +1,7 @@ -import { - CorrelationIdAction, - CorrelationIDActionTypes, - SetCorrelationIdAction -} from './correlation-id.actions'; -import { AppState } from '../app.reducer'; +import { CorrelationIdAction, CorrelationIDActionTypes, SetCorrelationIdAction } from './correlation-id.actions'; const initialState = null; -export const correlationIdSelector = (state: AppState) => state.correlationId; - /** * Reducer that handles actions to update the correlation ID * @param {string} state the previous correlation ID (null if unset) diff --git a/src/app/correlation-id/correlation-id.selector.ts b/src/app/correlation-id/correlation-id.selector.ts index e69de29bb2..5dc7fcd460 100644 --- a/src/app/correlation-id/correlation-id.selector.ts +++ b/src/app/correlation-id/correlation-id.selector.ts @@ -0,0 +1,3 @@ +import { AppState } from '../app.reducer'; + +export const correlationIdSelector = (state: AppState) => state.correlationId; diff --git a/src/app/correlation-id/correlation-id.service.ts b/src/app/correlation-id/correlation-id.service.ts index 6f4b2a5341..b14ea803fe 100644 --- a/src/app/correlation-id/correlation-id.service.ts +++ b/src/app/correlation-id/correlation-id.service.ts @@ -3,10 +3,10 @@ import { UUIDService } from '../core/shared/uuid.service'; import { Store, select } from '@ngrx/store'; import { AppState } from '../app.reducer'; import { isEmpty } from '../shared/empty.util'; -import { correlationIdSelector } from './correlation-id.reducer'; import { take } from 'rxjs/operators'; import { SetCorrelationIdAction } from './correlation-id.actions'; import { Injectable } from '@angular/core'; +import { correlationIdSelector } from './correlation-id.selector'; /** * Service to manage the correlation id, an id used to give context to server side logs diff --git a/src/app/item-page/field-components/collections/collections.component.spec.ts b/src/app/item-page/field-components/collections/collections.component.spec.ts index d5278706da..c293109ba6 100644 --- a/src/app/item-page/field-components/collections/collections.component.spec.ts +++ b/src/app/item-page/field-components/collections/collections.component.spec.ts @@ -9,9 +9,9 @@ import { Item } from '../../../core/shared/item.model'; import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { CollectionsComponent } from './collections.component'; -import { FindListOptions } from '../../../core/data/request.models'; import { buildPaginatedList, PaginatedList } from '../../../core/data/paginated-list.model'; import { PageInfo } from '../../../core/shared/page-info.model'; +import { FindListOptions } from '../../../core/data/find-list-options.model'; const createMockCollection = (id: string) => Object.assign(new Collection(), { id: id, diff --git a/src/app/item-page/field-components/collections/collections.component.ts b/src/app/item-page/field-components/collections/collections.component.ts index 23aff80160..5267d176a6 100644 --- a/src/app/item-page/field-components/collections/collections.component.ts +++ b/src/app/item-page/field-components/collections/collections.component.ts @@ -7,13 +7,13 @@ import { PaginatedList } from '../../../core/data/paginated-list.model'; import { Collection } from '../../../core/shared/collection.model'; import { Item } from '../../../core/shared/item.model'; import { hasValue } from '../../../shared/empty.util'; -import { FindListOptions } from '../../../core/data/request.models'; import { getAllCompletedRemoteData, getAllSucceededRemoteDataPayload, getFirstSucceededRemoteDataPayload, getPaginatedListPayload, } from '../../../core/shared/operators'; +import { FindListOptions } from '../../../core/data/find-list-options.model'; /** * This component renders the parent collections section of the item diff --git a/src/app/item-page/version-page/version-page/version-page.component.ts b/src/app/item-page/version-page/version-page/version-page.component.ts index 0a2021e06d..7f25034351 100644 --- a/src/app/item-page/version-page/version-page/version-page.component.ts +++ b/src/app/item-page/version-page/version-page/version-page.component.ts @@ -4,12 +4,13 @@ import { RemoteData } from '../../../core/data/remote-data'; import { ActivatedRoute, Router } from '@angular/router'; import { AuthService } from '../../../core/auth/auth.service'; import { map, switchMap } from 'rxjs/operators'; -import { getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, redirectOn4xx } from '../../../core/shared/operators'; +import { getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload } from '../../../core/shared/operators'; import { VersionDataService } from '../../../core/data/version-data.service'; import { Version } from '../../../core/shared/version.model'; import { Item } from '../../../core/shared/item.model'; import { getItemPageRoute } from '../../item-page-routing-paths'; import { getPageNotFoundRoute } from '../../../app-routing-paths'; +import { redirectOn4xx } from '../../../core/shared/authorized.operators'; @Component({ selector: 'ds-version-page', @@ -42,7 +43,7 @@ export class VersionPageComponent implements OnInit { switchMap((version) => version.item), redirectOn4xx(this.router, this.authService), getFirstCompletedRemoteData(), - ).subscribe((itemRD) => { + ).subscribe((itemRD: RemoteData) => { if (itemRD.hasNoContent) { this.router.navigateByUrl(getPageNotFoundRoute(), { skipLocationChange: true }); } else { diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts index 651178e7a1..012ed22970 100644 --- a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts @@ -6,10 +6,10 @@ import { map, mergeMap, take } from 'rxjs/operators'; import { EntityTypeService } from '../../../core/data/entity-type.service'; import { ItemType } from '../../../core/shared/item-relationships/item-type.model'; -import { FindListOptions } from '../../../core/data/request.models'; import { hasValue } from '../../../shared/empty.util'; import { RemoteData } from '../../../core/data/remote-data'; import { PaginatedList } from '../../../core/data/paginated-list.model'; +import { FindListOptions } from '../../../core/data/find-list-options.model'; /** * This component represents the 'Import metadata from external source' dropdown menu diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts index 0ff363b164..884970bdf3 100644 --- a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts @@ -6,11 +6,11 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { EntityTypeService } from '../../../core/data/entity-type.service'; import { ItemType } from '../../../core/shared/item-relationships/item-type.model'; -import { FindListOptions } from '../../../core/data/request.models'; import { hasValue } from '../../../shared/empty.util'; import { CreateItemParentSelectorComponent } from '../../../shared/dso-selector/modal-wrappers/create-item-parent-selector/create-item-parent-selector.component'; import { RemoteData } from '../../../core/data/remote-data'; import { PaginatedList } from '../../../core/data/paginated-list.model'; +import { FindListOptions } from '../../../core/data/find-list-options.model'; /** * This component represents the new submission dropdown diff --git a/src/app/register-page/registration.guard.ts b/src/app/register-page/registration.guard.ts index 36bbfa4252..a0f07d2fbe 100644 --- a/src/app/register-page/registration.guard.ts +++ b/src/app/register-page/registration.guard.ts @@ -4,8 +4,8 @@ import { Observable } from 'rxjs/internal/Observable'; import { EpersonRegistrationService } from '../core/data/eperson-registration.service'; import { AuthService } from '../core/auth/auth.service'; import { map } from 'rxjs/operators'; -import { getFirstCompletedRemoteData, redirectOn4xx } from '../core/shared/operators'; -import { Location } from '@angular/common'; +import { getFirstCompletedRemoteData } from '../core/shared/operators'; +import { redirectOn4xx } from '../core/shared/authorized.operators'; @Injectable({ providedIn: 'root' diff --git a/src/app/request-copy/deny-request-copy/deny-request-copy.component.ts b/src/app/request-copy/deny-request-copy/deny-request-copy.component.ts index 763319947a..06c7e2a2f9 100644 --- a/src/app/request-copy/deny-request-copy/deny-request-copy.component.ts +++ b/src/app/request-copy/deny-request-copy/deny-request-copy.component.ts @@ -4,8 +4,7 @@ import { map, switchMap } from 'rxjs/operators'; import { ItemRequest } from '../../core/shared/item-request.model'; import { Observable } from 'rxjs'; import { - getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, - redirectOn4xx + getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload } from '../../core/shared/operators'; import { RemoteData } from '../../core/data/remote-data'; import { AuthService } from '../../core/auth/auth.service'; @@ -19,6 +18,7 @@ import { isNotEmpty } from '../../shared/empty.util'; import { ItemRequestDataService } from '../../core/data/item-request-data.service'; import { RequestCopyEmail } from '../email-request-copy/request-copy-email.model'; import { NotificationsService } from '../../shared/notifications/notifications.service'; +import { redirectOn4xx } from '../../core/shared/authorized.operators'; @Component({ selector: 'ds-deny-request-copy', diff --git a/src/app/request-copy/grant-deny-request-copy/grant-deny-request-copy.component.ts b/src/app/request-copy/grant-deny-request-copy/grant-deny-request-copy.component.ts index f9eff05c98..b130c23abe 100644 --- a/src/app/request-copy/grant-deny-request-copy/grant-deny-request-copy.component.ts +++ b/src/app/request-copy/grant-deny-request-copy/grant-deny-request-copy.component.ts @@ -5,8 +5,7 @@ import { ItemRequest } from '../../core/shared/item-request.model'; import { Observable } from 'rxjs'; import { getFirstCompletedRemoteData, - getFirstSucceededRemoteDataPayload, - redirectOn4xx + getFirstSucceededRemoteDataPayload } from '../../core/shared/operators'; import { RemoteData } from '../../core/data/remote-data'; import { AuthService } from '../../core/auth/auth.service'; @@ -15,6 +14,7 @@ import { Item } from '../../core/shared/item.model'; import { ItemDataService } from '../../core/data/item-data.service'; import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; import { getItemPageRoute } from '../../item-page/item-page-routing-paths'; +import { redirectOn4xx } from '../../core/shared/authorized.operators'; @Component({ selector: 'ds-grant-deny-request-copy', diff --git a/src/app/request-copy/grant-request-copy/grant-request-copy.component.ts b/src/app/request-copy/grant-request-copy/grant-request-copy.component.ts index 3b8ec8f735..ee2e5f08cc 100644 --- a/src/app/request-copy/grant-request-copy/grant-request-copy.component.ts +++ b/src/app/request-copy/grant-request-copy/grant-request-copy.component.ts @@ -4,8 +4,7 @@ import { map, switchMap } from 'rxjs/operators'; import { ItemRequest } from '../../core/shared/item-request.model'; import { Observable } from 'rxjs'; import { - getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, - redirectOn4xx + getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload } from '../../core/shared/operators'; import { RemoteData } from '../../core/data/remote-data'; import { AuthService } from '../../core/auth/auth.service'; @@ -19,6 +18,7 @@ import { isNotEmpty } from '../../shared/empty.util'; import { ItemRequestDataService } from '../../core/data/item-request-data.service'; import { RequestCopyEmail } from '../email-request-copy/request-copy-email.model'; import { NotificationsService } from '../../shared/notifications/notifications.service'; +import { redirectOn4xx } from '../../core/shared/authorized.operators'; @Component({ selector: 'ds-grant-request-copy', diff --git a/src/app/shared/collection-dropdown/collection-dropdown.component.ts b/src/app/shared/collection-dropdown/collection-dropdown.component.ts index 192ae196a9..85cd182068 100644 --- a/src/app/shared/collection-dropdown/collection-dropdown.component.ts +++ b/src/app/shared/collection-dropdown/collection-dropdown.component.ts @@ -22,7 +22,7 @@ import { CollectionDataService } from '../../core/data/collection-data.service'; import { Collection } from '../../core/shared/collection.model'; import { followLink } from '../utils/follow-link-config.model'; import { - getFirstCompletedRemoteData, + getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, getFirstSucceededRemoteWithNotEmptyData } from '../../core/shared/operators'; import { FindListOptions } from '../../core/data/find-list-options.model'; diff --git a/src/app/shared/dso-selector/dso-selector/authorized-collection-selector/authorized-collection-selector.component.ts b/src/app/shared/dso-selector/dso-selector/authorized-collection-selector/authorized-collection-selector.component.ts index 44ac27515d..ab48d058ca 100644 --- a/src/app/shared/dso-selector/dso-selector/authorized-collection-selector/authorized-collection-selector.component.ts +++ b/src/app/shared/dso-selector/dso-selector/authorized-collection-selector/authorized-collection-selector.component.ts @@ -15,8 +15,8 @@ import { hasValue } from '../../../empty.util'; import { NotificationsService } from '../../../notifications/notifications.service'; import { TranslateService } from '@ngx-translate/core'; import { Collection } from '../../../../core/shared/collection.model'; -import { FindListOptions } from '../../../../core/data/request.models'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { FindListOptions } from '../../../../core/data/find-list-options.model'; @Component({ selector: 'ds-authorized-collection-selector', diff --git a/src/app/shared/entity-dropdown/entity-dropdown.component.ts b/src/app/shared/entity-dropdown/entity-dropdown.component.ts index 13d50a8b79..f4068b1abc 100644 --- a/src/app/shared/entity-dropdown/entity-dropdown.component.ts +++ b/src/app/shared/entity-dropdown/entity-dropdown.component.ts @@ -13,11 +13,11 @@ import { BehaviorSubject, Observable, Subscription } from 'rxjs'; import { hasValue } from '../empty.util'; import { reduce, startWith, switchMap } from 'rxjs/operators'; import { RemoteData } from '../../core/data/remote-data'; -import { FindListOptions } from '../../core/data/request.models'; import { PaginatedList } from '../../core/data/paginated-list.model'; import { EntityTypeService } from '../../core/data/entity-type.service'; import { ItemType } from '../../core/shared/item-relationships/item-type.model'; import { getFirstSucceededRemoteWithNotEmptyData } from '../../core/shared/operators'; +import { FindListOptions } from '../../core/data/find-list-options.model'; @Component({ selector: 'ds-entity-dropdown', diff --git a/src/app/shared/log-in/methods/oidc/log-in-oidc.component.ts b/src/app/shared/log-in/methods/oidc/log-in-oidc.component.ts index 8253a1aabf..38cedf91ec 100644 --- a/src/app/shared/log-in/methods/oidc/log-in-oidc.component.ts +++ b/src/app/shared/log-in/methods/oidc/log-in-oidc.component.ts @@ -7,7 +7,6 @@ import { renderAuthMethodFor } from '../log-in.methods-decorator'; import { AuthMethodType } from '../../../../core/auth/models/auth.method-type'; import { AuthMethod } from '../../../../core/auth/models/auth.method'; -import { CoreState } from '../../../../core/core.reducers'; import { isAuthenticated, isAuthenticationLoading } from '../../../../core/auth/selectors'; import { NativeWindowRef, NativeWindowService } from '../../../../core/services/window.service'; import { isNotNull, isEmpty } from '../../../empty.util'; @@ -15,6 +14,7 @@ import { AuthService } from '../../../../core/auth/auth.service'; import { HardRedirectService } from '../../../../core/services/hard-redirect.service'; import { take } from 'rxjs/operators'; import { URLCombiner } from '../../../../core/url-combiner/url-combiner'; +import { CoreState } from '../../../../core/core-state.model'; @Component({ selector: 'ds-log-in-oidc', diff --git a/src/app/shared/search/models/facet-config-response.model.ts b/src/app/shared/search/models/facet-config-response.model.ts index 15a318a98d..deb86def22 100644 --- a/src/app/shared/search/models/facet-config-response.model.ts +++ b/src/app/shared/search/models/facet-config-response.model.ts @@ -1,11 +1,10 @@ -import { CacheableObject } from '../../../core/cache/object-cache.reducer'; import { typedObject } from '../../../core/cache/builders/build-decorators'; import { FACET_CONFIG_RESPONSE } from './types/facet-config-response.resouce-type'; import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; import { SearchFilterConfig } from './search-filter-config.model'; import { deserialize } from 'cerialize'; import { HALLink } from '../../../core/shared/hal-link.model'; -import { CacheableObject } from '../../core/cache/cacheable-object.model'; +import { CacheableObject } from '../../../core/cache/cacheable-object.model'; /** * The response from the discover/facets endpoint diff --git a/src/app/shared/search/models/search-filter-config.model.ts b/src/app/shared/search/models/search-filter-config.model.ts index 129259985a..59512ee29d 100644 --- a/src/app/shared/search/models/search-filter-config.model.ts +++ b/src/app/shared/search/models/search-filter-config.model.ts @@ -2,9 +2,9 @@ import { FilterType } from './filter-type.model'; import { autoserialize, autoserializeAs, deserialize } from 'cerialize'; import { HALLink } from '../../../core/shared/hal-link.model'; import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../../core/cache/object-cache.reducer'; import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; import { SEARCH_FILTER_CONFIG } from './types/search-filter-config.resource-type'; +import { CacheableObject } from '../../../core/cache/cacheable-object.model'; /** * The configuration for a search filter diff --git a/src/app/shared/search/search.component.spec.ts b/src/app/shared/search/search.component.spec.ts index 11b0293e6c..d4561b7c58 100644 --- a/src/app/shared/search/search.component.spec.ts +++ b/src/app/shared/search/search.component.spec.ts @@ -147,18 +147,28 @@ const routeServiceStub = { } }; - -const searchConfigurationServiceStub = jasmine.createSpyObj('SearchConfigurationService', { - getConfigurationSortOptions: jasmine.createSpy('getConfigurationSortOptions'), - getConfigurationSearchConfig: jasmine.createSpy('getConfigurationSearchConfig'), - getCurrentConfiguration: jasmine.createSpy('getCurrentConfiguration'), - getCurrentScope: jasmine.createSpy('getCurrentScope'), - getCurrentSort: jasmine.createSpy('getCurrentSort'), - updateFixedFilter: jasmine.createSpy('updateFixedFilter'), - setPaginationId: jasmine.createSpy('setPaginationId') -}, ['paginatedSearchOptions']); +let searchConfigurationServiceStub; export function configureSearchComponentTestingModule(compType, additionalDeclarations: any[] = []) { + searchConfigurationServiceStub = jasmine.createSpyObj('SearchConfigurationService', { + getConfigurationSortOptions: sortOptionsList, + getConfigurationSearchConfig: observableOf(searchConfig), + getCurrentConfiguration: observableOf('default'), + getCurrentScope: observableOf('test-id'), + getCurrentSort: observableOf(sortOptionsList[0]), + updateFixedFilter: jasmine.createSpy('updateFixedFilter'), + setPaginationId: jasmine.createSpy('setPaginationId') + }); + + searchConfigurationServiceStub.setPaginationId.and.callFake((pageId) => { + paginatedSearchOptions$.next(Object.assign(paginatedSearchOptions$.value, { + pagination: Object.assign(new PaginationComponentOptions(), { + id: pageId + }) + })); + }); + searchConfigurationServiceStub.paginatedSearchOptions = new BehaviorSubject(new PaginatedSearchOptions({pagination: {id: 'default'} as any})); + TestBed.configureTestingModule({ imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), NoopAnimationsModule, NgbCollapseModule], declarations: [compType, ...additionalDeclarations], @@ -196,7 +206,14 @@ export function configureSearchComponentTestingModule(compType, additionalDeclar ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(compType, { - set: { changeDetection: ChangeDetectionStrategy.Default } + set: { + changeDetection: ChangeDetectionStrategy.Default, + providers: [{ + provide: SearchConfigurationService, + useValue: searchConfigurationServiceStub + }] + }, + }).compileComponents(); } @@ -211,18 +228,6 @@ describe('SearchComponent', () => { comp.inPlaceSearch = false; comp.paginationId = paginationId; - searchConfigurationServiceStub.getConfigurationSearchConfig.and.returnValue(observableOf(searchConfig)); - searchConfigurationServiceStub.getConfigurationSortOptions.and.returnValue(sortOptionsList); - searchConfigurationServiceStub.getCurrentConfiguration.and.returnValue(observableOf('default')); - searchConfigurationServiceStub.getCurrentScope.and.returnValue(observableOf('test-id')); - searchConfigurationServiceStub.getCurrentSort.and.returnValue(observableOf(sortOptionsList[0])); - searchConfigurationServiceStub.setPaginationId.and.callFake((pageId) => { - paginatedSearchOptions$.next(Object.assign(paginatedSearchOptions$.value, { - pagination: Object.assign(new PaginationComponentOptions(), { - id: pageId - }) - })); - }); spyOn((comp as any), 'getSearchOptions').and.returnValue(paginatedSearchOptions$.asObservable()); searchServiceObject = TestBed.inject(SearchService); diff --git a/src/app/shared/search/search.component.ts b/src/app/shared/search/search.component.ts index 0fd59346f8..e660b4bd3c 100644 --- a/src/app/shared/search/search.component.ts +++ b/src/app/shared/search/search.component.ts @@ -254,7 +254,7 @@ export class SearchComponent implements OnInit { .getCurrentConfiguration(this.configuration).pipe(distinctUntilChanged()); const searchSortOptions$: Observable = configuration$.pipe( switchMap((configuration: string) => this.searchConfigService - .getConfigurationSearchConfig(configuration, this.service)), + .getConfigurationSearchConfig(configuration)), map((searchConfig: SearchConfig) => this.searchConfigService.getConfigurationSortOptions(searchConfig)), distinctUntilChanged() );