import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { toastSuccess, toastError } from '../../../util/apiNotification'; import { withUnstatedContainers } from '../../UnstatedUtils'; import AppContainer from '../../../services/AppContainer'; import AdminAppContainer from '../../../services/AdminAppContainer'; import SmtpSetting from './SmtpSetting'; import SesSetting from './SesSetting'; function MailSetting(props) { const { t, adminAppContainer } = props; const transmissionMethods = ['smtp', 'ses']; async function submitHandler() { const { t } = props; try { await adminAppContainer.updateMailSettingHandler(); toastSuccess(t('toaster.update_successed', { target: t('admin:app_setting.ses_settings') })); } catch (err) { toastError(err); } } async function sendTestEmailHandler() { const { adminAppContainer } = props; try { await adminAppContainer.sendTestEmail(); toastSuccess(t('admin:app_setting.success_to_send_test_email')); } catch (err) { toastError(err); } } return ( {!adminAppContainer.state.isMailerSetup && (
{t('admin:app_setting.mailer_is_not_set_up')}
)}
{ adminAppContainer.changeFromAddress(e.target.value) }} />
{transmissionMethods.map((method) => { return (
{ adminAppContainer.changeTransmissionMethod(method); }} />
); })}
{adminAppContainer.state.transmissionMethod === 'smtp' && } {adminAppContainer.state.transmissionMethod === 'ses' && }
{adminAppContainer.state.transmissionMethod === 'smtp' && ( )}
); } /** * Wrapper component for using unstated */ const MailSettingWrapper = withUnstatedContainers(MailSetting, [AppContainer, AdminAppContainer]); MailSetting.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, adminAppContainer: PropTypes.instanceOf(AdminAppContainer).isRequired, }; export default withTranslation()(MailSettingWrapper);