/
content.js
121 lines (114 loc) · 2.71 KB
/
content.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/**
* Content actions.
* @module actions/content/content
*/
import {
CREATE_CONTENT,
DELETE_CONTENT,
UPDATE_CONTENT,
GET_CONTENT,
ORDER_CONTENT,
} from '../../constants/ActionTypes';
/**
* Create content function.
* @function createContent
* @param {string} url Parent url.
* @param {Object|Array} content Content data.
* @returns {Object} Create content action.
*/
export function createContent(url, content) {
return {
type: CREATE_CONTENT,
request: Array.isArray(content)
? content.map(item => ({ op: 'post', path: url, data: item }))
: { op: 'post', path: url, data: content },
};
}
/**
* Delete content function.
* @function deleteContent
* @param {string|Array} urls Content url(s).
* @returns {Object} Delete content action.
*/
export function deleteContent(urls) {
return {
type: DELETE_CONTENT,
request:
typeof urls === 'string'
? { op: 'del', path: urls }
: urls.map(url => ({ op: 'del', path: url })),
};
}
/**
* Update content function.
* @function updateContent
* @param {string|Array} urls Content url(s).
* @param {Object|Array} content Content data.
* @returns {Object} Update content action.
*/
export function updateContent(urls, content) {
return {
type: UPDATE_CONTENT,
request:
typeof urls === 'string'
? { op: 'patch', path: urls, data: content }
: urls.map((url, index) => ({
op: 'patch',
path: url,
data: content[index],
})),
};
}
/**
* Order content function
* @function orderContent
* @param {string} parent Parent url
* @param {string} url Content url
* @param {string|number} delta Order delta
* @param {Array} subset Subset ids
* @returns {Object} Order content action
*/
export function orderContent(parent, url, delta, subset) {
return {
type: ORDER_CONTENT,
request: {
op: 'patch',
path: parent,
data: { ordering: { obj_id: url, delta, subset_ids: subset } },
},
};
}
/**
* Sort content function
* @function sortContent
* @param {string} url Content url
* @param {string} on Sort on index
* @param {string} order Sort order
* @returns {Object} Sort content action
*/
export function sortContent(url, on, order) {
return {
type: UPDATE_CONTENT,
request: {
op: 'patch',
path: url,
data: { sort: { on, order } },
},
};
}
/**
* Get content function
* @function getContent
* @param {string} url Content url
* @param {string} version Version id
* @returns {Object} Get content action
*/
export function getContent(url, version) {
return {
type: GET_CONTENT,
request: {
op: 'get',
path: `${url}${version ? `/@history/${version}` : ''}?fullobjects`,
},
};
}