NotificationSetting.jsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React, { Suspense } from 'react';
  2. import PropTypes from 'prop-types';
  3. import loggerFactory from '@alias/logger';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import { toastError } from '../../../util/apiNotification';
  6. import AdminNotificationContainer from '../../../services/AdminNotificationContainer';
  7. import NotificationSettingPageContents from './NotificationSettingPageContents';
  8. const logger = loggerFactory('growi:NotificationSetting');
  9. function NotificationSetting(props) {
  10. if (props.adminNotificationContainer.state.selectSlackOption === 0) {
  11. throw new Promise(async() => {
  12. try {
  13. await props.adminNotificationContainer.retrieveNotificationData();
  14. }
  15. catch (err) {
  16. toastError(err);
  17. props.adminNotificationContainer.setState({ retrieveError: err });
  18. logger.error(err);
  19. }
  20. });
  21. }
  22. return <NotificationSettingPageContents />;
  23. }
  24. const NotificationSettingWrapper = withUnstatedContainers(NotificationSetting, [AdminNotificationContainer]);
  25. NotificationSetting.propTypes = {
  26. t: PropTypes.func.isRequired, // i18next
  27. adminNotificationContainer: PropTypes.instanceOf(AdminNotificationContainer).isRequired,
  28. };
  29. function NotificationSettingSuspenseWrapper(props) {
  30. return (
  31. <Suspense
  32. fallback={(
  33. <div className="row">
  34. <i className="fa fa-5x fa-spinner fa-pulse mx-auto text-muted"></i>
  35. </div>
  36. )}
  37. >
  38. <NotificationSettingWrapper />
  39. </Suspense>
  40. );
  41. }
  42. export default NotificationSettingSuspenseWrapper;