Skip to content

Commit

Permalink
🐛 Fixes save item without title bug (#377)
Browse files Browse the repository at this point in the history
Closes #377. This bg was caused by adding items without a title, meaning an ID could not be calculated. The solution was to add a validtion check to ensure that a title is specified befire saving
  • Loading branch information
Lissy93 committed Dec 29, 2021
1 parent 3cbf794 commit bf3ccc1
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
3 changes: 3 additions & 0 deletions src/assets/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,9 @@
"save-stage-btn": "Save",
"cancel-stage-btn": "Cancel"
},
"edit-item": {
"missing-title-err": "An item title is required"
},
"edit-section": {
"edit-section-title": "Edit Section",
"add-section-title": "Add New Section",
Expand Down
33 changes: 20 additions & 13 deletions src/components/InteractiveEditor/EditItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -198,19 +198,26 @@ export default {
// Convert form data back into section.item data structure
const structured = {};
this.formData.forEach((row) => { structured[row.name] = row.value; });
// Some attributes need a little extra formatting
const newItem = this.formatBeforeSave(structured);
if (this.isNew) { // Insert new item into data store
newItem.id = `temp_${newItem.title}`;
const payload = { newItem, targetSection: this.parentSectionTitle };
this.$store.commit(StoreKeys.INSERT_ITEM, payload);
} else { // Update existing item from form data, in the store
this.$store.commit(StoreKeys.UPDATE_ITEM, { newItem, itemId: this.itemId });
if (!structured.title) { // Missing title, show error and don't proceed
this.$toasted.show(
this.$t('interactive-editor.edit-item.missing-title-err'),
{ className: 'toast-error' },
);
} else {
// Some attributes need a little extra formatting
const newItem = this.formatBeforeSave(structured);
if (this.isNew) { // Insert new item into data store
newItem.id = `temp_${newItem.title}`;
const payload = { newItem, targetSection: this.parentSectionTitle };
this.$store.commit(StoreKeys.INSERT_ITEM, payload);
} else { // Update existing item from form data, in the store
this.$store.commit(StoreKeys.UPDATE_ITEM, { newItem, itemId: this.itemId });
}
// If we're not already in edit mode, enable it now
this.$store.commit(StoreKeys.SET_EDIT_MODE, true);
// Close edit menu
this.$emit('closeEditMenu');
}
// If we're not already in edit mode, enable it now
this.$store.commit(StoreKeys.SET_EDIT_MODE, true);
// Close edit menu
this.$emit('closeEditMenu');
},
/* Some fields require a bit of extra processing before they're saved */
formatBeforeSave(item) {
Expand All @@ -225,7 +232,7 @@ export default {
if (str === undefined) return undefined;
return str === 'true';
};
if (newItem.tags) newItem.tags = strToTags(newItem.tags);
if (newItem.tags) newItem.tags = newItem.tags ? strToTags(newItem.tags) : [];
if (newItem.statusCheck) newItem.statusCheck = strToBool(newItem.statusCheck);
if (newItem.statusCheckAllowInsecure) {
newItem.statusCheckAllowInsecure = strToBool(newItem.statusCheckAllowInsecure);
Expand Down

0 comments on commit bf3ccc1

Please sign in to comment.