MailSetting.jsx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import AppContainer from '../../../services/AppContainer';
  6. import AdminAppContainer from '../../../services/AdminAppContainer';
  7. import SmtpSetting from './SmtpSetting';
  8. import SesSetting from './SesSetting';
  9. function MailSetting(props) {
  10. const { t, adminAppContainer } = props;
  11. const transmissionMethods = ['smtp', 'ses'];
  12. return (
  13. <React.Fragment>
  14. <div className="row form-group mb-5">
  15. <label className="col-md-3 col-form-label text-right">{t('admin:app_setting.from_e-mail_address')}</label>
  16. <div className="col-md-6">
  17. <input
  18. className="form-control"
  19. type="text"
  20. placeholder={`${t('eg')} mail@growi.org`}
  21. defaultValue={adminAppContainer.state.fromAddress || ''}
  22. onChange={(e) => { adminAppContainer.changeFromAddress(e.target.value) }}
  23. />
  24. </div>
  25. </div>
  26. <div className="row form-group mb-5">
  27. <label className="text-left text-md-right col-md-3 col-form-label">
  28. {t('admin:app_setting.transmission_method')}
  29. </label>
  30. <div className="col-md-6">
  31. {transmissionMethods.map((method) => {
  32. return (
  33. <div key={method} className="custom-control custom-radio custom-control-inline">
  34. <input
  35. type="radio"
  36. className="custom-control-input"
  37. name="transmission-method"
  38. id={`transmission-nethod-radio-${method}`}
  39. checked={adminAppContainer.state.transmissionMethod === method}
  40. onChange={(e) => {
  41. adminAppContainer.changeTransmissionMethod(method);
  42. }}
  43. />
  44. <label className="custom-control-label" htmlFor={`transmission-nethod-radio-${method}`}>{method}</label>
  45. </div>
  46. );
  47. })}
  48. </div>
  49. </div>
  50. {adminAppContainer.state.transmissionMethod === 'smtp' && <SmtpSetting />}
  51. {adminAppContainer.state.transmissionMethod === 'ses' && <SesSetting />}
  52. </React.Fragment>
  53. );
  54. }
  55. /**
  56. * Wrapper component for using unstated
  57. */
  58. const MailSettingWrapper = withUnstatedContainers(MailSetting, [AppContainer, AdminAppContainer]);
  59. MailSetting.propTypes = {
  60. t: PropTypes.func.isRequired, // i18next
  61. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  62. adminAppContainer: PropTypes.instanceOf(AdminAppContainer).isRequired,
  63. };
  64. export default withTranslation()(MailSettingWrapper);