ResendInvitationMailButton.jsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import PropTypes from 'prop-types';
  4. import * as toastr from 'toastr';
  5. import { toastError } from '../../../util/apiNotification';
  6. import AppContainer from '../../../services/AppContainer';
  7. import AdminUsersContainer from '../../../services/AdminUsersContainer';
  8. import { withUnstatedContainers } from '../../UnstatedUtils';
  9. const ResendInvitationEmailButton = (props) => {
  10. const { appContainer, user } = props;
  11. const { t } = useTranslation();
  12. const onClickSendInvitationEmailButton = async() => {
  13. try {
  14. const res = await appContainer.apiv3Put('users/send-invitation-email', { id: user._id });
  15. const { failedToSendEmail } = res.data;
  16. if (failedToSendEmail == null) {
  17. const msg = `・${user.email}`;
  18. toastr.success(msg, 'Successfully sent invitation mail', {
  19. closeButton: true,
  20. progressBar: true,
  21. newestOnTop: false,
  22. showDuration: '100',
  23. hideDuration: '100',
  24. timeOut: '3000',
  25. });
  26. }
  27. else {
  28. const msg = `email: ${failedToSendEmail.email}<br>reason: ${failedToSendEmail.reason}`;
  29. toastr.error(msg, 'Failure to send invitation mail', {
  30. closeButton: true,
  31. progressBar: true,
  32. newestOnTop: false,
  33. showDuration: '100',
  34. hideDuration: '100',
  35. timeOut: '0',
  36. });
  37. }
  38. }
  39. catch (err) {
  40. toastError(err);
  41. }
  42. };
  43. return (
  44. <button className="dropdown-item" type="button" onClick={() => { onClickSendInvitationEmailButton() }}>
  45. <i className="icon-fw icon-envelope"></i> {t('admin:user_management.user_table.send_invitation_email')}
  46. </button>
  47. );
  48. };
  49. const ResendInvitationEmailButtonWrapper = withUnstatedContainers(ResendInvitationEmailButton, [AppContainer, AdminUsersContainer]);
  50. ResendInvitationEmailButton.propTypes = {
  51. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  52. user: PropTypes.object.isRequired,
  53. };
  54. export default ResendInvitationEmailButtonWrapper;