mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-11 12:03:03 +00:00
[CST-5270] Fixing ISSN removal and unit testing
This commit is contained in:
@@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
|
||||
import { Actions, createEffect, ofType } from '@ngrx/effects';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { isEqual, union } from 'lodash';
|
||||
import { isEqual, isUndefined, union } from 'lodash';
|
||||
|
||||
import { from as observableFrom, Observable, of as observableOf } from 'rxjs';
|
||||
import { catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';
|
||||
@@ -43,7 +43,7 @@ import {
|
||||
UpdateSectionDataAction,
|
||||
UpdateSectionDataSuccessAction
|
||||
} from './submission-objects.actions';
|
||||
import { SubmissionObjectEntry} from './submission-objects.reducer';
|
||||
import { SubmissionObjectEntry } from './submission-objects.reducer';
|
||||
import { Item } from '../../core/shared/item.model';
|
||||
import { RemoteData } from '../../core/data/remote-data';
|
||||
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
|
||||
@@ -60,7 +60,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Dispatch a [InitSectionAction] for every submission sections and dispatch a [CompleteInitSubmissionFormAction]
|
||||
*/
|
||||
loadForm$ = createEffect(() => this.actions$.pipe(
|
||||
loadForm$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.INIT_SUBMISSION_FORM),
|
||||
map((action: InitSubmissionFormAction) => {
|
||||
const definition = action.payload.submissionDefinition;
|
||||
@@ -104,7 +104,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Dispatch a [InitSubmissionFormAction]
|
||||
*/
|
||||
resetForm$ = createEffect(() => this.actions$.pipe(
|
||||
resetForm$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.RESET_SUBMISSION_FORM),
|
||||
map((action: ResetSubmissionFormAction) =>
|
||||
new InitSubmissionFormAction(
|
||||
@@ -120,35 +120,35 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Dispatch a [SaveSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
|
||||
*/
|
||||
saveSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
saveSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM),
|
||||
switchMap((action: SaveSubmissionFormAction) => {
|
||||
return this.operationsService.jsonPatchByResourceType(
|
||||
this.submissionService.getSubmissionObjectLinkName(),
|
||||
action.payload.submissionId,
|
||||
'sections').pipe(
|
||||
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual, action.payload.isManual)),
|
||||
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
||||
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual, action.payload.isManual)),
|
||||
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
||||
})));
|
||||
|
||||
/**
|
||||
* Dispatch a [SaveForLaterSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
|
||||
*/
|
||||
saveForLaterSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
saveForLaterSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM),
|
||||
switchMap((action: SaveForLaterSubmissionFormAction) => {
|
||||
return this.operationsService.jsonPatchByResourceType(
|
||||
this.submissionService.getSubmissionObjectLinkName(),
|
||||
action.payload.submissionId,
|
||||
'sections').pipe(
|
||||
map((response: SubmissionObject[]) => new SaveForLaterSubmissionFormSuccessAction(action.payload.submissionId, response)),
|
||||
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
||||
map((response: SubmissionObject[]) => new SaveForLaterSubmissionFormSuccessAction(action.payload.submissionId, response)),
|
||||
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
||||
})));
|
||||
|
||||
/**
|
||||
* Call parseSaveResponse and dispatch actions
|
||||
*/
|
||||
saveSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
saveSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_SUCCESS),
|
||||
withLatestFrom(this.store$),
|
||||
map(([action, currentState]: [SaveSubmissionFormSuccessAction, any]) => {
|
||||
@@ -162,7 +162,7 @@ export class SubmissionObjectEffects {
|
||||
* Call parseSaveResponse and dispatch actions.
|
||||
* Notification system is forced to be disabled.
|
||||
*/
|
||||
saveSubmissionSectionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
saveSubmissionSectionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_SUCCESS),
|
||||
withLatestFrom(this.store$),
|
||||
map(([action, currentState]: [SaveSubmissionSectionFormSuccessAction, any]) => {
|
||||
@@ -174,7 +174,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Dispatch a [SaveSubmissionSectionFormSuccessAction] or a [SaveSubmissionSectionFormErrorAction] on error
|
||||
*/
|
||||
saveSection$ = createEffect(() => this.actions$.pipe(
|
||||
saveSection$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM),
|
||||
switchMap((action: SaveSubmissionSectionFormAction) => {
|
||||
return this.operationsService.jsonPatchByResourceID(
|
||||
@@ -182,14 +182,14 @@ export class SubmissionObjectEffects {
|
||||
action.payload.submissionId,
|
||||
'sections',
|
||||
action.payload.sectionId).pipe(
|
||||
map((response: SubmissionObject[]) => new SaveSubmissionSectionFormSuccessAction(action.payload.submissionId, response)),
|
||||
catchError(() => observableOf(new SaveSubmissionSectionFormErrorAction(action.payload.submissionId))));
|
||||
map((response: SubmissionObject[]) => new SaveSubmissionSectionFormSuccessAction(action.payload.submissionId, response)),
|
||||
catchError(() => observableOf(new SaveSubmissionSectionFormErrorAction(action.payload.submissionId))));
|
||||
})));
|
||||
|
||||
/**
|
||||
* Show a notification on error
|
||||
*/
|
||||
saveError$ = createEffect(() => this.actions$.pipe(
|
||||
saveError$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_ERROR, SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_ERROR),
|
||||
withLatestFrom(this.store$),
|
||||
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.save_error_notice')))), { dispatch: false });
|
||||
@@ -197,7 +197,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Call parseSaveResponse and dispatch actions or dispatch [SaveSubmissionFormErrorAction] on error
|
||||
*/
|
||||
saveAndDeposit$ = createEffect(() => this.actions$.pipe(
|
||||
saveAndDeposit$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_AND_DEPOSIT_SUBMISSION),
|
||||
withLatestFrom(this.submissionService.hasUnsavedModification()),
|
||||
switchMap(([action, hasUnsavedModification]: [SaveAndDepositSubmissionAction, boolean]) => {
|
||||
@@ -233,7 +233,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Dispatch a [DepositSubmissionSuccessAction] or a [DepositSubmissionErrorAction] on error
|
||||
*/
|
||||
depositSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
depositSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION),
|
||||
withLatestFrom(this.store$),
|
||||
switchMap(([action, state]: [DepositSubmissionAction, any]) => {
|
||||
@@ -245,7 +245,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Show a notification on success and redirect to MyDSpace page
|
||||
*/
|
||||
saveForLaterSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
saveForLaterSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS),
|
||||
tap(() => this.notificationsService.success(null, this.translate.get('submission.sections.general.save_success_notice'))),
|
||||
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
|
||||
@@ -253,7 +253,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Show a notification on success and redirect to MyDSpace page
|
||||
*/
|
||||
depositSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
depositSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION_SUCCESS),
|
||||
tap(() => this.notificationsService.success(null, this.translate.get('submission.sections.general.deposit_success_notice'))),
|
||||
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
|
||||
@@ -261,14 +261,14 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Show a notification on error
|
||||
*/
|
||||
depositSubmissionError$ = createEffect(() => this.actions$.pipe(
|
||||
depositSubmissionError$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION_ERROR),
|
||||
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.deposit_error_notice')))), { dispatch: false });
|
||||
|
||||
/**
|
||||
* Dispatch a [DiscardSubmissionSuccessAction] or a [DiscardSubmissionErrorAction] on error
|
||||
*/
|
||||
discardSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
discardSubmission$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION),
|
||||
switchMap((action: DepositSubmissionAction) => {
|
||||
return this.submissionService.discardSubmission(action.payload.submissionId).pipe(
|
||||
@@ -279,7 +279,7 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Adds all metadata an item to the SubmissionForm sections of the submission
|
||||
*/
|
||||
addAllMetadataToSectionData = createEffect(() => this.actions$.pipe(
|
||||
addAllMetadataToSectionData = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.UPDATE_SECTION_DATA),
|
||||
switchMap((action: UpdateSectionDataAction) => {
|
||||
return this.sectionService.getSectionState(action.payload.submissionId, action.payload.sectionId, SectionsType.Upload)
|
||||
@@ -320,18 +320,18 @@ export class SubmissionObjectEffects {
|
||||
/**
|
||||
* Show a notification on error
|
||||
*/
|
||||
discardSubmissionError$ = createEffect(() => this.actions$.pipe(
|
||||
discardSubmissionError$ = createEffect(() => this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION_ERROR),
|
||||
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.discard_error_notice')))), { dispatch: false });
|
||||
|
||||
constructor(private actions$: Actions,
|
||||
private notificationsService: NotificationsService,
|
||||
private operationsService: SubmissionJsonPatchOperationsService,
|
||||
private sectionService: SectionsService,
|
||||
private store$: Store<any>,
|
||||
private submissionService: SubmissionService,
|
||||
private submissionObjectService: SubmissionObjectDataService,
|
||||
private translate: TranslateService) {
|
||||
private notificationsService: NotificationsService,
|
||||
private operationsService: SubmissionJsonPatchOperationsService,
|
||||
private sectionService: SectionsService,
|
||||
private store$: Store<any>,
|
||||
private submissionService: SubmissionService,
|
||||
private submissionObjectService: SubmissionObjectDataService,
|
||||
private translate: TranslateService) {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -426,6 +426,11 @@ export class SubmissionObjectEffects {
|
||||
mappedActions.push(new UpdateSectionDataAction(submissionId, sectionId, sectionData, filteredErrors, sectionErrors));
|
||||
}
|
||||
});
|
||||
let currentStateId = currentState.selfUrl.split('/')[currentState.selfUrl.split('/').length - 1];
|
||||
let currentResponseItem = response.find(item => item.id.toString() === currentStateId);
|
||||
if (!isUndefined(currentState.sections.sherpaPolicies?.data) && isUndefined(currentResponseItem.sections.sherpaPolicies)) {
|
||||
mappedActions.push(new UpdateSectionDataAction(submissionId, 'sherpaPolicies', null, [], []));
|
||||
}
|
||||
}
|
||||
return mappedActions;
|
||||
}
|
||||
|
Reference in New Issue
Block a user