import React, { useState, useEffect, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import PropTypes from 'prop-types'; import AppContainer from '../../../services/AppContainer'; import AdminAppContainer from '../../../services/AdminAppContainer'; import { withUnstatedContainers } from '../../UnstatedUtils'; import { toastSuccess, toastError } from '../../../util/apiNotification'; import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow'; import SlackGrowiBridging from './SlackGrowiBridging'; const CustomBotWithoutProxySettings = (props) => { const { appContainer, adminAppContainer } = props; const { t } = useTranslation(); const [slackSigningSecret, setSlackSigningSecret] = useState(''); const [slackBotToken, setSlackBotToken] = useState(''); const [slackSigningSecretEnv, setSlackSigningSecretEnv] = useState(''); const [slackBotTokenEnv, setSlackBotTokenEnv] = useState(''); const [slackWSNameInWithoutProxy, setSlackWSNameInWithoutProxy] = useState(null); // get site name from this GROWI // eslint-disable-next-line no-unused-vars const [siteName, setSiteName] = useState(''); // eslint-disable-next-line no-unused-vars const [isSetupSlackBot, setIsSetupSlackBot] = useState(null); const [isConnectedToSlack, setIsConnectedToSlack] = useState(null); const currentBotType = 'custom-bot-without-proxy'; useEffect(() => { const fetchData = async() => { try { const res = await appContainer.apiv3.get('/slack-integration/custom-bot-without-proxy/slack-workspace-name'); setSlackWSNameInWithoutProxy(res.data.slackWorkSpaceName); } catch (err) { toastError(err); } }; setSlackWSNameInWithoutProxy(null); if (isConnectedToSlack) { fetchData(); } }, [appContainer, isConnectedToSlack]); const fetchData = useCallback(async() => { try { await adminAppContainer.retrieveAppSettingsData(); const res = await appContainer.apiv3.get('/slack-integration/'); const { slackSigningSecret, slackBotToken, slackSigningSecretEnvVars, slackBotTokenEnvVars, isSetupSlackBot, isConnectedToSlack, } = res.data.slackBotSettingParams.customBotWithoutProxySettings; setSlackSigningSecret(slackSigningSecret); setSlackBotToken(slackBotToken); setSlackSigningSecretEnv(slackSigningSecretEnvVars); setSlackBotTokenEnv(slackBotTokenEnvVars); setSiteName(adminAppContainer.state.title); setIsSetupSlackBot(isSetupSlackBot); setIsConnectedToSlack(isConnectedToSlack); } catch (err) { toastError(err); } }, [appContainer, adminAppContainer]); useEffect(() => { fetchData(); }, [fetchData]); async function updateHandler() { try { await appContainer.apiv3.put('/slack-integration/custom-bot-without-proxy', { slackSigningSecret, slackBotToken, currentBotType, }); fetchData(); toastSuccess(t('toaster.update_successed', { target: t('admin:slack_integration.custom_bot_without_proxy_settings') })); } catch (err) { toastError(err); } } return ( <>
| Database | Environment variables | |
|---|---|---|
| Signing Secret | setSlackSigningSecret(e.target.value)} /> |
{/* eslint-disable-next-line react/no-danger */} |
| Bot User OAuth Token | setSlackBotToken(e.target.value)} /> |
{/* eslint-disable-next-line react/no-danger */} |