mirror of
https://github.com/strapi/strapi.git
synced 2025-10-03 20:33:21 +00:00
create webhook
This commit is contained in:
parent
3a00197b6e
commit
b0d0c6600b
@ -11,7 +11,7 @@ import Wrapper from './Wrapper';
|
|||||||
import keys from './keys';
|
import keys from './keys';
|
||||||
|
|
||||||
const HeadersInput = ({ onClick, onChange, name, value }) => {
|
const HeadersInput = ({ onClick, onChange, name, value }) => {
|
||||||
const handleChange = (selected, name) => {
|
const handleChangeKey = (selected, name) => {
|
||||||
if (selected === null) {
|
if (selected === null) {
|
||||||
onChange({ target: { name, value: '' } });
|
onChange({ target: { name, value: '' } });
|
||||||
} else {
|
} else {
|
||||||
@ -63,14 +63,18 @@ const HeadersInput = ({ onClick, onChange, name, value }) => {
|
|||||||
<section>
|
<section>
|
||||||
<CreatableSelect
|
<CreatableSelect
|
||||||
isClearable
|
isClearable
|
||||||
onChange={e => handleChange(e, `${name}.${index}.key`)}
|
onChange={e => handleChangeKey(e, `${name}.${index}.key`)}
|
||||||
options={options}
|
options={options}
|
||||||
name={`${name}.${index}.key`}
|
name={`${name}.${index}.key`}
|
||||||
value={optionFormat(key)}
|
value={optionFormat(key)}
|
||||||
/>
|
/>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<InputText value={value} name={`${name}.${index}.value`} />
|
<InputText
|
||||||
|
value={value}
|
||||||
|
name={`${name}.${index}.value`}
|
||||||
|
onChange={onChange}
|
||||||
|
/>
|
||||||
</section>
|
</section>
|
||||||
<div>
|
<div>
|
||||||
<CircleButton
|
<CircleButton
|
||||||
|
@ -36,7 +36,7 @@ const TriggerContainer = ({ isPending, onCancel, response }) => {
|
|||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<td>Error 403</td>
|
<td>Error 403</td>
|
||||||
<td>{error}</td>
|
<td title={{ error }}>{error}</td>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
import React, { useEffect, useReducer } from 'react';
|
import React, { useEffect, useReducer } from 'react';
|
||||||
import { useLocation } from 'react-router-dom';
|
import { useLocation } from 'react-router-dom';
|
||||||
import { isEmpty, isEqual } from 'lodash';
|
import { cloneDeep, isEmpty, isEqual, set } from 'lodash';
|
||||||
import { Header } from '@buffetjs/custom';
|
import { Header } from '@buffetjs/custom';
|
||||||
import { Play } from '@buffetjs/icons';
|
import { Play } from '@buffetjs/icons';
|
||||||
import { request, useGlobalContext } from 'strapi-helper-plugin';
|
import { request, useGlobalContext } from 'strapi-helper-plugin';
|
||||||
@ -66,6 +66,8 @@ function EditView() {
|
|||||||
: name;
|
: name;
|
||||||
|
|
||||||
const actionsAreDisabled = isEqual(initialWebhook, modifiedWebhook);
|
const actionsAreDisabled = isEqual(initialWebhook, modifiedWebhook);
|
||||||
|
const triggerActionIsDisabled =
|
||||||
|
isCreatingWebhook || (!isCreatingWebhook && !actionsAreDisabled);
|
||||||
|
|
||||||
const handleTrigger = async () => {
|
const handleTrigger = async () => {
|
||||||
dispatch({
|
dispatch({
|
||||||
@ -98,8 +100,7 @@ function EditView() {
|
|||||||
const actions = [
|
const actions = [
|
||||||
{
|
{
|
||||||
color: 'primary',
|
color: 'primary',
|
||||||
disabled:
|
disabled: triggerActionIsDisabled,
|
||||||
isCreatingWebhook || (!isCreatingWebhook && !actionsAreDisabled),
|
|
||||||
type: 'button',
|
type: 'button',
|
||||||
label: formatMessage({
|
label: formatMessage({
|
||||||
id: `Settings.webhooks.trigger`,
|
id: `Settings.webhooks.trigger`,
|
||||||
@ -111,7 +112,18 @@ function EditView() {
|
|||||||
paddingRight: 15,
|
paddingRight: 15,
|
||||||
paddingLeft: 15,
|
paddingLeft: 15,
|
||||||
},
|
},
|
||||||
icon: <Play width="6px" height="7px" />,
|
title: triggerActionIsDisabled
|
||||||
|
? formatMessage({
|
||||||
|
id: `Settings.webhooks.trigger.save`,
|
||||||
|
})
|
||||||
|
: null,
|
||||||
|
icon: (
|
||||||
|
<Play
|
||||||
|
width="6px"
|
||||||
|
height="7px"
|
||||||
|
fill={triggerActionIsDisabled ? '#b4b6ba' : '#ffffff'}
|
||||||
|
/>
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
onClick: () => {},
|
onClick: () => {},
|
||||||
@ -161,8 +173,48 @@ function EditView() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleSubmit = e => {
|
||||||
|
e.preventDefault();
|
||||||
|
createWebhooks();
|
||||||
|
};
|
||||||
|
|
||||||
|
const createWebhooks = async () => {
|
||||||
|
const body = cloneDeep(modifiedWebhook);
|
||||||
|
set(body, 'headers', unformatLayout(modifiedWebhook.headers));
|
||||||
|
|
||||||
|
try {
|
||||||
|
const body = cloneDeep(modifiedWebhook);
|
||||||
|
set(body, 'headers', unformatLayout(modifiedWebhook.headers));
|
||||||
|
|
||||||
|
await request(`/admin/webhooks`, {
|
||||||
|
method: 'POST',
|
||||||
|
body,
|
||||||
|
});
|
||||||
|
|
||||||
|
dispatch({
|
||||||
|
type: 'SUBMIT_SUCCEEDED',
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
strapi.notification.error('notification.error');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// utils
|
||||||
|
const unformatLayout = headers => {
|
||||||
|
const newHeader = headers.reduce((obj, item) => {
|
||||||
|
const { key, value } = item;
|
||||||
|
return {
|
||||||
|
...obj,
|
||||||
|
[key]: value,
|
||||||
|
};
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
return newHeader;
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Wrapper>
|
<Wrapper>
|
||||||
|
<form onSubmit={handleSubmit}>
|
||||||
<Header {...headerProps} />
|
<Header {...headerProps} />
|
||||||
{(isTriggering || !isEmpty(triggerResponse)) && (
|
{(isTriggering || !isEmpty(triggerResponse)) && (
|
||||||
<div className="trigger-wrapper">
|
<div className="trigger-wrapper">
|
||||||
@ -195,6 +247,7 @@ function EditView() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</Wrapper>
|
</Wrapper>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -235,6 +235,7 @@
|
|||||||
"Settings.webhooks.trigger": "Trigger",
|
"Settings.webhooks.trigger": "Trigger",
|
||||||
"Settings.webhooks.trigger.title": "Save before Trigger",
|
"Settings.webhooks.trigger.title": "Save before Trigger",
|
||||||
"Settings.webhooks.trigger.cancel": "Cancel trigger",
|
"Settings.webhooks.trigger.cancel": "Cancel trigger",
|
||||||
|
"Settings.webhooks.trigger.save": "Please save to trigger",
|
||||||
"Settings.webhooks.events.create": "Create",
|
"Settings.webhooks.events.create": "Create",
|
||||||
"Settings.webhooks.events.edit": "Edit",
|
"Settings.webhooks.events.edit": "Edit",
|
||||||
"Settings.webhooks.events.delete": "Delete",
|
"Settings.webhooks.events.delete": "Delete",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user