import React, { useState } from 'react'; import { Field, Form, Formik } from 'formik'; import useSWR from 'swr'; import LoadingSpinner from '../../Common/LoadingSpinner'; import Button from '../../Common/Button'; import { defineMessages, useIntl } from 'react-intl'; import Axios from 'axios'; import * as Yup from 'yup'; const messages = defineMessages({ save: 'Save Changes', saving: 'Saving...', validationFromRequired: 'You must provide an email sender address', validationSmtpHostRequired: 'You must provide an SMTP host', validationSmtpPortRequired: 'You must provide an SMTP port', agentenabled: 'Agent Enabled', emailsender: 'Email Sender Address', smtpHost: 'SMTP Host', smtpPort: 'SMTP Port', enableSsl: 'Enable SSL', authUser: 'Auth User', authPass: 'Auth Pass', }); const NotificationsEmail: React.FC = () => { const intl = useIntl(); const { data, error, revalidate } = useSWR( '/api/v1/settings/notifications/email' ); const NotificationsDiscordSchema = Yup.object().shape({ emailFrom: Yup.string().required( intl.formatMessage(messages.validationFromRequired) ), smtpHost: Yup.string().required( intl.formatMessage(messages.validationSmtpHostRequired) ), smtpPort: Yup.number().required( intl.formatMessage(messages.validationSmtpPortRequired) ), }); if (!data && !error) { return ; } return ( { try { await Axios.post('/api/v1/settings/notifications/email', { enabled: values.enabled, types: values.types, options: { emailFrom: values.emailFrom, smtpHost: values.smtpHost, smtpPort: values.smtpPort, secure: values.secure, authUser: values.authUser, authPass: values.authPass, }, }); } catch (e) { // TODO show error } finally { revalidate(); } }} > {({ errors, touched, isSubmitting }) => { return ( Agent Enabled {intl.formatMessage(messages.emailsender)} {errors.emailFrom && touched.emailFrom && ( {errors.emailFrom} )} {intl.formatMessage(messages.smtpHost)} {errors.smtpHost && touched.smtpHost && ( {errors.smtpHost} )} {intl.formatMessage(messages.smtpPort)} {errors.smtpPort && touched.smtpPort && ( {errors.smtpPort} )} {intl.formatMessage(messages.enableSsl)} {intl.formatMessage(messages.authUser)} {intl.formatMessage(messages.authPass)} {isSubmitting ? intl.formatMessage(messages.saving) : intl.formatMessage(messages.save)} ); }} ); }; export default NotificationsEmail;