forked from hazza/dspace-angular
fix issue where combining entities and authority control in the same field wouldn't work
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
import { combineLatest, Observable } from 'rxjs';
|
||||
import { distinctUntilChanged, filter, map, take } from 'rxjs/operators';
|
||||
import { distinctUntilChanged, filter, map, take, tap } from 'rxjs/operators';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { ScrollToConfigOptions, ScrollToService } from '@nicky-lenaers/ngx-scroll-to';
|
||||
@@ -25,6 +25,8 @@ import { FormAddError, FormClearErrorsAction, FormRemoveErrorAction } from '../.
|
||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||
import { SubmissionService } from '../submission.service';
|
||||
import { WorkspaceitemSectionDataType } from '../../core/submission/models/workspaceitem-sections.model';
|
||||
import { SectionsType } from './sections-type';
|
||||
import { normalizeSectionData } from '../../core/submission/submission-response-parsing.service';
|
||||
|
||||
/**
|
||||
* A service that provides methods used in submission process.
|
||||
@@ -129,12 +131,23 @@ export class SectionsService {
|
||||
* The submission id
|
||||
* @param sectionId
|
||||
* The section id
|
||||
* @param sectionType
|
||||
* The type of section to retrieve
|
||||
* @return Observable<WorkspaceitemSectionDataType>
|
||||
* observable of [WorkspaceitemSectionDataType]
|
||||
*/
|
||||
public getSectionData(submissionId: string, sectionId: string): Observable<WorkspaceitemSectionDataType> {
|
||||
public getSectionData(submissionId: string, sectionId: string, sectionType: SectionsType): Observable<WorkspaceitemSectionDataType> {
|
||||
return this.store.select(submissionSectionDataFromIdSelector(submissionId, sectionId)).pipe(
|
||||
distinctUntilChanged());
|
||||
map((sectionData: WorkspaceitemSectionDataType) => {
|
||||
if (sectionType === SectionsType.SubmissionForm) {
|
||||
return normalizeSectionData(sectionData)
|
||||
}
|
||||
else {
|
||||
return sectionData;
|
||||
}
|
||||
}),
|
||||
distinctUntilChanged(),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,14 +172,26 @@ export class SectionsService {
|
||||
* The submission id
|
||||
* @param sectionId
|
||||
* The section id
|
||||
* @param sectionType
|
||||
* The type of section to retrieve
|
||||
* @return Observable<SubmissionSectionObject>
|
||||
* observable of [SubmissionSectionObject]
|
||||
*/
|
||||
public getSectionState(submissionId: string, sectionId: string): Observable<SubmissionSectionObject> {
|
||||
public getSectionState(submissionId: string, sectionId: string, sectionType: SectionsType): Observable<SubmissionSectionObject> {
|
||||
return this.store.select(submissionSectionFromIdSelector(submissionId, sectionId)).pipe(
|
||||
filter((sectionObj: SubmissionSectionObject) => hasValue(sectionObj)),
|
||||
map((sectionObj: SubmissionSectionObject) => sectionObj),
|
||||
distinctUntilChanged(),
|
||||
map((sectionState: SubmissionSectionObject) => {
|
||||
if (hasValue(sectionState.data) && sectionType === SectionsType.SubmissionForm) {
|
||||
return Object.assign({}, sectionState, {
|
||||
data: normalizeSectionData(sectionState.data)
|
||||
})
|
||||
}
|
||||
else {
|
||||
return sectionState;
|
||||
}
|
||||
}),
|
||||
distinctUntilChanged()
|
||||
);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user