]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/twitch-bot/GuessingSettingsForm.js
some guessing game fixes
[alttp.git] / resources / js / components / twitch-bot / GuessingSettingsForm.js
index 128d6f5d98b2b4eebca487df7af87db22e428e75..a465e4ea1e33e5e3c4cb528b167fc61ca5010ec8 100644 (file)
@@ -115,6 +115,27 @@ const GuessingSettingsForm = ({
                                        </Form.Control.Feedback>
                                : null}
                        </Form.Group>
+                       <Form.Group as={Col} controlId="gg.leaderboard_type" md={6}>
+                               <Form.Label>{t('twitchBot.guessingGame.leaderboardType')}</Form.Label>
+                               <Form.Select
+                                       isInvalid={!!(touched.leaderboard_type && errors.leaderboard_type)}
+                                       name="leaderboard_type"
+                                       onBlur={handleBlur}
+                                       onChange={handleChange}
+                                       value={values.leaderboard_type || 'all'}
+                               >
+                                       {['all', 'year', '365', 'month', '30'].map(type =>
+                                               <option key={type} value={type}>
+                                                       {t(`twitchBot.guessingGame.leaderboardTypes.${type}`)}
+                                               </option>
+                                       )}
+                               </Form.Select>
+                               {touched.leaderboard_type && errors.leaderboard_type ?
+                                       <Form.Control.Feedback type="invalid">
+                                               {t(errors.leaderboard_type)}
+                                       </Form.Control.Feedback>
+                               : null}
+                       </Form.Group>
                </Row>
                <Form.Group controlId="gg.start_message">
                        <Form.Label>{t('twitchBot.guessingGame.startMessage')}</Form.Label>
@@ -168,6 +189,26 @@ const GuessingSettingsForm = ({
                                </Form.Text>
                        }
                </Form.Group>
+               <Form.Group controlId="gg.close_winners_message">
+                       <Form.Label>{t('twitchBot.guessingGame.closeWinnersMessage')}</Form.Label>
+                       <Form.Control
+                               isInvalid={!!(touched.close_winners_message && errors.close_winners_message)}
+                               name="close_winners_message"
+                               onBlur={handleBlur}
+                               onChange={handleChange}
+                               type="text"
+                               value={values.close_winners_message || ''}
+                       />
+                       {touched.close_winners_message && errors.close_winners_message ?
+                               <Form.Control.Feedback type="invalid">
+                                       {t(errors.close_winners_message)}
+                               </Form.Control.Feedback>
+                       :
+                               <Form.Text muted>
+                                       {t('twitchBot.guessingGame.closeWinnersMessageHint')}
+                               </Form.Text>
+                       }
+               </Form.Group>
                <Form.Group controlId="gg.no_winners_message">
                        <Form.Label>{t('twitchBot.guessingGame.noWinnersMessage')}</Form.Label>
                        <Form.Control
@@ -265,7 +306,9 @@ GuessingSettingsForm.propTypes = {
        errors: PropTypes.shape({
                active_message: PropTypes.string,
                cancel_message: PropTypes.string,
+               close_winners_message: PropTypes.string,
                invalid_solution_message: PropTypes.string,
+               leaderboard_type: PropTypes.string,
                name: PropTypes.string,
                no_winners_message: PropTypes.string,
                not_active_message: PropTypes.string,
@@ -286,7 +329,9 @@ GuessingSettingsForm.propTypes = {
        touched: PropTypes.shape({
                active_message: PropTypes.bool,
                cancel_message: PropTypes.bool,
+               close_winners_message: PropTypes.bool,
                invalid_solution_message: PropTypes.bool,
+               leaderboard_type: PropTypes.bool,
                name: PropTypes.bool,
                no_winners_message: PropTypes.bool,
                not_active_message: PropTypes.bool,
@@ -302,7 +347,9 @@ GuessingSettingsForm.propTypes = {
        values: PropTypes.shape({
                active_message: PropTypes.string,
                cancel_message: PropTypes.string,
+               close_winners_message: PropTypes.string,
                invalid_solution_message: PropTypes.string,
+               leaderboard_type: PropTypes.string,
                name: PropTypes.string,
                no_winners_message: PropTypes.string,
                not_active_message: PropTypes.string,
@@ -339,8 +386,11 @@ export default withFormik({
                return {
                        active_message: getStringValue(settings, 'active_message', 'ActiveMessage'),
                        cancel_message: getStringValue(settings, 'cancel_message', 'CancelMessage'),
+                       close_winners_message:
+                               getStringValue(settings, 'close_winners_message', 'CloseWinnersMessage'),
                        invalid_solution_message:
                                getStringValue(settings, 'invalid_solution_message', 'InvalidSolutionMessage'),
+                       leaderboard_type: (settings && settings.leaderboard_type) || 'all',
                        name: name || '',
                        no_winners_message: getStringValue(settings, 'no_winners_message', 'NoWinnersMessage'),
                        not_active_message: getStringValue(settings, 'not_active_message', 'NotActiveMessage'),
@@ -357,6 +407,8 @@ export default withFormik({
        validationSchema: yup.object().shape({
                active_message: yup.string(),
                cancel_message: yup.string(),
+               close_winners_message: yup.string(),
+               leaderboard_type: yup.string(),
                invalid_solution_message: yup.string(),
                name: yup.string().required(),
                no_winners_message: yup.string(),