Merge pull request #1607 from 4Science/CST-5418-improve-cannot-deposit-notification

[CST-5418] Improve notification when cannot deposit
This commit is contained in:
Tim Donohue
2022-04-26 14:28:08 -05:00
committed by GitHub
5 changed files with 37 additions and 13 deletions

View File

@@ -127,7 +127,7 @@ export class SubmissionObjectEffects {
this.submissionService.getSubmissionObjectLinkName(),
action.payload.submissionId,
'sections').pipe(
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual)),
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual, action.payload.isManual)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
})));
@@ -153,7 +153,8 @@ export class SubmissionObjectEffects {
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);
action.payload.submissionObject, action.payload.submissionId, currentState.forms,
action.payload.showNotifications, action.payload.showErrors);
}),
mergeMap((actions) => observableFrom(actions))));
@@ -166,7 +167,7 @@ export class SubmissionObjectEffects {
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);
action.payload.submissionObject, action.payload.submissionId, currentState.forms, false, false);
}),
mergeMap((actions) => observableFrom(actions))));
@@ -217,7 +218,13 @@ export class SubmissionObjectEffects {
if (this.canDeposit(response)) {
return new DepositSubmissionAction(action.payload.submissionId);
} else {
return new SaveSubmissionFormSuccessAction(action.payload.submissionId, response);
this.notificationsService.warning(
null,
this.translate.instant('submission.sections.general.cannot_deposit'),
null,
true
);
return new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, false, true);
}
}),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
@@ -363,18 +370,23 @@ export class SubmissionObjectEffects {
* A boolean that indicate if show notification or not
* @return SubmissionObjectAction[]
* List of SubmissionObjectAction to dispatch
* @param showNotifications
* A boolean representing if to show notifications on save
* @param showErrors
* A boolean representing if to show errors on save
*/
protected parseSaveResponse(
currentState: SubmissionObjectEntry,
response: SubmissionObject[],
submissionId: string,
forms: FormState,
notify: boolean = true): SubmissionObjectAction[] {
showNotifications: boolean = true,
showErrors: boolean = true): SubmissionObjectAction[] {
const mappedActions = [];
if (isNotEmpty(response)) {
if (notify) {
if (showNotifications) {
this.notificationsService.success(null, this.translate.get('submission.sections.general.save_success_notice'));
}
@@ -386,7 +398,7 @@ export class SubmissionObjectEffects {
if (errors && !isEmpty(errors)) {
// to avoid dispatching an action for every error, create an array of errors per section
errorsList = parseSectionErrors(errors);
if (notify) {
if (showNotifications) {
this.notificationsService.warning(null, this.translate.get('submission.sections.general.sections_not_valid'));
}
}
@@ -405,12 +417,12 @@ export class SubmissionObjectEffects {
continue;
}
if (notify && !currentState.sections[sectionId].enabled) {
if (showNotifications && !currentState.sections[sectionId].enabled) {
this.submissionService.notifyNewSection(submissionId, sectionId, currentState.sections[sectionId].sectionType);
}
const sectionForm = getForm(forms, currentState, sectionId);
const filteredErrors = filterErrors(sectionForm, sectionErrors, currentState.sections[sectionId].sectionType, notify);
const filteredErrors = filterErrors(sectionForm, sectionErrors, currentState.sections[sectionId].sectionType, showErrors);
mappedActions.push(new UpdateSectionDataAction(submissionId, sectionId, sectionData, filteredErrors, sectionErrors));
}
});