diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx index b5f9ddc25..ac644f1a1 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx +++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx @@ -9,12 +9,18 @@ const Nav = require('naturalcrit/nav/nav.jsx'); const StringArrayEditor = require('../stringArrayEditor/stringArrayEditor.jsx'); const Themes = require('themes/themes.json'); -const validations = require('./validations.js') +const validations = require('./validations.js'); const SYSTEMS = ['5e', '4e', '3.5e', 'Pathfinder']; const homebreweryThumbnail = require('../../thumbnail.png'); +const callIfExists = (val, fn, ...args)=>{ + if(val[fn]) { + val[fn](...args); + } +}; + const MetadataEditor = createClass({ displayName : 'MetadataEditor', getDefaultProps : function() { @@ -53,28 +59,25 @@ const MetadataEditor = createClass({ }, handleFieldChange : function(name, e){ - e.persist(); - // load validation rules, and check input value against them const inputRules = validations[name] ?? []; const validationErr = inputRules.map((rule)=>rule(e.target.value)).filter(Boolean); // if no validation rules, save to props if(validationErr.length === 0){ - e.target.setCustomValidity(''); + callIfExists(e.target, 'setCustomValidity', ''); this.props.onChange({ ...this.props.metadata, [name] : e.target.value }); } else { // if validation issues, display built-in browser error popup with each error. - console.log(validationErr); const errMessage = validationErr.map((err)=>{ return `- ${err}`; }).join('\n'); - e.target.setCustomValidity(errMessage); - e.target.reportValidity(); - }; + callIfExists(e.target, 'setCustomValidity', errMessage); + callIfExists(e.target, 'reportValidity'); + } }, handleSystem : function(system, e){