GitHubSecuritySetting.jsx 1.8 KB

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