]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/twitch-bot/ChatSettingsForm.js
chat bot config
[alttp.git] / resources / js / components / twitch-bot / ChatSettingsForm.js
index d9c03d7f3b04025128cb56c48b189b79f05cfe42..4d36a31601ee3d19e55be0ce8c0e8c8b68a42daa 100644 (file)
@@ -85,6 +85,48 @@ const ChatSettingsForm = ({
                                        </Form.Text>
                                }
                        </Form.Group>
+                       <Form.Group as={Col} md={6} controlId="chatSettings.language">
+                               <Form.Label>{t('twitchBot.language')}</Form.Label>
+                               <Form.Select
+                                       isInvalid={!!(touched.language && errors.language)}
+                                       name="language"
+                                       onBlur={handleBlur}
+                                       onChange={handleChange}
+                                       value={values.language || 'de'}
+                               >
+                                       {['de', 'en', 'es', 'fr'].map(lang =>
+                                               <option key={lang} value={lang}>
+                                                       {t(`general.languages.${lang}`)}
+                                               </option>
+                                       )}
+                               </Form.Select>
+                               {touched.language && errors.language ?
+                                       <Form.Control.Feedback type="invalid">
+                                               {t(errors.language)}
+                                       </Form.Control.Feedback>
+                               : null}
+                       </Form.Group>
+                       <Form.Group as={Col} md={6} controlId="chatSettings.respond">
+                               <Form.Label>{t('twitchBot.respond')}</Form.Label>
+                               <Form.Select
+                                       isInvalid={!!(touched.respond && errors.respond)}
+                                       name="respond"
+                                       onBlur={handleBlur}
+                                       onChange={handleChange}
+                                       value={values.respond || 'yes'}
+                               >
+                                       {['yes', '50', 'no'].map(value =>
+                                               <option key={value} value={value}>
+                                                       {t(`twitchBot.respondOptions.${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">
@@ -97,6 +139,8 @@ const ChatSettingsForm = ({
 ChatSettingsForm.propTypes = {
        dirty: PropTypes.bool,
        errors: PropTypes.shape({
+               language: PropTypes.string,
+               respond: PropTypes.string,
                wait_msgs_max: PropTypes.string,
                wait_msgs_min: PropTypes.string,
                wait_time_min: PropTypes.string,
@@ -107,12 +151,16 @@ ChatSettingsForm.propTypes = {
        handleSubmit: PropTypes.func,
        isSubmitting: PropTypes.bool,
        touched: PropTypes.shape({
+               language: PropTypes.bool,
+               respond: PropTypes.bool,
                wait_msgs_max: PropTypes.bool,
                wait_msgs_min: PropTypes.bool,
                wait_time_min: PropTypes.bool,
                wait_time_max: PropTypes.bool,
        }),
        values: PropTypes.shape({
+               language: PropTypes.string,
+               respond: PropTypes.string,
                wait_msgs_max: PropTypes.number,
                wait_msgs_min: PropTypes.number,
                wait_time_min: PropTypes.string,
@@ -132,6 +180,8 @@ export default withFormik({
                });
        },
        mapPropsToValues: ({ channel }) => ({
+               language: channel.chat_settings.language || channel.languages[0] || 'de',
+               respond: channel.chat_settings.respond || 'yes',
                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
@@ -140,6 +190,8 @@ export default withFormik({
                        ? formatTime({ time: channel.chat_settings.wait_time_max }) : '15:00',
        }),
        validationSchema: yup.object().shape({
+               language: yup.string(),
+               respond: yup.string(),
                wait_msgs_min: yup.number().min(1),
                wait_msgs_max: yup.number().min(1),
                wait_time_min: yup.string().time(),