]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/twitch-bot/ChatSettingsForm.js
configurable min age and message source
[alttp.git] / resources / js / components / twitch-bot / ChatSettingsForm.js
index 4d36a31601ee3d19e55be0ce8c0e8c8b68a42daa..9f6a1836afcc67a6e355276170ac05764331cdc6 100644 (file)
@@ -127,6 +127,39 @@ const ChatSettingsForm = ({
                                        </Form.Control.Feedback>
                                : null}
                        </Form.Group>
+                       <Form.Group as={Col} md={6} controlId="chatSettings.min_age">
+                               <Form.Label>{t('twitchBot.chatMinAge')}</Form.Label>
+                               <Form.Control
+                                       isInvalid={!!(touched.min_age && errors.min_age)}
+                                       name="min_age"
+                                       min="1"
+                                       onBlur={handleBlur}
+                                       onChange={handleChange}
+                                       type="number"
+                                       value={values.min_age || 1}
+                               />
+                       </Form.Group>
+                       <Form.Group as={Col} md={6} controlId="chatSettings.source">
+                               <Form.Label>{t('twitchBot.chatSource')}</Form.Label>
+                               <Form.Select
+                                       isInvalid={!!(touched.source && errors.source)}
+                                       name="source"
+                                       onBlur={handleBlur}
+                                       onChange={handleChange}
+                                       value={values.source || 'any'}
+                               >
+                                       {['any', 'cat', 'chan', 'catchan'].map(value =>
+                                               <option key={value} value={value}>
+                                                       {t(`twitchBot.chatSources.${value}`)}
+                                               </option>
+                                       )}
+                               </Form.Select>
+                               {touched.respond && errors.respond ?
+                                       <Form.Control.Feedback type="invalid">
+                                               {t(errors.respond)}
+                                       </Form.Control.Feedback>
+                               : null}
+                       </Form.Group>
                </Row>
                <div className="button-bar mt-3">
                        <Button disabled={!dirty || isSubmitting} type="submit" variant="primary">
@@ -140,7 +173,9 @@ ChatSettingsForm.propTypes = {
        dirty: PropTypes.bool,
        errors: PropTypes.shape({
                language: PropTypes.string,
+               min_age: PropTypes.string,
                respond: PropTypes.string,
+               source: PropTypes.string,
                wait_msgs_max: PropTypes.string,
                wait_msgs_min: PropTypes.string,
                wait_time_min: PropTypes.string,
@@ -152,7 +187,9 @@ ChatSettingsForm.propTypes = {
        isSubmitting: PropTypes.bool,
        touched: PropTypes.shape({
                language: PropTypes.bool,
+               min_age: PropTypes.bool,
                respond: PropTypes.bool,
+               source: PropTypes.bool,
                wait_msgs_max: PropTypes.bool,
                wait_msgs_min: PropTypes.bool,
                wait_time_min: PropTypes.bool,
@@ -160,7 +197,9 @@ ChatSettingsForm.propTypes = {
        }),
        values: PropTypes.shape({
                language: PropTypes.string,
+               min_age: PropTypes.number,
                respond: PropTypes.string,
+               source: PropTypes.string,
                wait_msgs_max: PropTypes.number,
                wait_msgs_min: PropTypes.number,
                wait_time_min: PropTypes.string,
@@ -181,7 +220,9 @@ export default withFormik({
        },
        mapPropsToValues: ({ channel }) => ({
                language: channel.chat_settings.language || channel.languages[0] || 'de',
+               min_age: channel.chat_settings.min_age || 1,
                respond: channel.chat_settings.respond || 'yes',
+               source: channel.chat_settings.source || 'any',
                wait_msgs_min: channel.chat_settings.wait_msgs_min || 1,
                wait_msgs_max: channel.chat_settings.wait_msgs_max || 10,
                wait_time_min: channel.chat_settings.wait_time_min
@@ -191,6 +232,7 @@ export default withFormik({
        }),
        validationSchema: yup.object().shape({
                language: yup.string(),
+               min_age: yup.number().min(1),
                respond: yup.string(),
                wait_msgs_min: yup.number().min(1),
                wait_msgs_max: yup.number().min(1),