diff --git a/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/index.js b/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/index.js new file mode 100644 index 0000000000..1680411b83 --- /dev/null +++ b/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/index.js @@ -0,0 +1,99 @@ +import React, { useEffect, useReducer, memo } from 'react'; +import PropTypes from 'prop-types'; +//import { request } from 'strapi-helper-plugin'; +import WebhooksDataManagerContext from '../../contexts/WebhooksDataManager'; +import init from './init'; +import reducer, { initialState } from './reducer'; + +const WebhooksDataManagerProvider = ({ children }) => { + const [reducerState, dispatch] = useReducer(reducer, initialState, init); + const { webhooks } = reducerState.toJS(); + + useEffect(() => { + const fetchData = async () => { + try { + // const { data } = await request(`/admin/webhooks`, { + // method: 'GET', + // }); + + const list = [ + { + id: 0, + name: 'gatsby', + isEnabled: false, + url: 'http://thisisanexample.com/1234867874', + headers: { + Authorisation: 'x-secret', + }, + hooks: ['createEntry', 'editEntry', 'deleteEntry', 'createMedia'], + links: [ + { + icon: 'pencil', + onClick: () => { + console.log('edit'); + }, + }, + { + icon: 'trash', + onClick: () => { + console.log('delete'); + }, + }, + ], + }, + { + id: 1, + name: 'gatsby', + isEnabled: false, + url: 'http://thisisanexample.com/1234867874', + headers: { + Authorisation: 'x-secret', + }, + hooks: ['createEntry', 'editEntry', 'deleteEntry', 'createMedia'], + links: [ + { + icon: 'pencil', + onClick: () => { + console.log('edit'); + }, + }, + { + icon: 'trash', + onClick: () => { + console.log('delete'); + }, + }, + ], + }, + ]; + + dispatch({ + type: 'GET_DATA_SUCCEEDED', + data: list, + }); + } catch (err) { + if (err.code !== 20) { + strapi.notification.error('notification.error'); + } + } + }; + + fetchData(); + }, []); + + return ( + + {children} + + ); +}; + +WebhooksDataManagerProvider.propTypes = { + children: PropTypes.node.isRequired, +}; + +export default memo(WebhooksDataManagerProvider); diff --git a/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/init.js b/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/init.js new file mode 100644 index 0000000000..18c17c07c6 --- /dev/null +++ b/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/init.js @@ -0,0 +1,5 @@ +function init(initialState) { + return initialState; +} + +export default init; diff --git a/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/reducer.js b/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/reducer.js new file mode 100644 index 0000000000..ead88ad00f --- /dev/null +++ b/packages/strapi-admin/admin/src/containers/WebhooksDataManagerProvider/reducer.js @@ -0,0 +1,17 @@ +import { fromJS } from 'immutable'; + +const initialState = fromJS({ + webhooks: [], +}); + +const reducer = (state, action) => { + switch (action.type) { + case 'GET_DATA_SUCCEEDED': + return state.update('webhooks', () => fromJS(action.data)); + default: + return state; + } +}; + +export default reducer; +export { initialState }; diff --git a/packages/strapi-admin/admin/src/contexts/Webhooks/index.js b/packages/strapi-admin/admin/src/contexts/Webhooks/index.js new file mode 100644 index 0000000000..f55dbfb280 --- /dev/null +++ b/packages/strapi-admin/admin/src/contexts/Webhooks/index.js @@ -0,0 +1,5 @@ +import { createContext } from 'react'; + +const WebhooksContext = createContext(); + +export default WebhooksContext; diff --git a/packages/strapi-admin/admin/src/contexts/WebhooksDataManager/index.js b/packages/strapi-admin/admin/src/contexts/WebhooksDataManager/index.js new file mode 100644 index 0000000000..6919f4e530 --- /dev/null +++ b/packages/strapi-admin/admin/src/contexts/WebhooksDataManager/index.js @@ -0,0 +1,5 @@ +import { createContext } from 'react'; + +const WebhooksDataManagerContext = createContext(); + +export default WebhooksDataManagerContext; diff --git a/packages/strapi-admin/admin/src/hooks/useDataManager.js b/packages/strapi-admin/admin/src/hooks/useDataManager.js new file mode 100644 index 0000000000..b59e83d6f6 --- /dev/null +++ b/packages/strapi-admin/admin/src/hooks/useDataManager.js @@ -0,0 +1,6 @@ +import { useContext } from 'react'; +import WebhooksDataManagerContext from '../contexts/WebhooksDataManager'; + +const useDataManager = () => useContext(WebhooksDataManagerContext); + +export default useDataManager;