From 212e7c2d9d49656a9babda756499e6e94343d5ce Mon Sep 17 00:00:00 2001 From: Sergei Maertens <sergei@maykinmedia.nl> Date: Fri, 22 Nov 2024 12:55:32 +0100 Subject: [PATCH] :art: [#4693] Remove support for sync onChangeCheck functions This was a leftover in case window.confirm is/was used - this has all been replaced with the custom confirmation hook and modal which must always be async. Discussed via Slack. --- .../forms/objects_api/ObjectTypeSelect.js | 22 +++---------- .../forms/objects_api/ObjectsAPIGroup.js | 32 +++++-------------- src/openforms/js/utils/functions.js | 5 --- 3 files changed, 13 insertions(+), 46 deletions(-) delete mode 100644 src/openforms/js/utils/functions.js diff --git a/src/openforms/js/components/admin/forms/objects_api/ObjectTypeSelect.js b/src/openforms/js/components/admin/forms/objects_api/ObjectTypeSelect.js index 54218d165f..157b3ba7d2 100644 --- a/src/openforms/js/components/admin/forms/objects_api/ObjectTypeSelect.js +++ b/src/openforms/js/components/admin/forms/objects_api/ObjectTypeSelect.js @@ -8,7 +8,6 @@ import Field from 'components/admin/forms/Field'; import FormRow from 'components/admin/forms/FormRow'; import ReactSelect from 'components/admin/forms/ReactSelect'; import {get} from 'utils/fetch'; -import {isAsync} from 'utils/functions'; import {useSynchronizeSelect} from './hooks'; @@ -67,20 +66,6 @@ const ObjectTypeSelect = ({ setFieldValue(versionFieldName, undefined); // clears the value }, [loading, value]); - let handleOnChange; - if (isAsync(onChangeCheck)) { - // onChange handler should be async for the new confirmation modal - handleOnChange = async selectedOption => { - const okToProceed = onChangeCheck === undefined || (await onChangeCheck()); - if (okToProceed) setValue(selectedOption.value); - }; - } else { - handleOnChange = selectedOption => { - const okToProceed = onChangeCheck === undefined || onChangeCheck(); - if (okToProceed) setValue(selectedOption.value); - }; - } - return ( <FormRow> <Field name={name} required label={label} helpText={helpText} noManageChildProps> @@ -90,7 +75,10 @@ const ObjectTypeSelect = ({ isLoading={loading} isDisabled={!objectsApiGroup} required - onChange={handleOnChange} + onChange={async selectedOption => { + const okToProceed = onChangeCheck === undefined || (await onChangeCheck()); + if (okToProceed) setValue(selectedOption.value); + }} /> </Field> </FormRow> @@ -104,7 +92,7 @@ ObjectTypeSelect.propTypes = { name: PropTypes.string, /** * Optional callback to confirm the change. Return `true` to continue with the change, - * return `false` to abort it. + * return `false` to abort it. The callback function must be async. */ onChangeCheck: PropTypes.func, /** diff --git a/src/openforms/js/components/admin/forms/objects_api/ObjectsAPIGroup.js b/src/openforms/js/components/admin/forms/objects_api/ObjectsAPIGroup.js index 6377e2c309..ca00a8be71 100644 --- a/src/openforms/js/components/admin/forms/objects_api/ObjectsAPIGroup.js +++ b/src/openforms/js/components/admin/forms/objects_api/ObjectsAPIGroup.js @@ -6,7 +6,6 @@ import {useUpdateEffect} from 'react-use'; import Field from 'components/admin/forms/Field'; import FormRow from 'components/admin/forms/FormRow'; import ReactSelect from 'components/admin/forms/ReactSelect'; -import {isAsync} from 'utils/functions'; const ObjectsAPIGroup = ({ apiGroupChoices, @@ -36,28 +35,6 @@ const ObjectsAPIGroup = ({ value: option.value === null ? '' : option.value, })); - let handleOnChange; - if (isAsync(onChangeCheck)) { - // onChange handler should be async for the new confirmation modal - handleOnChange = async selectedOption => { - const okToProceed = onChangeCheck === undefined || (await onChangeCheck()); - if (okToProceed) { - // normalize empty string back to null - const newValue = selectedOption ? selectedOption.value : null; - setValue(newValue); - } - }; - } else { - handleOnChange = selectedOption => { - const okToProceed = onChangeCheck === undefined || onChangeCheck(); - if (okToProceed) { - // normalize empty string back to null - const newValue = selectedOption ? selectedOption.value : null; - setValue(newValue); - } - }; - } - return ( <FormRow> <Field @@ -82,7 +59,14 @@ const ObjectsAPIGroup = ({ options={normalizedOptions} value={normalizedOptions.find(option => option.value === normalizedValue)} required={required} - onChange={handleOnChange} + onChange={async selectedOption => { + const okToProceed = onChangeCheck === undefined || (await onChangeCheck()); + if (okToProceed) { + // normalize empty string back to null + const newValue = selectedOption ? selectedOption.value : null; + setValue(newValue); + } + }} isClearable={isClearable} /> </Field> diff --git a/src/openforms/js/utils/functions.js b/src/openforms/js/utils/functions.js deleted file mode 100644 index e39ba26846..0000000000 --- a/src/openforms/js/utils/functions.js +++ /dev/null @@ -1,5 +0,0 @@ -function isAsync(fn) { - return fn && fn.constructor.name === 'AsyncFunction'; -} - -export {isAsync};