CustomBotWithoutProxySettings.jsx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import React, { useState, useEffect, useCallback } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import PropTypes from 'prop-types';
  4. import AppContainer from '../../../services/AppContainer';
  5. import AdminAppContainer from '../../../services/AdminAppContainer';
  6. import { withUnstatedContainers } from '../../UnstatedUtils';
  7. import { toastError } from '../../../util/apiNotification';
  8. import CustomBotWithoutProxySettingsAccordion, { botInstallationStep } from './CustomBotWithoutProxySettingsAccordion';
  9. import CustomBotWithoutProxyIntegrationCard from './CustomBotWithoutProxyIntegrationCard';
  10. const CustomBotWithoutProxySettings = (props) => {
  11. const { appContainer } = props;
  12. const { t } = useTranslation();
  13. const [slackWSNameInWithoutProxy, setSlackWSNameInWithoutProxy] = useState(null);
  14. const [siteName, setSiteName] = useState('');
  15. const fetchSlackWorkSpaceName = useCallback(async() => {
  16. try {
  17. const res = await appContainer.apiv3.get('/slack-integration/custom-bot-without-proxy/slack-workspace-name');
  18. setSlackWSNameInWithoutProxy(res.data.slackWorkSpaceName);
  19. }
  20. catch (err) {
  21. toastError(err);
  22. }
  23. }, [appContainer.apiv3]);
  24. useEffect(() => {
  25. const siteName = appContainer.config.crowi.title;
  26. setSiteName(siteName);
  27. if (props.isSetupSlackBot) {
  28. fetchSlackWorkSpaceName();
  29. }
  30. }, [appContainer, fetchSlackWorkSpaceName, props.isSetupSlackBot]);
  31. return (
  32. <>
  33. <h2 className="admin-setting-header">{t('admin:slack_integration.custom_bot_without_proxy_integration')}</h2>
  34. <CustomBotWithoutProxyIntegrationCard
  35. siteName={siteName}
  36. slackWSNameInWithoutProxy={slackWSNameInWithoutProxy}
  37. isSetupSlackBot={props.isSetupSlackBot}
  38. />
  39. <h2 className="admin-setting-header">{t('admin:slack_integration.custom_bot_without_proxy_settings')}</h2>
  40. <div className="my-5 mx-3">
  41. <CustomBotWithoutProxySettingsAccordion
  42. {...props}
  43. activeStep={botInstallationStep.CREATE_BOT}
  44. />
  45. </div>
  46. </>
  47. );
  48. };
  49. const CustomBotWithoutProxySettingsWrapper = withUnstatedContainers(CustomBotWithoutProxySettings, [AppContainer, AdminAppContainer]);
  50. CustomBotWithoutProxySettings.propTypes = {
  51. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  52. adminAppContainer: PropTypes.instanceOf(AdminAppContainer).isRequired,
  53. slackSigningSecret: PropTypes.string,
  54. slackSigningSecretEnv: PropTypes.string,
  55. slackBotToken: PropTypes.string,
  56. slackBotTokenEnv: PropTypes.string,
  57. isRgisterSlackCredentials: PropTypes.bool,
  58. isConnectedToSlack: PropTypes.bool,
  59. isSetupSlackBot: PropTypes.bool,
  60. };
  61. export default CustomBotWithoutProxySettingsWrapper;