TwitterSecuritySetting.jsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* eslint-disable react/no-danger */
  2. import React from 'react';
  3. import PropTypes from 'prop-types';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import { toastError } from '../../../util/apiNotification';
  6. import toArrayIfNot from '../../../../../lib/util/toArrayIfNot';
  7. import { withLoadingSppiner } from '../../SuspenseUtils';
  8. import AdminTwitterSecurityContainer from '../../../services/AdminTwitterSecurityContainer';
  9. import TwitterSecuritySettingContents from './TwitterSecuritySettingContents';
  10. let retrieveErrors = null;
  11. function TwitterSecurityManagement(props) {
  12. const { adminTwitterSecurityContainer } = props;
  13. if (adminTwitterSecurityContainer.state.twitterConsumerKey === adminTwitterSecurityContainer.dummyTwitterConsumerKey) {
  14. throw (async() => {
  15. try {
  16. await adminTwitterSecurityContainer.retrieveSecurityData();
  17. }
  18. catch (err) {
  19. const errs = toArrayIfNot(err);
  20. toastError(errs);
  21. retrieveErrors = errs;
  22. adminTwitterSecurityContainer.setState({
  23. twitterConsumerKey: adminTwitterSecurityContainer.dummyTwitterConsumerKeyForError,
  24. });
  25. }
  26. })();
  27. }
  28. if (adminTwitterSecurityContainer.state.twitterConsumerKey === adminTwitterSecurityContainer.dummyTwitterConsumerKeyForError) {
  29. throw new Error(`${retrieveErrors.length} errors occured`);
  30. }
  31. return <TwitterSecuritySettingContents />;
  32. }
  33. TwitterSecurityManagement.propTypes = {
  34. adminTwitterSecurityContainer: PropTypes.instanceOf(AdminTwitterSecurityContainer).isRequired,
  35. };
  36. const TwitterSecurityManagementWithUnstatedContainer = withUnstatedContainers(withLoadingSppiner(TwitterSecurityManagement), [
  37. AdminTwitterSecurityContainer,
  38. ]);
  39. export default TwitterSecurityManagementWithUnstatedContainer;