Merge branch 'main' into Removing-unnecessary-circular-dependencies

This commit is contained in:
lotte
2022-04-20 14:47:55 +02:00
280 changed files with 7366 additions and 8121 deletions

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Actions, Effect, ofType } from '@ngrx/effects';
import { Actions, createEffect, ofType } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { TranslateService } from '@ngx-translate/core';
import { isEqual, union } from 'lodash';
@@ -60,7 +60,7 @@ export class SubmissionObjectEffects {
/**
* Dispatch a [InitSectionAction] for every submission sections and dispatch a [CompleteInitSubmissionFormAction]
*/
@Effect() loadForm$ = this.actions$.pipe(
loadForm$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.INIT_SUBMISSION_FORM),
map((action: InitSubmissionFormAction) => {
const definition = action.payload.submissionDefinition;
@@ -99,12 +99,12 @@ export class SubmissionObjectEffects {
result.mappedActions.concat(
new CompleteInitSubmissionFormAction(result.action.payload.submissionId)
));
}));
})));
/**
* Dispatch a [InitSubmissionFormAction]
*/
@Effect() resetForm$ = this.actions$.pipe(
resetForm$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.RESET_SUBMISSION_FORM),
map((action: ResetSubmissionFormAction) =>
new InitSubmissionFormAction(
@@ -115,12 +115,12 @@ export class SubmissionObjectEffects {
action.payload.sections,
action.payload.item,
null
)));
))));
/**
* Dispatch a [SaveSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
*/
@Effect() saveSubmission$ = this.actions$.pipe(
saveSubmission$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM),
switchMap((action: SaveSubmissionFormAction) => {
return this.operationsService.jsonPatchByResourceType(
@@ -129,12 +129,12 @@ export class SubmissionObjectEffects {
'sections').pipe(
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
}));
})));
/**
* Dispatch a [SaveForLaterSubmissionFormSuccessAction] or a [SaveSubmissionFormErrorAction] on error
*/
@Effect() saveForLaterSubmission$ = this.actions$.pipe(
saveForLaterSubmission$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM),
switchMap((action: SaveForLaterSubmissionFormAction) => {
return this.operationsService.jsonPatchByResourceType(
@@ -143,37 +143,37 @@ export class SubmissionObjectEffects {
'sections').pipe(
map((response: SubmissionObject[]) => new SaveForLaterSubmissionFormSuccessAction(action.payload.submissionId, response)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
}));
})));
/**
* Call parseSaveResponse and dispatch actions
*/
@Effect() saveSubmissionSuccess$ = this.actions$.pipe(
saveSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_SUCCESS),
withLatestFrom(this.store$),
map(([action, currentState]: [SaveSubmissionFormSuccessAction, any]) => {
return this.parseSaveResponse((currentState.submission as SubmissionState).objects[action.payload.submissionId],
action.payload.submissionObject, action.payload.submissionId, currentState.forms, action.payload.notify);
}),
mergeMap((actions) => observableFrom(actions)));
mergeMap((actions) => observableFrom(actions))));
/**
* Call parseSaveResponse and dispatch actions.
* Notification system is forced to be disabled.
*/
@Effect() saveSubmissionSectionSuccess$ = this.actions$.pipe(
saveSubmissionSectionSuccess$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_SUCCESS),
withLatestFrom(this.store$),
map(([action, currentState]: [SaveSubmissionSectionFormSuccessAction, any]) => {
return this.parseSaveResponse((currentState.submission as SubmissionState).objects[action.payload.submissionId],
action.payload.submissionObject, action.payload.submissionId, currentState.forms, false);
}),
mergeMap((actions) => observableFrom(actions)));
mergeMap((actions) => observableFrom(actions))));
/**
* Dispatch a [SaveSubmissionSectionFormSuccessAction] or a [SaveSubmissionSectionFormErrorAction] on error
*/
@Effect() saveSection$ = this.actions$.pipe(
saveSection$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM),
switchMap((action: SaveSubmissionSectionFormAction) => {
return this.operationsService.jsonPatchByResourceID(
@@ -183,20 +183,20 @@ export class SubmissionObjectEffects {
action.payload.sectionId).pipe(
map((response: SubmissionObject[]) => new SaveSubmissionSectionFormSuccessAction(action.payload.submissionId, response)),
catchError(() => observableOf(new SaveSubmissionSectionFormErrorAction(action.payload.submissionId))));
}));
})));
/**
* Show a notification on error
*/
@Effect({ dispatch: false }) saveError$ = 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'))));
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.save_error_notice')))), { dispatch: false });
/**
* Call parseSaveResponse and dispatch actions or dispatch [SaveSubmissionFormErrorAction] on error
*/
@Effect() saveAndDeposit$ = this.actions$.pipe(
saveAndDeposit$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.SAVE_AND_DEPOSIT_SUBMISSION),
withLatestFrom(this.submissionService.hasUnsavedModification()),
switchMap(([action, hasUnsavedModification]: [SaveAndDepositSubmissionAction, boolean]) => {
@@ -221,58 +221,58 @@ export class SubmissionObjectEffects {
}
}),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
}));
})));
/**
* Dispatch a [DepositSubmissionSuccessAction] or a [DepositSubmissionErrorAction] on error
*/
@Effect() depositSubmission$ = this.actions$.pipe(
depositSubmission$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.DEPOSIT_SUBMISSION),
withLatestFrom(this.store$),
switchMap(([action, state]: [DepositSubmissionAction, any]) => {
return this.submissionService.depositSubmission(state.submission.objects[action.payload.submissionId].selfUrl).pipe(
map(() => new DepositSubmissionSuccessAction(action.payload.submissionId)),
catchError((error) => observableOf(new DepositSubmissionErrorAction(action.payload.submissionId))));
}));
})));
/**
* Show a notification on success and redirect to MyDSpace page
*/
@Effect({ dispatch: false }) saveForLaterSubmissionSuccess$ = 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()));
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
/**
* Show a notification on success and redirect to MyDSpace page
*/
@Effect({ dispatch: false }) depositSubmissionSuccess$ = 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()));
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
/**
* Show a notification on error
*/
@Effect({ dispatch: false }) depositSubmissionError$ = 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'))));
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.deposit_error_notice')))), { dispatch: false });
/**
* Dispatch a [DiscardSubmissionSuccessAction] or a [DiscardSubmissionErrorAction] on error
*/
@Effect() discardSubmission$ = this.actions$.pipe(
discardSubmission$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION),
switchMap((action: DepositSubmissionAction) => {
return this.submissionService.discardSubmission(action.payload.submissionId).pipe(
map(() => new DiscardSubmissionSuccessAction(action.payload.submissionId)),
catchError(() => observableOf(new DiscardSubmissionErrorAction(action.payload.submissionId))));
}));
})));
/**
* Adds all metadata an item to the SubmissionForm sections of the submission
*/
@Effect() addAllMetadataToSectionData = 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)
@@ -300,23 +300,22 @@ export class SubmissionObjectEffects {
return observableOf(new UpdateSectionDataSuccessAction());
}
}),
);
));
/**
* Show a notification on success and redirect to MyDSpace page
*/
@Effect({ dispatch: false })
discardSubmissionSuccess$ = this.actions$.pipe(
discardSubmissionSuccess$ = createEffect(() => this.actions$.pipe(
ofType(SubmissionObjectActionTypes.DISCARD_SUBMISSION_SUCCESS),
tap(() => this.notificationsService.success(null, this.translate.get('submission.sections.general.discard_success_notice'))),
tap(() => this.submissionService.redirectToMyDSpace()));
tap(() => this.submissionService.redirectToMyDSpace())), { dispatch: false });
/**
* Show a notification on error
*/
@Effect({ dispatch: false }) discardSubmissionError$ = 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'))));
tap(() => this.notificationsService.error(null, this.translate.get('submission.sections.general.discard_error_notice')))), { dispatch: false });
constructor(private actions$: Actions,
private notificationsService: NotificationsService,