import React from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; import { toast } from 'react-toastify'; import { useModule, useStatus } from '../../lib/react-utils'; import Stulbe from '../../lib/stulbe-lib'; import apiReducer, { modules } from '../../store/api/reducer'; import SaveButton from '../components/utils/SaveButton'; import { Button, ButtonGroup, Field, InputBox, Label, PageContainer, PageHeader, PageTitle, } from '../theme'; export default function BackendIntegrationPage(): React.ReactElement { const [stulbeConfig, setStulbeConfig, loadStatus] = useModule( modules.stulbeConfig, ); const { t } = useTranslation(); const dispatch = useDispatch(); const status = useStatus(loadStatus.save); const active = stulbeConfig?.enabled ?? false; const busy = loadStatus.load?.type !== 'success' || loadStatus.save?.type === 'pending'; const test = async () => { try { const client = new Stulbe(stulbeConfig.endpoint); await client.auth(stulbeConfig.username, stulbeConfig.auth_key); toast.success(t('pages.stulbe.test-success')); } catch (e) { toast.error(e.message); } }; return ( {t('pages.stulbe.title')}

{'Optional back-end integration (using '} stulbe or any Kilovolt compatible endpoint) for syncing keys and obtaining webhook events

{ dispatch(setStulbeConfig(stulbeConfig)); ev.preventDefault(); }} > dispatch( apiReducer.actions.stulbeConfigChanged({ ...stulbeConfig, enabled: e.target.value.length > 0, endpoint: e.target.value, }), ) } /> dispatch( apiReducer.actions.stulbeConfigChanged({ ...stulbeConfig, username: e.target.value, }), ) } /> dispatch( apiReducer.actions.stulbeConfigChanged({ ...stulbeConfig, auth_key: e.target.value, }), ) } />
); }