mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-12 12:33:07 +00:00
fix #869 Submission embargo bug
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { ChangeDetectorRef, Component, Inject } from '@angular/core';
|
||||
|
||||
import { BehaviorSubject, combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
|
||||
import { distinctUntilChanged, filter, find, map, mergeMap, reduce, switchMap, tap } from 'rxjs/operators';
|
||||
import { distinctUntilChanged, filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';
|
||||
|
||||
import { SectionModelComponent } from '../models/section.model';
|
||||
import { hasValue, isNotEmpty, isNotUndefined, isUndefined } from '../../../shared/empty.util';
|
||||
@@ -23,7 +23,6 @@ import { SectionsService } from '../sections.service';
|
||||
import { SubmissionService } from '../../submission.service';
|
||||
import { Collection } from '../../../core/shared/collection.model';
|
||||
import { AccessConditionOption } from '../../../core/config/models/config-access-condition-option.model';
|
||||
import { PaginatedList } from '../../../core/data/paginated-list.model';
|
||||
import { followLink } from '../../../shared/utils/follow-link-config.model';
|
||||
import { getFirstSucceededRemoteData } from '../../../core/shared/operators';
|
||||
|
||||
@@ -100,11 +99,6 @@ export class SubmissionSectionUploadComponent extends SectionModelComponent {
|
||||
*/
|
||||
public availableAccessConditionOptions: AccessConditionOption[]; // List of accessConditions that an user can select
|
||||
|
||||
/**
|
||||
* List of Groups available for every access condition
|
||||
*/
|
||||
public availableGroups: Map<string, Group[]>; // Groups for any policy
|
||||
|
||||
/**
|
||||
* Is the upload required
|
||||
* @type {boolean}
|
||||
@@ -184,53 +178,12 @@ export class SubmissionSectionUploadComponent extends SectionModelComponent {
|
||||
}
|
||||
}),*/
|
||||
mergeMap(() => config$),
|
||||
mergeMap((config: SubmissionUploadsModel) => {
|
||||
this.required$.next(config.required);
|
||||
this.availableAccessConditionOptions = isNotEmpty(config.accessConditionOptions) ? config.accessConditionOptions : [];
|
||||
|
||||
this.collectionPolicyType = this.availableAccessConditionOptions.length > 0
|
||||
? POLICY_DEFAULT_WITH_LIST
|
||||
: POLICY_DEFAULT_NO_LIST;
|
||||
|
||||
this.availableGroups = new Map();
|
||||
const mapGroups$: Observable<AccessConditionGroupsMapEntry>[] = [];
|
||||
// Retrieve Groups for accessCondition Policies
|
||||
this.availableAccessConditionOptions.forEach((accessCondition: AccessConditionOption) => {
|
||||
if (accessCondition.hasEndDate === true || accessCondition.hasStartDate === true) {
|
||||
if (accessCondition.groupUUID) {
|
||||
mapGroups$.push(
|
||||
this.groupService.findById(accessCondition.groupUUID).pipe(
|
||||
find((rd: RemoteData<Group>) => !rd.isResponsePending && rd.hasSucceeded),
|
||||
map((rd: RemoteData<Group>) => ({
|
||||
accessCondition: accessCondition.name,
|
||||
groups: [rd.payload]
|
||||
} as AccessConditionGroupsMapEntry)))
|
||||
);
|
||||
} else if (accessCondition.selectGroupUUID) {
|
||||
mapGroups$.push(
|
||||
this.groupService.findById(accessCondition.selectGroupUUID).pipe(
|
||||
find((rd: RemoteData<Group>) => !rd.isResponsePending && rd.hasSucceeded),
|
||||
mergeMap((group: RemoteData<Group>) => group.payload.subgroups),
|
||||
find((rd: RemoteData<PaginatedList<Group>>) => !rd.isResponsePending && rd.hasSucceeded),
|
||||
map((rd: RemoteData<PaginatedList<Group>>) => ({
|
||||
accessCondition: accessCondition.name,
|
||||
groups: rd.payload.page
|
||||
} as AccessConditionGroupsMapEntry))
|
||||
));
|
||||
}
|
||||
}
|
||||
});
|
||||
return mapGroups$;
|
||||
}),
|
||||
mergeMap((entry) => entry),
|
||||
reduce((acc: any[], entry: AccessConditionGroupsMapEntry) => {
|
||||
acc.push(entry);
|
||||
return acc;
|
||||
}, []),
|
||||
).subscribe((entries: AccessConditionGroupsMapEntry[]) => {
|
||||
entries.forEach((entry: AccessConditionGroupsMapEntry) => {
|
||||
this.availableGroups.set(entry.accessCondition, entry.groups);
|
||||
});
|
||||
).subscribe((config: SubmissionUploadsModel) => {
|
||||
this.required$.next(config.required);
|
||||
this.availableAccessConditionOptions = isNotEmpty(config.accessConditionOptions) ? config.accessConditionOptions : [];
|
||||
this.collectionPolicyType = this.availableAccessConditionOptions.length > 0
|
||||
? POLICY_DEFAULT_WITH_LIST
|
||||
: POLICY_DEFAULT_NO_LIST;
|
||||
this.changeDetectorRef.detectChanges();
|
||||
}),
|
||||
|
||||
|
Reference in New Issue
Block a user