{"version":3,"file":"Settings-B67D6mio.mjs","sources":["../../admin/src/utils/getYupInnerErrors.ts","../../admin/src/utils/schema.ts","../../admin/src/pages/Settings.tsx"],"sourcesContent":["import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n  values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n  errorType?: string | undefined,\n  errorParams?: Record<string, any> | undefined\n) => {\n  if (!errorType || !errorParams) {\n    return {};\n  }\n\n  return {\n    [errorType]: errorParams[errorType],\n  };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n  (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n    if (currentError.path) {\n      acc[currentError.path.split('[').join('.').split(']').join('')] = {\n        id: currentError.message,\n        defaultMessage: currentError.message,\n        values: extractValuesFromYupError(currentError?.type, currentError?.params),\n      };\n    }\n\n    return acc;\n  }, {});\n\nexport { getYupInnerErrors };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n  email: yup.string().email(translatedErrors.email.id).required(translatedErrors.required.id),\n});\n","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} s={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                          value={data.settings.defaultFrom}\n                        />\n                      </Field.Root>\n                    </Grid.Item>\n\n                    <Grid.Item col={6} s={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                          value={data.settings.defaultReplyTo}\n                        />\n                      </Field.Root>\n                    </Grid.Item>\n\n                    <Grid.Item col={6} s={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} s={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                      />\n                    </Field.Root>\n                  </Grid.Item>\n                  <Grid.Item col={7} s={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":[],"mappings":"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"}