Add validation of missing obligatory blocks

[MAILPOET-2451]
This commit is contained in:
Rostislav Wolny
2019-12-02 17:20:50 +01:00
committed by Jack Kitterhing
parent a848731fec
commit d9295569a2
3 changed files with 22 additions and 3 deletions

View File

@@ -1,7 +1,15 @@
export default (formData) => {
export default (formData, formBlocks) => {
const errors = [];
if (!formData.settings.segments || formData.settings.segments.length === 0) {
errors.push('missing-lists');
}
const emailInput = formBlocks.filter((block) => (block.attributes.id === 'email'));
const submit = formBlocks.filter((block) => (block.attributes.id === 'submit'));
if (!emailInput) {
errors.push('missing-email-input');
}
if (!submit) {
errors.push('missing-submit');
}
return errors;
};

View File

@@ -10,6 +10,6 @@ export default (state, action) => {
};
return {
...newState,
formErrors: validateForm(newState.formData),
formErrors: validateForm(newState.formData, newState.formBlocks),
};
};

View File

@@ -2,7 +2,7 @@ import MailPoet from 'mailpoet';
export default (state) => {
// remove all form saving related notices
const notices = state.notices.filter((notice) => !['save-form', 'missing-lists'].includes(notice.id));
const notices = state.notices.filter((notice) => !['save-form', 'missing-lists', 'missing-block'].includes(notice.id));
const hasMissingLists = state.formErrors.includes('missing-lists');
const sidebarOpenedPanels = [...state.sidebar.openedPanels];
if (hasMissingLists) {
@@ -17,6 +17,17 @@ export default (state) => {
}
}
const hasMissingEmail = state.formErrors.includes('missing-email-input');
const hasMissingSubmit = state.formErrors.includes('missing-submit');
if (hasMissingEmail || hasMissingSubmit) {
notices.push({
id: 'missing-block',
content: MailPoet.I18n.t('missingObligatoryBlock'),
isDismissible: true,
status: 'error',
});
}
return {
...state,
isFormSaving: !hasMissingLists,