From 78da48b08dc2200b0d4e0b42a5b65917bd135123 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Sat, 5 Nov 2022 11:42:21 -0500 Subject: [PATCH] fix issue with async setState using `Event.persist()` --- .../editor/metadataEditor/metadataEditor.jsx | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx index 76454e88b..e095d1c6c 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx +++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx @@ -56,6 +56,7 @@ const MetadataEditor = createClass({ }, handleFieldChange : function(name, e){ + e.persist(); const inputRules = validations[name] ?? []; const validationErr = inputRules.map((rule)=>rule(e.target.value)).filter(Boolean); this.setState((prevState)=>({ @@ -63,20 +64,22 @@ const MetadataEditor = createClass({ ...(prevState.errs ?? {}), [name] : validationErr.length > 0 ? validationErr : undefined } - })); - if(Object.values(this.state.errs ?? {}).filter(Boolean).length === 0){ - e.target.setCustomValidity(''); - this.props.onChange({ - ...this.props.metadata, - [name] : e.target.value - }); - } else { - const errMessage = this.state.errs[name].map((err)=>{ - return `- ${err}`; - }).join('\n'); - e.target.setCustomValidity(errMessage); - e.target.reportValidity(); - }; + }), ()=>{ + if(Object.values(this.state.errs ?? {}).filter(Boolean).length === 0){ + e.target.setCustomValidity(''); + this.props.onChange({ + ...this.props.metadata, + [name] : e.target.value + }); + } else { + const errMessage = this.state.errs[name].map((err)=>{ + return `- ${err}`; + }).join('\n'); + e.target.setCustomValidity(errMessage); + e.target.reportValidity(); + }; + }); + },