@strapi/email 5.37.1 → 5.38.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/Settings.js +399 -47
- package/dist/admin/pages/Settings.js.map +1 -1
- package/dist/admin/pages/Settings.mjs +402 -50
- package/dist/admin/pages/Settings.mjs.map +1 -1
- package/dist/admin/shared/email-address-parser.js +245 -0
- package/dist/admin/shared/email-address-parser.js.map +1 -0
- package/dist/admin/shared/email-address-parser.mjs +243 -0
- package/dist/admin/shared/email-address-parser.mjs.map +1 -0
- package/dist/admin/translations/de.json.js +18 -2
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +18 -2
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +23 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +23 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +6 -1
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +3 -1
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/schema.js.map +1 -1
- package/dist/admin/utils/schema.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/email.js +33 -1
- package/dist/server/controllers/email.js.map +1 -1
- package/dist/server/controllers/email.mjs +33 -1
- package/dist/server/controllers/email.mjs.map +1 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middlewares/index.js.map +1 -1
- package/dist/server/middlewares/index.mjs.map +1 -1
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/routes/admin.js +18 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +18 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/routes/validation/email.js.map +1 -1
- package/dist/server/routes/validation/email.mjs.map +1 -1
- package/dist/server/services/email.js.map +1 -1
- package/dist/server/services/email.mjs +1 -1
- package/dist/server/services/email.mjs.map +1 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/email.d.ts +1 -0
- package/dist/server/src/controllers/email.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/shared/email-address-parser.d.ts +81 -0
- package/dist/shared/email-address-parser.d.ts.map +1 -0
- package/dist/shared/types.d.ts +17 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +14 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Settings.js","sources":["../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config },\n } = res;\n\n return config;\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"shipper-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: \"ex: Strapi No-Reply '<'no-reply@strapi.io'>'\",\n })}\n disabled\n readOnly\n value={data.settings.defaultFrom}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"response-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: `ex: Strapi '<'example@strapi.io'>'`,\n })}\n disabled\n readOnly\n value={data.settings.defaultReplyTo}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} xs={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["DocumentationLink","styled","a","theme","colors","primary600","ProtectedSettingsPage","_jsx","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","formatMessage","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","mutation","useMutation","body","onError","type","message","id","defaultMessage","to","onSuccess","retry","useEffect","schema","validate","email","abortEarly","then","catch","handleChange","event","target","value","handleSubmit","preventDefault","error","ValidationError","getYupInnerErrors","mutate","Loading","_jsxs","Main","labelledBy","aria-busy","Title","name","Layouts","Header","title","subtitle","Content","form","onSubmit","Flex","direction","alignItems","gap","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","file","link","href","rel","Grid","Root","Item","col","xs","Field","Label","TextInput","placeholder","disabled","readOnly","defaultFrom","defaultReplyTo","SingleSelect","provider","SingleSelectOption","onChange","Button","loading","startIcon","Mail"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Settings.js","sources":["../../../admin/src/pages/Settings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n Grid,\n SingleSelectOption,\n SingleSelect,\n TextInput,\n Typography,\n Field,\n Badge,\n} from '@strapi/design-system';\nimport { Mail, Check, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { parseEmailAddress } from '../../../shared/email-address-parser';\nimport { PERMISSIONS } from '../constants';\nimport { getYupInnerErrors } from '../utils/getYupInnerErrors';\nimport { schema } from '../utils/schema';\n\nimport type { EmailSettings, ProviderCapabilities } from '../../../shared/types';\n\nconst DocumentationLink = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\ninterface MutationBody {\n to: string;\n}\n\nconst FEATURE_LABELS: Record<string, { id: string; defaultMessage: string }> = {\n dkim: {\n id: 'email.Settings.capabilities.feature.dkim',\n defaultMessage: 'DKIM',\n },\n pool: {\n id: 'email.Settings.capabilities.feature.pool',\n defaultMessage: 'Connection pool',\n },\n rateLimiting: {\n id: 'email.Settings.capabilities.feature.rateLimiting',\n defaultMessage: 'Rate limiting',\n },\n oauth2: {\n id: 'email.Settings.capabilities.feature.oauth2',\n defaultMessage: 'OAuth2',\n },\n requireTLS: {\n id: 'email.Settings.capabilities.feature.requireTLS',\n defaultMessage: 'Require TLS',\n },\n};\n\nconst CapabilitiesSection = ({\n capabilities,\n isIdle,\n formatMessage,\n}: {\n capabilities: ProviderCapabilities;\n isIdle?: boolean;\n formatMessage: (msg: { id: string; defaultMessage: string }) => string;\n}) => {\n const transport = capabilities.transport;\n const auth = capabilities.auth;\n const features = capabilities.features ?? [];\n\n const encryptionLabel =\n transport?.secure === true\n ? 'TLS'\n : transport?.port === 587\n ? 'STARTTLS'\n : transport?.port === 465\n ? 'TLS'\n : 'None';\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.capabilities.title',\n defaultMessage: 'Provider capabilities',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'email.Settings.capabilities.subtitle',\n defaultMessage: 'Current SMTP configuration and enabled features',\n })}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n {transport && (transport.host || transport.port) && (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"smtp-server\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.capabilities.label.smtpServer',\n defaultMessage: 'SMTP server',\n })}\n </Field.Label>\n <TextInput\n disabled\n readOnly\n value={\n transport.host && transport.port\n ? `${transport.host}:${transport.port}`\n : transport.host || String(transport.port)\n }\n />\n </Field.Root>\n </Grid.Item>\n )}\n\n {transport && (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"encryption\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.capabilities.label.encryption',\n defaultMessage: 'Encryption',\n })}\n </Field.Label>\n <TextInput disabled readOnly value={encryptionLabel} />\n </Field.Root>\n </Grid.Item>\n )}\n\n {auth && (auth.type || auth.user) && (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"auth-type\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.capabilities.label.authType',\n defaultMessage: 'Authentication',\n })}\n </Field.Label>\n <TextInput\n disabled\n readOnly\n value={\n auth.type\n ? auth.user\n ? `${auth.type} (${auth.user})`\n : auth.type\n : auth.user || 'None'\n }\n />\n </Field.Root>\n </Grid.Item>\n )}\n\n {transport?.pool && isIdle !== undefined && (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"pool-status\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.capabilities.label.poolStatus',\n defaultMessage: 'Pool status',\n })}\n </Field.Label>\n <Badge\n backgroundColor={isIdle ? 'success100' : 'primary100'}\n textColor={isIdle ? 'success700' : 'primary700'}\n >\n {isIdle\n ? formatMessage({\n id: 'email.Settings.capabilities.poolStatus.idle',\n defaultMessage: 'Idle',\n })\n : formatMessage({\n id: 'email.Settings.capabilities.poolStatus.active',\n defaultMessage: 'Active',\n })}\n </Badge>\n </Field.Root>\n </Grid.Item>\n )}\n\n {features.length > 0 && (\n <Grid.Item col={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"features\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.capabilities.label.features',\n defaultMessage: 'Enabled features',\n })}\n </Field.Label>\n <Flex gap={2} wrap=\"wrap\">\n {features.map((f) => (\n <Badge key={f} backgroundColor=\"neutral100\" textColor=\"neutral700\">\n {formatMessage(\n FEATURE_LABELS[f] ?? {\n id: `email.Settings.capabilities.feature.${f}`,\n defaultMessage: f,\n }\n )}\n </Badge>\n ))}\n </Flex>\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nconst SettingsPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { get, post } = useFetchClient();\n\n const [testAddress, setTestAddress] = React.useState('');\n const [isTestAddressValid, setIsTestAddressValid] = React.useState(false);\n\n // TODO: I'm not sure how to type this. I think it should be Record<string, TranslationMessage> but that type is defined in the helper-plugin\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [formErrors, setFormErrors] = React.useState<Record<string, any>>({});\n\n const { data, isLoading } = useQuery(['email', 'settings'], async () => {\n const res = await get<EmailSettings>('/email/settings');\n const {\n data: { config, supportsVerify, capabilities, isIdle },\n } = res;\n\n return { ...config, supportsVerify, capabilities, isIdle };\n });\n\n const mutation = useMutation<void, Error, MutationBody>(\n async (body) => {\n await post('/email/test', body);\n },\n {\n onError() {\n toggleNotification!({\n type: 'danger',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.error',\n defaultMessage: 'Failed to send a test mail to {to}',\n },\n { to: testAddress }\n ),\n });\n },\n onSuccess() {\n toggleNotification!({\n type: 'success',\n message: formatMessage(\n {\n id: 'email.Settings.email.plugin.notification.test.success',\n defaultMessage: 'Email test succeeded, check the {to} mailbox',\n },\n { to: testAddress }\n ),\n });\n },\n retry: false,\n }\n );\n\n const [connectionStatus, setConnectionStatus] = React.useState<\n 'idle' | 'loading' | 'success' | 'error'\n >('idle');\n\n const verifyMutation = useMutation(\n async () => {\n await post('/email/verify', {});\n },\n {\n onMutate() {\n setConnectionStatus('loading');\n },\n onError() {\n setConnectionStatus('error');\n toggleNotification!({\n type: 'danger',\n message: formatMessage({\n id: 'email.Settings.email.plugin.notification.verify.error',\n defaultMessage: 'Connection verification failed',\n }),\n });\n },\n onSuccess() {\n setConnectionStatus('success');\n toggleNotification!({\n type: 'success',\n message: formatMessage({\n id: 'email.Settings.email.plugin.notification.verify.success',\n defaultMessage: 'Connection verified successfully',\n }),\n });\n },\n retry: false,\n }\n );\n\n React.useEffect(() => {\n schema\n .validate({ email: testAddress }, { abortEarly: false })\n .then(() => setIsTestAddressValid(true))\n .catch(() => setIsTestAddressValid(false));\n }, [testAddress]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTestAddress(() => event.target.value);\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n try {\n await schema.validate({ email: testAddress }, { abortEarly: false });\n } catch (error) {\n if (error instanceof ValidationError) {\n setFormErrors(getYupInnerErrors(error));\n }\n }\n\n mutation.mutate({ to: testAddress });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main labelledBy=\"title\" aria-busy={isLoading || mutation.isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n }),\n }\n )}\n </Page.Title>\n <Layouts.Header\n id=\"title\"\n title={formatMessage({\n id: 'email.Settings.email.plugin.title',\n defaultMessage: 'Configuration',\n })}\n subtitle={formatMessage({\n id: 'email.Settings.email.plugin.subTitle',\n defaultMessage: 'Test the settings for the Email plugin',\n })}\n />\n\n <Layouts.Content>\n {data && (\n <form onSubmit={handleSubmit}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.config',\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'email.Settings.email.plugin.text.configuration',\n defaultMessage:\n 'The plugin is configured through the {file} file, checkout this {link} for the documentation.',\n },\n {\n file: './config/plugins.js',\n link: (\n <DocumentationLink\n href=\"https://docs.strapi.io/developer-docs/latest/plugins/email.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {formatMessage({\n id: 'email.link',\n defaultMessage: 'Link',\n })}\n </DocumentationLink>\n ),\n }\n )}\n </Typography>\n </Flex>\n\n <Grid.Root gap={5}>\n {(() => {\n const parsedFrom = parseEmailAddress(data.settings.defaultFrom);\n const parsedReplyTo = parseEmailAddress(data.settings.defaultReplyTo);\n\n return (\n <>\n {/* Sender Name - only show if name is present */}\n {parsedFrom.name && (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"sender-name\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.senderName',\n defaultMessage: 'Default sender name',\n })}\n </Field.Label>\n <TextInput disabled readOnly value={parsedFrom.name} />\n </Field.Root>\n </Grid.Item>\n )}\n\n {/* Sender Email */}\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"sender-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultFrom',\n defaultMessage: 'Default sender email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultFrom',\n defaultMessage: 'ex: no-reply@strapi.io',\n })}\n disabled\n readOnly\n value={parsedFrom.email}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n\n {/* Reply-To Name - only show if name is present */}\n {parsedReplyTo.name && (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"reply-to-name\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.replyToName',\n defaultMessage: 'Default reply-to name',\n })}\n </Field.Label>\n <TextInput disabled readOnly value={parsedReplyTo.name} />\n </Field.Root>\n </Grid.Item>\n )}\n\n {/* Reply-To Email */}\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"reply-to-email\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.defaultReplyTo',\n defaultMessage: 'Default response email',\n })}\n </Field.Label>\n <TextInput\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.defaultReplyTo',\n defaultMessage: 'ex: support@strapi.io',\n })}\n disabled\n readOnly\n value={parsedReplyTo.email}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n </>\n );\n })()}\n\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"email-provider\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.provider',\n defaultMessage: 'Email provider',\n })}\n </Field.Label>\n <SingleSelect disabled value={data.provider}>\n <SingleSelectOption value={data.provider}>\n {data.provider}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Grid.Item>\n\n {data.supportsVerify && (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"start\">\n <Field.Root name=\"verify-connection\">\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.verifyConnection',\n defaultMessage: 'Connection status',\n })}\n </Field.Label>\n <Flex gap={2} alignItems=\"center\">\n <Button\n variant=\"secondary\"\n loading={verifyMutation.isLoading}\n onClick={() => verifyMutation.mutate()}\n type=\"button\"\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.verify',\n defaultMessage: 'Test connection',\n })}\n </Button>\n {connectionStatus === 'success' && (\n <Badge backgroundColor=\"success100\" textColor=\"success700\">\n <Flex gap={1}>\n <Check width=\"1.2rem\" height=\"1.2rem\" />\n {formatMessage({\n id: 'email.Settings.email.plugin.status.connected',\n defaultMessage: 'Connected',\n })}\n </Flex>\n </Badge>\n )}\n {connectionStatus === 'error' && (\n <Badge backgroundColor=\"danger100\" textColor=\"danger700\">\n <Flex gap={1}>\n <Cross width=\"1.2rem\" height=\"1.2rem\" />\n {formatMessage({\n id: 'email.Settings.email.plugin.status.error',\n defaultMessage: 'Error',\n })}\n </Flex>\n </Badge>\n )}\n </Flex>\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n </Box>\n\n {data.capabilities &&\n (data.capabilities.transport ||\n data.capabilities.auth ||\n (data.capabilities.features && data.capabilities.features.length > 0)) && (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <CapabilitiesSection\n capabilities={data.capabilities}\n isIdle={data.isIdle}\n formatMessage={formatMessage}\n />\n </Box>\n )}\n\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={4}\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'email.Settings.email.plugin.title.test',\n defaultMessage: 'Test email delivery',\n })}\n </Typography>\n\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"test-address\"\n error={\n formErrors.email?.id &&\n formatMessage({\n id: `email.${formErrors.email?.id}`,\n defaultMessage: 'This is not a valid email',\n })\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'email.Settings.email.plugin.label.testAddress',\n defaultMessage: 'Recipient email',\n })}\n </Field.Label>\n <TextInput\n onChange={handleChange}\n value={testAddress}\n placeholder={formatMessage({\n id: 'email.Settings.email.plugin.placeholder.testAddress',\n defaultMessage: 'ex: developer@example.com',\n })}\n type=\"email\"\n />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={7} xs={12} direction=\"column\" alignItems=\"start\">\n <Button\n loading={mutation.isLoading}\n disabled={!isTestAddressValid}\n type=\"submit\"\n startIcon={<Mail />}\n >\n {formatMessage({\n id: 'email.Settings.email.plugin.button.test-email',\n defaultMessage: 'Send test email',\n })}\n </Button>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Flex>\n </form>\n )}\n </Layouts.Content>\n </Page.Main>\n );\n};\n"],"names":["DocumentationLink","styled","a","theme","colors","primary600","FEATURE_LABELS","dkim","id","defaultMessage","pool","rateLimiting","oauth2","requireTLS","CapabilitiesSection","capabilities","isIdle","formatMessage","transport","auth","features","encryptionLabel","secure","port","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","tag","Grid","Root","host","Item","col","xs","Field","name","Label","TextInput","disabled","readOnly","value","String","type","user","undefined","Badge","backgroundColor","textColor","length","wrap","map","f","ProtectedSettingsPage","Page","Protect","permissions","PERMISSIONS","settings","SettingsPage","toggleNotification","useNotification","useIntl","get","post","useFetchClient","testAddress","setTestAddress","React","useState","isTestAddressValid","setIsTestAddressValid","formErrors","setFormErrors","data","isLoading","useQuery","res","config","supportsVerify","mutation","useMutation","body","onError","message","to","onSuccess","retry","connectionStatus","setConnectionStatus","verifyMutation","onMutate","useEffect","schema","validate","email","abortEarly","then","catch","handleChange","event","target","handleSubmit","preventDefault","error","ValidationError","getYupInnerErrors","mutate","Loading","Main","labelledBy","aria-busy","Title","Layouts","Header","title","subtitle","Content","form","onSubmit","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","file","link","href","rel","parsedFrom","parseEmailAddress","defaultFrom","parsedReplyTo","defaultReplyTo","_Fragment","placeholder","SingleSelect","provider","SingleSelectOption","Button","loading","onClick","Check","width","height","Cross","onChange","startIcon","Mail"],"mappings":"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"}
|