Customize.jsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import React, { Fragment } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import AppContainer from '../../../services/AppContainer';
  5. import AdminCustomizeContainer from '../../../services/AdminCustomizeContainer';
  6. import { createSubscribedElement } from '../../UnstatedUtils';
  7. import { toastError } from '../../../util/apiNotification';
  8. import CustomizeLayoutSetting from './CustomizeLayoutSetting';
  9. import CustomizeBehaviorSetting from './CustomizeBehaviorSetting';
  10. import CustomizeFunctionSetting from './CustomizeFunctionSetting';
  11. import CustomizeHighlightSetting from './CustomizeHighlightSetting';
  12. import CustomizeCssSetting from './CustomizeCssSetting';
  13. import CustomizeScriptSetting from './CustomizeScriptSetting';
  14. import CustomizeHeaderSetting from './CustomizeHeaderSetting';
  15. import CustomizeTitle from './CustomizeTitle';
  16. class Customize extends React.Component {
  17. constructor(props) {
  18. super(props);
  19. this.state = {
  20. isRetrieving: true,
  21. };
  22. }
  23. async componentDidMount() {
  24. const { adminCustomizeContainer } = this.props;
  25. try {
  26. await adminCustomizeContainer.retrieveCustomizeData();
  27. this.setState({ isRetrieving: false });
  28. }
  29. catch (err) {
  30. toastError(err);
  31. adminCustomizeContainer.setState({ retrieveError: err });
  32. }
  33. }
  34. render() {
  35. if (this.state.isRetrieving) {
  36. return null;
  37. }
  38. return (
  39. <Fragment>
  40. <div className="mb-5">
  41. <CustomizeLayoutSetting />
  42. </div>
  43. <div className="mb-5">
  44. <CustomizeBehaviorSetting />
  45. </div>
  46. <div className="mb-5">
  47. <CustomizeFunctionSetting />
  48. </div>
  49. <div className="mb-5">
  50. <CustomizeHighlightSetting />
  51. </div>
  52. <div className="mb-5">
  53. <CustomizeTitle />
  54. </div>
  55. <div className="mb-5">
  56. <CustomizeHeaderSetting />
  57. </div>
  58. <div className="mb-5">
  59. <CustomizeCssSetting />
  60. </div>
  61. <div className="mb-5">
  62. <CustomizeScriptSetting />
  63. </div>
  64. </Fragment>
  65. );
  66. }
  67. }
  68. const CustomizeWrapper = (props) => {
  69. return createSubscribedElement(Customize, props, [AppContainer, AdminCustomizeContainer]);
  70. };
  71. Customize.propTypes = {
  72. t: PropTypes.func.isRequired, // i18next
  73. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  74. adminCustomizeContainer: PropTypes.instanceOf(AdminCustomizeContainer).isRequired,
  75. };
  76. export default withTranslation()(CustomizeWrapper);