mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-11 12:03:03 +00:00
Merge branch 'main' into Removing-unnecessary-circular-dependencies
This commit is contained in:
@@ -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,
|
||||
|
Reference in New Issue
Block a user