import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import loggerFactory from '@alias/logger'; import { createSubscribedElement } from '../../UnstatedUtils'; import { toastSuccess, toastError } from '../../../util/apiNotification'; import AppContainer from '../../../services/AppContainer'; import AdminNotificationContainer from '../../../services/AdminNotificationContainer'; import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow'; const logger = loggerFactory('growi:slackAppConfiguration'); class SlackAppConfiguration extends React.Component { constructor(props) { super(props); this.onClickSubmit = this.onClickSubmit.bind(this); } async onClickSubmit() { const { t, adminNotificationContainer } = this.props; try { await adminNotificationContainer.updateSlackAppConfiguration(); toastSuccess(t('notification_setting.updated_slackApp')); } catch (err) { toastError(err); logger.error(err); } } render() { const { t, adminNotificationContainer } = this.props; return (
adminNotificationContainer.switchSlackOption('Incoming Webhooks')}>Slack Incoming Webhooks adminNotificationContainer.switchSlackOption('App')}>Slack App
{adminNotificationContainer.state.selectSlackOption === 'Incoming Webhooks' ? (

{t('notification_setting.slack_incoming_configuration')}

adminNotificationContainer.changeWebhookUrl(e.target.value)} />
{ adminNotificationContainer.switchIsIncomingWebhookPrioritized() }} />

{t('notification_setting.prioritize_webhook_desc')}

) : (

{t('notification_setting.slack_app_configuration')}

NOT RECOMMENDED
{/* eslint-disable-next-line react/no-danger */}
adminNotificationContainer.switchSlackOption('Incoming Webhooks')} > {t('notification_setting.use_instead')}
adminNotificationContainer.changeSlackToken(e.target.value)} />
) }

{' '} {t('notification_setting.how_to.header')}

  1. {t('notification_setting.how_to.workspace')}
      {/* eslint-disable-next-line react/no-danger */}
    1. {t('notification_setting.how_to.workspace_desc2')}
    2. {t('notification_setting.how_to.workspace_desc3')}
  2. {t('notification_setting.how_to.at_growi')}
      {/* eslint-disable-next-line react/no-danger */}
); } } const SlackAppConfigurationWrapper = (props) => { return createSubscribedElement(SlackAppConfiguration, props, [AppContainer, AdminNotificationContainer]); }; SlackAppConfiguration.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, adminNotificationContainer: PropTypes.instanceOf(AdminNotificationContainer).isRequired, }; export default withTranslation()(SlackAppConfigurationWrapper);