X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;ds=inline;f=resources%2Fjs%2Fcomponents%2Ftwitch-bot%2FControls.js;h=bdc89380fe75c07a4a1ad22e8dd2587661d1ac1b;hb=e49b130505f5712075dca2ff990e5a63fc90ce3c;hp=0aea916cf04d698a879bc6bed886a88ebb426e08;hpb=e10222af705e3475fcea6e0b17d1c9984a62db26;p=alttp.git diff --git a/resources/js/components/twitch-bot/Controls.js b/resources/js/components/twitch-bot/Controls.js index 0aea916..bdc8938 100644 --- a/resources/js/components/twitch-bot/Controls.js +++ b/resources/js/components/twitch-bot/Controls.js @@ -1,20 +1,34 @@ import axios from 'axios'; import React from 'react'; -import { Alert, Col, Form, Row } from 'react-bootstrap'; +import { Alert, Button, Col, Form, Row } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; import toastr from 'toastr'; +import ChatSettingsForm from './ChatSettingsForm'; import ChannelSelect from '../common/ChannelSelect'; import ToggleSwitch from '../common/ToggleSwitch'; const Controls = () => { const [channel, setChannel] = React.useState(null); + const [chatText, setChatText] = React.useState(''); const { t } = useTranslation(); - const join = React.useCallback(async () => { + const chat = React.useCallback(async (text, bot_nick) => { try { - const rsp = await axios.post(`/api/channels/${channel.id}/join`); + await axios.post(`/api/channels/${channel.id}/chat`, { + text, + bot_nick, + }); + toastr.success(t('twitchBot.chatSuccess')); + } catch (e) { + toastr.error(t('twitchBot.chatError')); + } + }, [channel, chatText, t]); + + const join = React.useCallback(async (bot_nick) => { + try { + const rsp = await axios.post(`/api/channels/${channel.id}/join`, { bot_nick }); setChannel(rsp.data); toastr.success(t('twitchBot.joinSuccess')); } catch (e) { @@ -22,9 +36,9 @@ const Controls = () => { } }, [channel, t]); - const part = React.useCallback(async () => { + const part = React.useCallback(async (bot_nick) => { try { - const rsp = await axios.post(`/api/channels/${channel.id}/part`); + const rsp = await axios.post(`/api/channels/${channel.id}/part`, { bot_nick }); setChannel(rsp.data); toastr.success(t('twitchBot.partSuccess')); } catch (e) { @@ -32,6 +46,16 @@ const Controls = () => { } }, [channel, t]); + const saveChatSettings = React.useCallback(async (values) => { + try { + const rsp = await axios.post(`/api/channels/${channel.id}/chat-settings`, values); + setChannel(rsp.data); + toastr.success(t('twitchBot.saveSuccess')); + } catch (e) { + toastr.error(t('twitchBot.saveError')); + } + }, [channel, t]); + return <> @@ -44,27 +68,80 @@ const Controls = () => { value={channel ? channel.id : ''} /> - {channel ? - - {t('twitchBot.join')} + {channel ? <> + + {t('twitchBot.joinApp')}
{ if (value) { - join(); + join('localhorsttv'); } else { - part(); + part('localhorsttv'); } }} value={channel.join} />
- : null} + + {t('twitchBot.joinChat')} +
+ { + if (value) { + join('horstiebot'); + } else { + part('horstiebot'); + } + }} + value={channel.chat} + /> +
+
+ : null}
{channel ? -
+ + + {t('twitchBot.chat')} + { + setChatText(value); + }} + value={chatText} + /> +
+ + +
+
+ +

{t('twitchBot.chatSettings')}

+ + +
: {t('twitchBot.selectChannel')}