MarkDownSetting.jsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import React 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 toArrayIfNot from '../../../../../lib/util/toArrayIfNot';
  7. import { withLoadingSppiner } from '../../SuspenseUtils';
  8. import MarkDownSettingContents from './MarkDownSettingContents';
  9. import AdminMarkDownContainer from '../../../services/AdminMarkDownContainer';
  10. const logger = loggerFactory('growi:MarkDown');
  11. let retrieveErrors = null;
  12. function MarkdownSetting(props) {
  13. const { adminMarkDownContainer } = props;
  14. if (adminMarkDownContainer.state.isEnabledLinebreaks === adminMarkDownContainer.dummyIsEnabledLinebreaks) {
  15. throw (async() => {
  16. try {
  17. await adminMarkDownContainer.retrieveMarkdownData();
  18. }
  19. catch (err) {
  20. const errs = toArrayIfNot(err);
  21. toastError(errs);
  22. logger.error(errs);
  23. retrieveErrors = errs;
  24. adminMarkDownContainer.setState({ isEnabledLinebreaks: adminMarkDownContainer.dummyIsEnabledLinebreaksForError });
  25. }
  26. })();
  27. }
  28. if (adminMarkDownContainer.state.isEnabledLinebreaks === adminMarkDownContainer.dummyIsEnabledLinebreaksForError) {
  29. throw new Error(`${retrieveErrors.length} errors occured`);
  30. }
  31. return <MarkDownSettingContents />;
  32. }
  33. const MarkdownSettingWithUnstatedContainer = withUnstatedContainers(withLoadingSppiner(MarkdownSetting), [AdminMarkDownContainer]);
  34. MarkdownSetting.propTypes = {
  35. adminMarkDownContainer: PropTypes.instanceOf(AdminMarkDownContainer).isRequired,
  36. };
  37. export default MarkdownSettingWithUnstatedContainer;