LegacySlackIntegration.jsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import React, { useEffect } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import PropTypes from 'prop-types';
  4. import AdminSlackIntegrationLegacyContainer from '~/client/services/AdminSlackIntegrationLegacyContainer';
  5. import { toastError } from '~/client/util/toastr';
  6. import { toArrayIfNot } from '~/utils/array-utils';
  7. import loggerFactory from '~/utils/logger';
  8. import { withUnstatedContainers } from '../../UnstatedUtils';
  9. import SlackConfiguration from './SlackConfiguration';
  10. const logger = loggerFactory('growi:NotificationSetting');
  11. const LegacySlackIntegration = (props) => {
  12. const { t } = useTranslation();
  13. const { adminSlackIntegrationLegacyContainer } = props;
  14. useEffect(() => {
  15. const fetchLegacySlackIntegrationData = async() => {
  16. await adminSlackIntegrationLegacyContainer.retrieveData();
  17. };
  18. try {
  19. fetchLegacySlackIntegrationData();
  20. }
  21. catch (err) {
  22. const errs = toArrayIfNot(err);
  23. toastError(errs);
  24. logger.error(errs);
  25. }
  26. }, [adminSlackIntegrationLegacyContainer]);
  27. const isDisabled = adminSlackIntegrationLegacyContainer.state.isSlackbotConfigured;
  28. return (
  29. <div data-testid="admin-slack-integration-legacy">
  30. { isDisabled && (
  31. <div className="alert alert-danger">
  32. <span className="material-symbols-outlined">remove</span>
  33. {/* eslint-disable-next-line react/no-danger */}
  34. <span dangerouslySetInnerHTML={{ __html: t('admin:slack_integration_legacy.alert_disabled') }}></span>
  35. </div>
  36. ) }
  37. <div className="alert alert-warning">
  38. <span className="material-symbols-outlined">info</span>
  39. {/* eslint-disable-next-line react/no-danger */}
  40. <span dangerouslySetInnerHTML={{ __html: t('admin:slack_integration_legacy.alert_deplicated') }}></span>
  41. </div>
  42. <SlackConfiguration />
  43. </div>
  44. );
  45. };
  46. const LegacySlackIntegrationWithUnstatedContainer = withUnstatedContainers(LegacySlackIntegration, [AdminSlackIntegrationLegacyContainer]);
  47. LegacySlackIntegration.propTypes = {
  48. adminSlackIntegrationLegacyContainer: PropTypes.instanceOf(AdminSlackIntegrationLegacyContainer).isRequired,
  49. };
  50. export default LegacySlackIntegrationWithUnstatedContainer;