{"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/EmailTemplates/index.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport {\n  Page,\n  useAPIErrorHandler,\n  useNotification,\n  useFetchClient,\n  useRBAC,\n  Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport EmailForm from './components/EmailForm';\nimport EmailTable from './components/EmailTable';\n\nconst ProtectedEmailTemplatesPage = () => (\n  <Page.Protect permissions={PERMISSIONS.readEmailTemplates}>\n    <EmailTemplatesPage />\n  </Page.Protect>\n);\nconst EmailTemplatesPage = () => {\n  const { formatMessage } = useIntl();\n  const { trackUsage } = useTracking();\n  const { notifyStatus } = useNotifyAT();\n  const { toggleNotification } = useNotification();\n  const queryClient = useQueryClient();\n  const { get, put } = useFetchClient();\n  const { formatAPIError } = useAPIErrorHandler();\n\n  const [isModalOpen, setIsModalOpen] = React.useState(false);\n  const [templateToEdit, setTemplateToEdit] = React.useState(null);\n\n  const {\n    isLoading: isLoadingForPermissions,\n    allowedActions: { canUpdate },\n  } = useRBAC({ update: PERMISSIONS.updateEmailTemplates });\n\n  const { isLoading: isLoadingData, data } = useQuery(\n    ['users-permissions', 'email-templates'],\n    async () => {\n      const { data } = await get('/users-permissions/email-templates');\n\n      return data;\n    },\n    {\n      onSuccess() {\n        notifyStatus(\n          formatMessage({\n            id: getTrad('Email.template.data.loaded'),\n            defaultMessage: 'Email templates has been loaded',\n          })\n        );\n      },\n      onError(error) {\n        toggleNotification({\n          type: 'danger',\n          message: formatAPIError(error),\n        });\n      },\n    }\n  );\n\n  const isLoading = isLoadingForPermissions || isLoadingData;\n\n  const handleToggle = () => {\n    setIsModalOpen((prev) => !prev);\n  };\n\n  const handleEditClick = (template) => {\n    setTemplateToEdit(template);\n    handleToggle();\n  };\n\n  const submitMutation = useMutation(\n    (body) => put('/users-permissions/email-templates', { 'email-templates': body }),\n    {\n      async onSuccess() {\n        await queryClient.invalidateQueries(['users-permissions', 'email-templates']);\n\n        toggleNotification({\n          type: 'success',\n          message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n        });\n\n        trackUsage('didEditEmailTemplates');\n\n        handleToggle();\n      },\n      onError(error) {\n        toggleNotification({\n          type: 'danger',\n          message: formatAPIError(error),\n        });\n      },\n      refetchActive: true,\n    }\n  );\n\n  const handleSubmit = (body) => {\n    trackUsage('willEditEmailTemplates');\n\n    const editedTemplates = { ...data, [templateToEdit]: body };\n    submitMutation.mutate(editedTemplates);\n  };\n\n  if (isLoading) {\n    return <Page.Loading />;\n  }\n\n  return (\n    <Page.Main aria-busy={submitMutation.isLoading}>\n      <Page.Title>\n        {formatMessage(\n          { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n          {\n            name: formatMessage({\n              id: getTrad('HeaderNav.link.emailTemplates'),\n              defaultMessage: 'Email templates',\n            }),\n          }\n        )}\n      </Page.Title>\n      <Layouts.Header\n        title={formatMessage({\n          id: getTrad('HeaderNav.link.emailTemplates'),\n          defaultMessage: 'Email templates',\n        })}\n      />\n      <Layouts.Content>\n        <EmailTable onEditClick={handleEditClick} canUpdate={canUpdate} />\n        <EmailForm\n          template={data[templateToEdit]}\n          onToggle={handleToggle}\n          open={isModalOpen}\n          onSubmit={handleSubmit}\n        />\n      </Layouts.Content>\n    </Page.Main>\n  );\n};\n\nexport { ProtectedEmailTemplatesPage, EmailTemplatesPage };\n"],"names":["ProtectedEmailTemplatesPage","_jsx","Page","Protect","permissions","PERMISSIONS","readEmailTemplates","EmailTemplatesPage","formatMessage","useIntl","trackUsage","useTracking","notifyStatus","useNotifyAT","toggleNotification","useNotification","queryClient","useQueryClient","get","put","useFetchClient","formatAPIError","useAPIErrorHandler","isModalOpen","setIsModalOpen","React","useState","templateToEdit","setTemplateToEdit","isLoading","isLoadingForPermissions","allowedActions","canUpdate","useRBAC","update","updateEmailTemplates","isLoadingData","data","useQuery","onSuccess","id","getTrad","defaultMessage","onError","error","type","message","handleToggle","prev","handleEditClick","template","submitMutation","useMutation","body","invalidateQueries","refetchActive","handleSubmit","editedTemplates","mutate","Loading","_jsxs","Main","aria-busy","Title","name","Layouts","Header","title","Content","EmailTable","onEditClick","EmailForm","onToggle","open","onSubmit"],"mappings":"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"}