diff --git a/assets/js/src/settings/pages/advanced/captcha.tsx b/assets/js/src/settings/pages/advanced/captcha.tsx new file mode 100644 index 0000000000..d902e3b51e --- /dev/null +++ b/assets/js/src/settings/pages/advanced/captcha.tsx @@ -0,0 +1,107 @@ +import React from 'react'; + +import { t, onChange } from 'common/functions'; +import { useSetting, useSelector, useAction } from 'settings/store/hooks'; +import { Label, Inputs } from 'settings/components'; + +export default function Captcha() { + const [type, setType] = useSetting('captcha', 'type'); + const [token, setToken] = useSetting('captcha', 'recaptcha_site_token'); + const [secret, setSecret] = useSetting('captcha', 'recaptcha_secret_token'); + const hasBuiltInCaptcha = useSelector('isBuiltInCaptchaSupported')(); + const setErrorFlag = useAction('setErrorFlag'); + const missingToken = (type === 'recaptcha' && token.trim() === ''); + const missingSecret = (type === 'recaptcha' && secret.trim() === ''); + React.useEffect(() => { + setErrorFlag(missingToken || missingSecret); + }, [missingSecret, missingToken, setErrorFlag]); + + return ( + <> +