Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 744d0da

Browse files
committed
Adds ability to trigger custom actions
1 parent e21cfd5 commit 744d0da

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

‎client/src/hocs/withResource.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
createResource,
1111
updateResource,
1212
deleteResource,
13+
resourceAction,
1314
getOne,
1415
getError,
1516
} from '../store/api';
@@ -48,6 +49,8 @@ const withResource = (resourceType, resourceMeta = {}) => (WrappedComponent) =>
4849
dispatch(updateResource(resourceType, payload, { ...resourceMeta, ...meta })),
4950
deleteResource: (payload, meta) =>
5051
dispatch(deleteResource(resourceType, payload, { ...resourceMeta, ...meta })),
52+
resourceAction: (payload, meta) =>
53+
dispatch(resourceAction(resourceType, payload, { ...resourceMeta, ...meta })),
5154
});
5255

5356
return connect(mapStateToProps, mapDispatchToProps)(enhance(WrappedComponent));

‎client/src/hocs/withResourceList.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
createResource,
1111
updateResource,
1212
deleteResource,
13+
resourceAction,
1314
getList,
1415
} from '../store/api';
1516

@@ -63,6 +64,8 @@ const withResourceList = (resourceType, resourceMeta = {}) => (WrappedComponent)
6364
dispatch(updateResource(resourceType, payload, { ...resourceMeta, ...meta })),
6465
deleteResource: (payload, meta) =>
6566
dispatch(deleteResource(resourceType, payload, { ...resourceMeta, ...meta })),
67+
resourceAction: (payload, meta) =>
68+
dispatch(resourceAction(resourceType, payload, { ...resourceMeta, ...meta }))
6669
});
6770

6871
return connect(mapStateToProps, mapDispatchToProps)(enhance(WrappedComponent));

‎client/src/store/api/actions.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const GET_MANY = createAsyncActionType('GET_MANY');
1919
export const CREATE = createAsyncActionType('CREATE');
2020
export const UPDATE = createAsyncActionType('UPDATE');
2121
export const DELETE = createAsyncActionType('DELETE');
22+
export const ACTION = createAsyncActionType('ACTION');
2223

2324
export const fetchOne = createAsyncAction(GET_ONE, (payload, meta) => client({
2425
url: `${meta.url}/${payload.id}`,
@@ -55,3 +56,10 @@ export const deleteResource = createAsyncAction(DELETE, (payload, meta) => clien
5556
url: `${meta.url}/${payload.id}`,
5657
method: 'DELETE',
5758
}).then(() => ({ data: payload })));
59+
60+
export const resourceAction = createAsyncAction(ACTION, (payload, meta = {}) => client({
61+
url: meta.url,
62+
params: { include: meta.include },
63+
method: meta.method || 'PUT',
64+
data: JSON.stringify(payload),
65+
}).then(normalizeResponse).catch(normalizeErrors));

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /