SecurityManagement.jsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import React, { Suspense } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { toastError } from '../../../util/apiNotification';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import AdminGeneralSecurityContainer from '../../../services/AdminGeneralSecurityContainer';
  6. import SecurityManagementContents from './SecurityManagementContents';
  7. let retrieveError = null;
  8. function SecurityManagement(props) {
  9. const { adminGeneralSecurityContainer } = props;
  10. if (adminGeneralSecurityContainer.state.currentRestrictGuestMode === adminGeneralSecurityContainer.dummyCurrentRestrictGuestMode) {
  11. throw (async() => {
  12. try {
  13. await adminGeneralSecurityContainer.retrieveSecurityData();
  14. }
  15. catch (err) {
  16. toastError(err);
  17. retrieveError = err;
  18. adminGeneralSecurityContainer.setState({
  19. currentRestrictGuestMode: adminGeneralSecurityContainer.dummyCurrentRestrictGuestModeForError,
  20. });
  21. }
  22. })();
  23. }
  24. if (adminGeneralSecurityContainer.state.currentRestrictGuestMode === adminGeneralSecurityContainer.dummyCurrentRestrictGuestModeForError) {
  25. throw new Error(retrieveError[0].message);
  26. }
  27. return <SecurityManagementContents />;
  28. }
  29. SecurityManagement.propTypes = {
  30. adminGeneralSecurityContainer: PropTypes.instanceOf(AdminGeneralSecurityContainer).isRequired,
  31. };
  32. const SecurityManagementWithUnstatedContainer = withUnstatedContainers(SecurityManagement, [AdminGeneralSecurityContainer]);
  33. function SecurityManagementWithContainerWithSuspense(props) {
  34. return (
  35. <Suspense
  36. fallback={(
  37. <div className="row">
  38. <i className="fa fa-5x fa-spinner fa-pulse mx-auto text-muted"></i>
  39. </div>
  40. )}
  41. >
  42. <SecurityManagementWithUnstatedContainer {...props} />
  43. </Suspense>
  44. );
  45. }
  46. export default SecurityManagementWithContainerWithSuspense;