2
0

Customize.jsx 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import React, { Fragment, Suspense } from 'react';
  2. import PropTypes from 'prop-types';
  3. import loggerFactory from '@alias/logger';
  4. import AdminCustomizeContainer from '../../../services/AdminCustomizeContainer';
  5. import { withUnstatedContainers } from '../../UnstatedUtils';
  6. import { toastError } from '../../../util/apiNotification';
  7. import CustomizeLayoutSetting from './CustomizeLayoutSetting';
  8. import CustomizeFunctionSetting from './CustomizeFunctionSetting';
  9. import CustomizeHighlightSetting from './CustomizeHighlightSetting';
  10. import CustomizeCssSetting from './CustomizeCssSetting';
  11. import CustomizeScriptSetting from './CustomizeScriptSetting';
  12. import CustomizeHeaderSetting from './CustomizeHeaderSetting';
  13. import CustomizeTitle from './CustomizeTitle';
  14. const logger = loggerFactory('growi:services:AdminCustomizePage');
  15. function CustomizePageWithContainerWithSusupense(props) {
  16. return (
  17. <Suspense
  18. fallback={(
  19. <div className="row">
  20. <i className="fa fa-5x fa-spinner fa-pulse mx-auto text-muted"></i>
  21. </div>
  22. )}
  23. >
  24. <CustomizePageWithUnstatedContainer />
  25. </Suspense>
  26. );
  27. }
  28. function Customize(props) {
  29. const { adminCustomizeContainer } = props;
  30. if (adminCustomizeContainer.state.currentTheme === adminCustomizeContainer.dummyCurrentTheme) {
  31. throw (async() => {
  32. try {
  33. await adminCustomizeContainer.retrieveCustomizeData();
  34. }
  35. catch (err) {
  36. toastError(err);
  37. adminCustomizeContainer.setState({ currentTheme: adminCustomizeContainer.dummyCurrentThemeForError, retrieveError: err[0].message });
  38. logger.error(err);
  39. }
  40. })();
  41. }
  42. if (adminCustomizeContainer.state.currentTheme === adminCustomizeContainer.dummyCurrentThemeForError) {
  43. throw new Error(adminCustomizeContainer.state.retrieveError);
  44. }
  45. return (
  46. <Fragment>
  47. <div className="mb-5">
  48. <CustomizeLayoutSetting />
  49. </div>
  50. <div className="mb-5">
  51. <CustomizeFunctionSetting />
  52. </div>
  53. <div className="mb-5">
  54. <CustomizeHighlightSetting />
  55. </div>
  56. <div className="mb-5">
  57. <CustomizeTitle />
  58. </div>
  59. <div className="mb-5">
  60. <CustomizeHeaderSetting />
  61. </div>
  62. <div className="mb-5">
  63. <CustomizeCssSetting />
  64. </div>
  65. <div className="mb-5">
  66. <CustomizeScriptSetting />
  67. </div>
  68. </Fragment>
  69. );
  70. }
  71. const CustomizePageWithUnstatedContainer = withUnstatedContainers(Customize, [AdminCustomizeContainer]);
  72. Customize.propTypes = {
  73. adminCustomizeContainer: PropTypes.instanceOf(AdminCustomizeContainer).isRequired,
  74. };
  75. export default CustomizePageWithContainerWithSusupense;