GoogleSecuritySetting.jsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* eslint-disable react/no-danger */
  2. import React, { Suspense } from 'react';
  3. import PropTypes from 'prop-types';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import { toastError } from '../../../util/apiNotification';
  6. import AppContainer from '../../../services/AppContainer';
  7. import AdminGeneralSecurityContainer from '../../../services/AdminGeneralSecurityContainer';
  8. import AdminGoogleSecurityContainer from '../../../services/AdminGoogleSecurityContainer';
  9. import GoogleSecurityManagementContents from './GoogleSecuritySettingContents';
  10. function GoogleSecurityManagement(props) {
  11. const { adminGoogleSecurityContainer } = props;
  12. if (adminGoogleSecurityContainer.state.googleClientId === adminGoogleSecurityContainer.dummyGoogleClientId) {
  13. throw new Promise(async() => {
  14. try {
  15. await adminGoogleSecurityContainer.retrieveSecurityData();
  16. }
  17. catch (err) {
  18. toastError(err);
  19. adminGoogleSecurityContainer.setState({ retrieveError: err.message });
  20. }
  21. });
  22. }
  23. return <GoogleSecurityManagementContents />;
  24. }
  25. GoogleSecurityManagement.propTypes = {
  26. t: PropTypes.func.isRequired, // i18next
  27. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  28. adminGeneralSecurityContainer: PropTypes.instanceOf(AdminGeneralSecurityContainer).isRequired,
  29. adminGoogleSecurityContainer: PropTypes.instanceOf(AdminGoogleSecurityContainer).isRequired,
  30. };
  31. const GoogleSecurityManagementWithUnstatedContainer = withUnstatedContainers(GoogleSecurityManagement, [
  32. AppContainer,
  33. AdminGeneralSecurityContainer,
  34. AdminGoogleSecurityContainer,
  35. ]);
  36. function GoogleSecurityManagementWithContainerWithSuspense(props) {
  37. return (
  38. <Suspense
  39. fallback={(
  40. <div className="row">
  41. <i className="fa fa-5x fa-spinner fa-pulse mx-auto text-muted"></i>
  42. </div>
  43. )}
  44. >
  45. <GoogleSecurityManagementWithUnstatedContainer />
  46. </Suspense>
  47. );
  48. }
  49. export default GoogleSecurityManagementWithContainerWithSuspense;