diff --git a/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx b/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx index 5fb5bf4ee7..6d30bd447a 100644 --- a/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx +++ b/packages/core/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.tsx @@ -103,7 +103,32 @@ const ListPage = () => { } }; - const confirmDelete = async () => { + const deleteWebhook = async (id: string) => { + try { + const res = await deleteManyWebhooks({ + ids: [id], + }); + + if ('error' in res) { + toggleNotification({ + type: 'danger', + message: formatAPIError(res.error), + }); + + return; + } + } catch { + toggleNotification({ + type: 'danger', + message: formatMessage({ + id: 'notification.error', + defaultMessage: 'An error occurred', + }), + }); + } + }; + + const confirmBulkDelete = async () => { try { const res = await deleteManyWebhooks({ ids: webhooksToDelete, @@ -349,20 +374,11 @@ const ListPage = () => { )} {canDelete && ( - { - e.stopPropagation(); - setWebhooksToDelete([webhook.id]); - setShowModal(true); + { + deleteWebhook(webhook.id); }} - label={formatMessage({ - id: 'Settings.webhooks.events.delete', - defaultMessage: 'Delete webhook', - })} - borderWidth={0} - > - - + /> )} @@ -392,12 +408,52 @@ const ListPage = () => { - + ); }; +/* ------------------------------------------------------------------------------------------------- + * DeleteActionButton + * -----------------------------------------------------------------------------------------------*/ + +type DeleteActionButtonProps = { + onDelete: () => void; +}; + +const DeleteActionButton = ({ onDelete }: DeleteActionButtonProps) => { + const [showModal, setShowModal] = React.useState(false); + const { formatMessage } = useIntl(); + + return ( + <> + { + e.stopPropagation(); + setShowModal(true); + }} + label={formatMessage({ + id: 'Settings.webhooks.events.delete', + defaultMessage: 'Delete webhook', + })} + borderWidth={0} + > + + + + + { + e?.stopPropagation(); + onDelete(); + }} + /> + + + ); +}; + /* ------------------------------------------------------------------------------------------------- * ProtectedListView * -----------------------------------------------------------------------------------------------*/ diff --git a/packages/core/strapi/src/node/create-build-context.ts b/packages/core/strapi/src/node/create-build-context.ts index bbdc4a4cd9..898307dfa3 100644 --- a/packages/core/strapi/src/node/create-build-context.ts +++ b/packages/core/strapi/src/node/create-build-context.ts @@ -131,7 +131,7 @@ const createBuildContext = async ({ const features = strapiInstance.config.get('features', undefined); - const { bundler = 'webpack', ...restOptions } = options; + const { bundler = 'vite', ...restOptions } = options; const buildContext = { appDir,