GitHubSecuritySetting.jsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 AdminGitHubSecurityContainer from '../../../services/AdminGitHubSecurityContainer';
  7. import GitHubSecuritySettingContents from './GitHubSecuritySettingContents';
  8. function GitHubSecurityManagement(props) {
  9. const { adminGitHubSecurityContainer } = props;
  10. if (adminGitHubSecurityContainer.state.githubClientId === adminGitHubSecurityContainer.dummyGithubClientId) {
  11. throw new Promise(async() => {
  12. try {
  13. await adminGitHubSecurityContainer.retrieveSecurityData();
  14. }
  15. catch (err) {
  16. toastError(err);
  17. adminGitHubSecurityContainer.setState({ retrieveError: err });
  18. }
  19. });
  20. }
  21. return <GitHubSecuritySettingContents />;
  22. }
  23. GitHubSecurityManagement.propTypes = {
  24. adminGitHubSecurityContainer: PropTypes.instanceOf(AdminGitHubSecurityContainer).isRequired,
  25. };
  26. const GitHubSecurityManagementWithUnstatedContainer = withUnstatedContainers(GitHubSecurityManagement, [
  27. AdminGitHubSecurityContainer,
  28. ]);
  29. function GitHubSecurityManagementWithContainerWithSuspense(props) {
  30. return (
  31. <Suspense
  32. fallback={(
  33. <div className="row">
  34. <i className="fa fa-5x fa-spinner fa-pulse mx-auto text-muted"></i>
  35. </div>
  36. )}
  37. >
  38. <GitHubSecurityManagementWithUnstatedContainer />
  39. </Suspense>
  40. );
  41. }
  42. export default GitHubSecurityManagementWithContainerWithSuspense;