import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import loggerFactory from '~/utils/logger'; import AppContainer from '~/client/services/AppContainer'; import { withUnstatedContainers } from '../../UnstatedUtils'; import { toastSuccess, toastError } from '~/client/util/apiNotification'; import CustomBotWithProxyConnectionStatus from './CustomBotWithProxyConnectionStatus'; import WithProxyAccordions from './WithProxyAccordions'; import DeleteSlackBotSettingsModal from './DeleteSlackBotSettingsModal'; const logger = loggerFactory('growi:SlackBotSettings'); const OfficialBotSettings = (props) => { const { appContainer, slackAppIntegrations, onClickAddSlackWorkspaceBtn, connectionStatuses, onUpdateTokens, onSubmitForm, } = props; const [siteName, setSiteName] = useState(''); const [integrationIdToDelete, setIntegrationIdToDelete] = useState(null); const { t } = useTranslation(); const addSlackAppIntegrationHandler = async() => { if (onClickAddSlackWorkspaceBtn != null) { onClickAddSlackWorkspaceBtn(); } }; const deleteSlackAppIntegrationHandler = async() => { await appContainer.apiv3.delete('/slack-integration-settings/slack-app-integration', { integrationIdToDelete }); try { if (props.onDeleteSlackAppIntegration != null) { props.onDeleteSlackAppIntegration(); } toastSuccess(t('toaster.delete_slack_integration_procedure')); } catch (err) { toastError(err); logger.error(err); } }; useEffect(() => { const siteName = appContainer.config.crowi.title; setSiteName(siteName); }, [appContainer]); return ( <>