LegacySlackIntegration.jsx 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import React, { useEffect, useMemo, useState } 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/apiNotification';
  6. import { useSWRxLegacySlackIntegrationSetting } from '~/stores/legacy-slack-integration';
  7. import { toArrayIfNot } from '~/utils/array-utils';
  8. import loggerFactory from '~/utils/logger';
  9. import { withUnstatedContainers } from '../../UnstatedUtils';
  10. import SlackConfiguration from './SlackConfiguration';
  11. const logger = loggerFactory('growi:NotificationSetting');
  12. // const retrieveErrors = null;
  13. function LegacySlackIntegration(props) {
  14. const { t } = useTranslation();
  15. const { data: legacySlackIntegrationSettingData } = useSWRxLegacySlackIntegrationSetting();
  16. const { adminSlackIntegrationLegacyContainer } = props;
  17. useEffect(() => {
  18. }, [legacySlackIntegrationSettingData]);
  19. if (adminSlackIntegrationLegacyContainer.state.webhookUrl === adminSlackIntegrationLegacyContainer.dummyWebhookUrl) {
  20. // TODO: SWRize adminSlackIntegrationLegacyContainer.retrieveData();
  21. // throw (async() => {
  22. // try {
  23. // await adminSlackIntegrationLegacyContainer.retrieveData();
  24. // }
  25. // catch (err) {
  26. // const errs = toArrayIfNot(err);
  27. // toastError(errs);
  28. // logger.error(errs);
  29. // retrieveErrors = errs;
  30. // adminSlackIntegrationLegacyContainer.setState({ webhookUrl: adminSlackIntegrationLegacyContainer.dummyWebhookUrlForError });
  31. // }
  32. // })();
  33. }
  34. // if (adminSlackIntegrationLegacyContainer.state.webhookUrl === adminSlackIntegrationLegacyContainer.dummyWebhookUrlForError) {
  35. // throw new Error(`${retrieveErrors.length} errors occured`);
  36. // }
  37. const isDisabled = adminSlackIntegrationLegacyContainer.state.isSlackbotConfigured;
  38. return (
  39. <div data-testid="admin-slack-integration-legacy">
  40. { isDisabled && (
  41. <div className="alert alert-danger">
  42. <i className="icon-minus icon-fw"></i>
  43. {/* eslint-disable-next-line react/no-danger */}
  44. <span dangerouslySetInnerHTML={{ __html: t('admin:slack_integration_legacy.alert_disabled') }}></span>
  45. </div>
  46. ) }
  47. <div className="alert alert-warning">
  48. <i className="icon-info icon-fw"></i>
  49. {/* eslint-disable-next-line react/no-danger */}
  50. <span dangerouslySetInnerHTML={{ __html: t('admin:slack_integration_legacy.alert_deplicated') }}></span>
  51. </div>
  52. <SlackConfiguration />
  53. </div>
  54. );
  55. }
  56. const LegacySlackIntegrationWithUnstatedContainer = withUnstatedContainers(LegacySlackIntegration, [AdminSlackIntegrationLegacyContainer]);
  57. LegacySlackIntegration.propTypes = {
  58. adminSlackIntegrationLegacyContainer: PropTypes.instanceOf(AdminSlackIntegrationLegacyContainer).isRequired,
  59. };
  60. export default LegacySlackIntegrationWithUnstatedContainer;