@webitel/ui-sdk 24.4.19 → 24.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/img/sprite/custom-chat-gateway.svg +5 -0
- package/dist/img/sprite/index.js +1 -0
- package/dist/ui-sdk.mjs +1069 -1069
- package/dist/ui-sdk.umd.js +9 -9
- package/package.json +3 -2
- package/src/api/clients/agents/agents.js +292 -0
- package/src/api/clients/buckets/buckets.js +138 -0
- package/src/api/clients/calendars/calendars.js +248 -0
- package/src/api/clients/chatGateways/chatGateways.js +309 -0
- package/src/api/clients/chatGateways/defaults/defaultChatGateway.js +18 -0
- package/src/api/clients/chatGateways/defaults/webChatGateway.js +73 -0
- package/src/api/clients/chatGateways/enums/WebchatAlternativeChannel.enum.js +14 -0
- package/src/api/clients/chatGateways/scripts/generateUri.js +9 -0
- package/src/api/clients/communications/communications.js +162 -0
- package/src/api/clients/flows/flow.js +256 -0
- package/src/api/clients/gateways/defaults/defaultGateway.js +9 -0
- package/src/api/clients/gateways/defaults/registerGateway.js +12 -0
- package/src/api/clients/gateways/defaults/trunkingGateway.js +16 -0
- package/src/api/clients/gateways/gateways.js +204 -0
- package/src/api/clients/index.js +27 -0
- package/src/api/clients/lists/blacklists.js +144 -0
- package/src/api/clients/media/media.js +136 -0
- package/src/api/clients/queues/defaults/processing.js +10 -0
- package/src/api/clients/queues/queues.js +275 -0
- package/src/api/clients/roles/roles.js +213 -0
- package/src/api/clients/users/__tests__/users.spec.js +200 -0
- package/src/api/clients/users/users.js +254 -0
- package/src/api/defaults/getDefaultInstance/getDefaultInstance.js +14 -0
- package/src/api/defaults/getDefaultOpenAPIConfig/getDefaultOpenAPIConfig.js +9 -0
- package/src/api/defaults/index.js +4 -0
- package/src/enums/ChatGatewayProvider/ChatGatewayProvider.enum.js +1 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import deepCopy from 'deep-copy';
|
|
2
|
+
import deepmerge from 'deepmerge';
|
|
3
|
+
import applyTransform, {
|
|
4
|
+
camelToSnake,
|
|
5
|
+
generateUrl,
|
|
6
|
+
merge,
|
|
7
|
+
mergeEach,
|
|
8
|
+
notify,
|
|
9
|
+
sanitize,
|
|
10
|
+
snakeToCamel,
|
|
11
|
+
starToSearch,
|
|
12
|
+
} from '../../transformers';
|
|
13
|
+
import {
|
|
14
|
+
getDefaultGetListResponse,
|
|
15
|
+
getDefaultGetParams,
|
|
16
|
+
getDefaultInstance,
|
|
17
|
+
} from '../../defaults';
|
|
18
|
+
import ChatGatewayProvider from '../../../enums/ChatGatewayProvider/ChatGatewayProvider.enum';
|
|
19
|
+
import webChatGateway from './defaults/webChatGateway';
|
|
20
|
+
|
|
21
|
+
const instance = getDefaultInstance();
|
|
22
|
+
|
|
23
|
+
const baseUrl = '/chat/bots';
|
|
24
|
+
const fieldsToSend = [
|
|
25
|
+
'name',
|
|
26
|
+
'uri',
|
|
27
|
+
'flow',
|
|
28
|
+
'enabled',
|
|
29
|
+
'provider',
|
|
30
|
+
'metadata',
|
|
31
|
+
'updates',
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const convertWebchatSeconds = (num) => `${num}s`;
|
|
35
|
+
|
|
36
|
+
const parseTimeoutSeconds = (item) => (item.includes('s')
|
|
37
|
+
? parseInt(item.replace('/s', '/'), 10)
|
|
38
|
+
: +item);
|
|
39
|
+
|
|
40
|
+
const webchatRequestConverter = (data) => {
|
|
41
|
+
const copy = deepCopy(data);
|
|
42
|
+
if (data.metadata.readTimeout) {
|
|
43
|
+
copy.metadata.readTimeout = convertWebchatSeconds(data.metadata.readTimeout);
|
|
44
|
+
}
|
|
45
|
+
if (data.metadata.writeTimeout) {
|
|
46
|
+
copy.metadata.writeTimeout = convertWebchatSeconds(data.metadata.writeTimeout);
|
|
47
|
+
}
|
|
48
|
+
if (data.metadata.handshakeTimeout) {
|
|
49
|
+
copy.metadata.handshakeTimeout = convertWebchatSeconds(data.metadata.handshakeTimeout);
|
|
50
|
+
}
|
|
51
|
+
if (data.metadata.allowOrigin) {
|
|
52
|
+
copy.metadata.allowOrigin = data.metadata.allowOrigin.join();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
copy.metadata.view = JSON.stringify(data.metadata.view);
|
|
56
|
+
copy.metadata.chat = JSON.stringify(data.metadata.chat);
|
|
57
|
+
copy.metadata.appointment = JSON.stringify(data.metadata.appointment);
|
|
58
|
+
copy.metadata.alternativeChannels = JSON.stringify(data.metadata.alternativeChannels);
|
|
59
|
+
copy.metadata.call = JSON.stringify(data.metadata.call);
|
|
60
|
+
|
|
61
|
+
if (copy.metadata.captcha.enabled) {
|
|
62
|
+
copy.metadata.captcha = JSON.stringify(data.metadata.captcha);
|
|
63
|
+
} else {
|
|
64
|
+
delete copy.metadata.captcha;
|
|
65
|
+
}
|
|
66
|
+
copy.metadata._btnCodeDirty = data.metadata._btnCodeDirty.toString();
|
|
67
|
+
return copy;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const messengerRequestConverter = (data) => {
|
|
71
|
+
const copy = deepCopy(data);
|
|
72
|
+
copy.metadata.instagramComments = data.metadata.instagramComments.toString();
|
|
73
|
+
copy.metadata.instagramMentions = data.metadata.instagramMentions.toString();
|
|
74
|
+
return copy;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const viberRequestConverter = (item) => {
|
|
78
|
+
const copy = deepCopy(item);
|
|
79
|
+
copy.metadata['btn.back.color'] = item.metadata.btnBackColor;
|
|
80
|
+
delete copy.metadata.btnBackColor;
|
|
81
|
+
copy.metadata['btn.font.color'] = item.metadata.btnFontColor;
|
|
82
|
+
delete copy.metadata.btnFontColor;
|
|
83
|
+
return copy;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const webChatResponseConverter = (data) => {
|
|
87
|
+
const copy = deepCopy(data);
|
|
88
|
+
copy.metadata.allowOrigin = data.metadata.allowOrigin
|
|
89
|
+
? data.metadata.allowOrigin.split(',')
|
|
90
|
+
: [];
|
|
91
|
+
if (data.metadata.readTimeout) {
|
|
92
|
+
copy.metadata.readTimeout = parseTimeoutSeconds(data.metadata.readTimeout);
|
|
93
|
+
}
|
|
94
|
+
if (data.metadata.writeTimeout) {
|
|
95
|
+
copy.metadata.writeTimeout = parseTimeoutSeconds(data.metadata.writeTimeout);
|
|
96
|
+
}
|
|
97
|
+
if (data.metadata.handshakeTimeout) {
|
|
98
|
+
copy.metadata.handshakeTimeout = parseTimeoutSeconds(data.metadata.handshakeTimeout);
|
|
99
|
+
}
|
|
100
|
+
if (data.metadata.view) {
|
|
101
|
+
copy.metadata.view = JSON.parse(data.metadata.view);
|
|
102
|
+
}
|
|
103
|
+
if (data.metadata.chat) {
|
|
104
|
+
copy.metadata.chat = JSON.parse(data.metadata.chat);
|
|
105
|
+
}
|
|
106
|
+
if (data.metadata.appointment) {
|
|
107
|
+
copy.metadata.appointment = JSON.parse(data.metadata.appointment);
|
|
108
|
+
}
|
|
109
|
+
if (data.metadata.alternativeChannels) {
|
|
110
|
+
copy.metadata.alternativeChannels = JSON.parse(data.metadata.alternativeChannels);
|
|
111
|
+
}
|
|
112
|
+
if (data.metadata.call) {
|
|
113
|
+
copy.metadata.call = JSON.parse(data.metadata.call);
|
|
114
|
+
}
|
|
115
|
+
if (data.metadata.captcha) {
|
|
116
|
+
copy.metadata.captcha = JSON.parse(data.metadata.captcha);
|
|
117
|
+
}
|
|
118
|
+
copy.metadata._btnCodeDirty = (data.metadata._btnCodeDirty === 'true');
|
|
119
|
+
|
|
120
|
+
return deepmerge(webChatGateway(), copy);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const messengerResponseConverter = (item) => {
|
|
124
|
+
const copy = deepCopy(item);
|
|
125
|
+
copy.metadata.instagramComments = item.metadata.instagramComments === 'true';
|
|
126
|
+
copy.metadata.instagramMentions = item.metadata.instagramMentions === 'true';
|
|
127
|
+
return copy;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const viberResponseConverter = (item) => {
|
|
131
|
+
const copy = deepCopy(item);
|
|
132
|
+
if (item.metadata['btn.back.color']) copy.metadata.btnBackColor = item.metadata['btn.back.color'];
|
|
133
|
+
if (item.metadata['btn.font.color']) copy.metadata.btnFontColor = item.metadata['btn.font.color'];
|
|
134
|
+
return copy;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const preRequestHandler = (item) => {
|
|
138
|
+
switch (item.provider) {
|
|
139
|
+
case ChatGatewayProvider.WEBCHAT:
|
|
140
|
+
return webchatRequestConverter(item);
|
|
141
|
+
case ChatGatewayProvider.MESSENGER:
|
|
142
|
+
return messengerRequestConverter(item);
|
|
143
|
+
case ChatGatewayProvider.VIBER:
|
|
144
|
+
return viberRequestConverter(item);
|
|
145
|
+
default:
|
|
146
|
+
return item;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
const getChatGatewayList = async (params) => {
|
|
151
|
+
const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
|
|
152
|
+
|
|
153
|
+
const defaultObject = {
|
|
154
|
+
// default object prototype, to merge response with it to get all fields
|
|
155
|
+
enabled: false,
|
|
156
|
+
name: '',
|
|
157
|
+
uri: '',
|
|
158
|
+
flow: {},
|
|
159
|
+
provider: '',
|
|
160
|
+
metadata: {},
|
|
161
|
+
updates: {
|
|
162
|
+
title: '',
|
|
163
|
+
close: '',
|
|
164
|
+
join: '',
|
|
165
|
+
left: '',
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const url = applyTransform(params, [
|
|
170
|
+
merge(getDefaultGetParams()),
|
|
171
|
+
starToSearch('search'),
|
|
172
|
+
(params) => ({ ...params, q: params.search }),
|
|
173
|
+
sanitize(fieldsToSend),
|
|
174
|
+
camelToSnake(),
|
|
175
|
+
generateUrl(baseUrl),
|
|
176
|
+
]);
|
|
177
|
+
try {
|
|
178
|
+
const response = await instance.get(url);
|
|
179
|
+
const { items, next } = applyTransform(response.data, [
|
|
180
|
+
snakeToCamel(),
|
|
181
|
+
merge(getDefaultGetListResponse()),
|
|
182
|
+
]);
|
|
183
|
+
return {
|
|
184
|
+
items: applyTransform(items, [
|
|
185
|
+
mergeEach(defaultObject),
|
|
186
|
+
]),
|
|
187
|
+
next,
|
|
188
|
+
};
|
|
189
|
+
} catch (err) {
|
|
190
|
+
throw applyTransform(err, [
|
|
191
|
+
notify,
|
|
192
|
+
]);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
const getChatGateway = async ({ itemId: id }) => {
|
|
197
|
+
|
|
198
|
+
const itemResponseHandler = (response) => {
|
|
199
|
+
switch (response.provider) {
|
|
200
|
+
case ChatGatewayProvider.WEBCHAT:
|
|
201
|
+
return webChatResponseConverter(response);
|
|
202
|
+
case ChatGatewayProvider.MESSENGER:
|
|
203
|
+
return messengerResponseConverter(response);
|
|
204
|
+
case ChatGatewayProvider.VIBER:
|
|
205
|
+
return viberResponseConverter(response);
|
|
206
|
+
default:
|
|
207
|
+
return response;
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
const url = `${baseUrl}/${id}`;
|
|
212
|
+
|
|
213
|
+
try {
|
|
214
|
+
const response = await instance.get(url);
|
|
215
|
+
return applyTransform(response.data, [
|
|
216
|
+
snakeToCamel(),
|
|
217
|
+
itemResponseHandler,
|
|
218
|
+
]);
|
|
219
|
+
} catch (err) {
|
|
220
|
+
throw applyTransform(err, [
|
|
221
|
+
notify,
|
|
222
|
+
]);
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
const addChatGateway = async ({ itemInstance }) => {
|
|
227
|
+
const item = applyTransform(itemInstance, [
|
|
228
|
+
preRequestHandler,
|
|
229
|
+
sanitize(fieldsToSend),
|
|
230
|
+
camelToSnake(),
|
|
231
|
+
]);
|
|
232
|
+
try {
|
|
233
|
+
const response = await instance.post(baseUrl, item);
|
|
234
|
+
return applyTransform(response.data, [
|
|
235
|
+
snakeToCamel(),
|
|
236
|
+
]);
|
|
237
|
+
} catch (err) {
|
|
238
|
+
throw applyTransform(err, [
|
|
239
|
+
notify,
|
|
240
|
+
]);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
const updateChatGateway = async ({ itemInstance, itemId: id }) => {
|
|
245
|
+
const item = applyTransform(itemInstance, [
|
|
246
|
+
preRequestHandler,
|
|
247
|
+
sanitize(fieldsToSend),
|
|
248
|
+
camelToSnake(),
|
|
249
|
+
]);
|
|
250
|
+
|
|
251
|
+
const url = `${baseUrl}/${id}`;
|
|
252
|
+
try {
|
|
253
|
+
const response = await instance.put(url, item);
|
|
254
|
+
return applyTransform(response.data, [
|
|
255
|
+
snakeToCamel(),
|
|
256
|
+
]);
|
|
257
|
+
} catch (err) {
|
|
258
|
+
throw applyTransform(err, [
|
|
259
|
+
notify,
|
|
260
|
+
]);
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
const patchChatGateway = async ({ changes, id }) => {
|
|
265
|
+
const body = applyTransform(changes, [
|
|
266
|
+
sanitize(fieldsToSend),
|
|
267
|
+
camelToSnake(),
|
|
268
|
+
]);
|
|
269
|
+
const url = `${baseUrl}/${id}`;
|
|
270
|
+
try {
|
|
271
|
+
const response = await instance.patch(url, body);
|
|
272
|
+
return applyTransform(response.data, [
|
|
273
|
+
snakeToCamel(),
|
|
274
|
+
]);
|
|
275
|
+
} catch (err) {
|
|
276
|
+
throw applyTransform(err, [
|
|
277
|
+
notify,
|
|
278
|
+
]);
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
const deleteChatGateway = async ({ id }) => {
|
|
283
|
+
const url = `${baseUrl}/${id}`;
|
|
284
|
+
try {
|
|
285
|
+
const response = await instance.delete(url);
|
|
286
|
+
return applyTransform(response.data, []);
|
|
287
|
+
} catch (err) {
|
|
288
|
+
throw applyTransform(err, [
|
|
289
|
+
notify,
|
|
290
|
+
]);
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
const getLookup = (params) => getChatGatewayList({
|
|
295
|
+
...params,
|
|
296
|
+
fields: params.fields || ['id', 'name'],
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
const ChatGatewaysAPI = {
|
|
300
|
+
getList: getChatGatewayList,
|
|
301
|
+
get: getChatGateway,
|
|
302
|
+
add: addChatGateway,
|
|
303
|
+
patch: patchChatGateway,
|
|
304
|
+
update: updateChatGateway,
|
|
305
|
+
delete: deleteChatGateway,
|
|
306
|
+
getLookup,
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
export default ChatGatewaysAPI;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import generateUri from '../scripts/generateUri';
|
|
2
|
+
|
|
3
|
+
const defaultChatGateway = () => ({
|
|
4
|
+
name: '',
|
|
5
|
+
uri: generateUri(),
|
|
6
|
+
flow: {},
|
|
7
|
+
enabled: false,
|
|
8
|
+
provider: '',
|
|
9
|
+
metadata: {},
|
|
10
|
+
updates: {
|
|
11
|
+
title: '',
|
|
12
|
+
close: '',
|
|
13
|
+
join: '',
|
|
14
|
+
left: '',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export default defaultChatGateway;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import ChatGatewayProvider from '../../../../enums/ChatGatewayProvider/ChatGatewayProvider.enum';
|
|
2
|
+
import WebchatAlternativeChannel from '../enums/WebchatAlternativeChannel.enum';
|
|
3
|
+
import defaultChatGateway from '../defaults/defaultChatGateway';
|
|
4
|
+
|
|
5
|
+
const webChatGateway = (_btnCodeDirty = false) => ({
|
|
6
|
+
...defaultChatGateway(),
|
|
7
|
+
provider: ChatGatewayProvider.WEBCHAT,
|
|
8
|
+
metadata: {
|
|
9
|
+
// start: these fields related to chat functionality but should be in metadata for backend
|
|
10
|
+
allowOrigin: [],
|
|
11
|
+
readTimeout: '30',
|
|
12
|
+
writeTimeout: '1',
|
|
13
|
+
handshakeTimeout: '10',
|
|
14
|
+
mediaMaxSize: `${10 * 1024 * 1024}`, // 10mb
|
|
15
|
+
// end
|
|
16
|
+
|
|
17
|
+
_btnCodeDirty, // inner flag, if true, btn "copy code" is highlighted
|
|
18
|
+
view: {
|
|
19
|
+
borderRadiusStyle: '',
|
|
20
|
+
lang: 'en',
|
|
21
|
+
btnOpacity: '',
|
|
22
|
+
logoUrl: '',
|
|
23
|
+
accentColor: '',
|
|
24
|
+
position: '',
|
|
25
|
+
},
|
|
26
|
+
captcha: {
|
|
27
|
+
enabled: false,
|
|
28
|
+
sitekey: '',
|
|
29
|
+
secret: '',
|
|
30
|
+
threshold: 0.5,
|
|
31
|
+
showFlag: false,
|
|
32
|
+
},
|
|
33
|
+
chat: {
|
|
34
|
+
enabled: true,
|
|
35
|
+
timeoutIsActive: false,
|
|
36
|
+
openTimeout: '',
|
|
37
|
+
url: '',
|
|
38
|
+
},
|
|
39
|
+
appointment: {
|
|
40
|
+
enabled: false,
|
|
41
|
+
url: '',
|
|
42
|
+
queue: {},
|
|
43
|
+
communicationType: {},
|
|
44
|
+
duration: '30m',
|
|
45
|
+
days: 3,
|
|
46
|
+
availableAgents: 1,
|
|
47
|
+
successTitle: '',
|
|
48
|
+
successSubtitle: '',
|
|
49
|
+
showDefaultHeading: true,
|
|
50
|
+
showEmailField: false,
|
|
51
|
+
showMessageField: false,
|
|
52
|
+
},
|
|
53
|
+
call: {
|
|
54
|
+
enabled: false,
|
|
55
|
+
url: '',
|
|
56
|
+
flow: {},
|
|
57
|
+
id: '',
|
|
58
|
+
},
|
|
59
|
+
alternativeChannels: Object
|
|
60
|
+
.values(WebchatAlternativeChannel)
|
|
61
|
+
.reduce((channels, channel) => (
|
|
62
|
+
{
|
|
63
|
+
...channels,
|
|
64
|
+
[channel]: {
|
|
65
|
+
url: '',
|
|
66
|
+
enabled: false,
|
|
67
|
+
},
|
|
68
|
+
}
|
|
69
|
+
), {}),
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
export default webChatGateway;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* Difference between MessangerType enum and WebchatAlternativeChannel:
|
|
2
|
+
* MessangerType - backend fields naming, provider
|
|
3
|
+
* WebchatAlternativeChannel - front-end only "simple" channel naming
|
|
4
|
+
* */
|
|
5
|
+
|
|
6
|
+
const WebchatAlternativeChannel = Object.freeze({
|
|
7
|
+
VIBER: 'viber',
|
|
8
|
+
WHATSAPP: 'whatsapp',
|
|
9
|
+
TELEGRAM: 'telegram',
|
|
10
|
+
MESSENGER: 'messenger',
|
|
11
|
+
EMAIL: 'email',
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
export default WebchatAlternativeChannel;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getDefaultGetListResponse,
|
|
3
|
+
getDefaultGetParams,
|
|
4
|
+
getDefaultOpenAPIConfig,
|
|
5
|
+
getDefaultInstance,
|
|
6
|
+
} from '../../defaults';
|
|
7
|
+
import applyTransform, {
|
|
8
|
+
camelToSnake,
|
|
9
|
+
merge, mergeEach,
|
|
10
|
+
notify,
|
|
11
|
+
sanitize,
|
|
12
|
+
snakeToCamel,
|
|
13
|
+
starToSearch,
|
|
14
|
+
} from '../../transformers';
|
|
15
|
+
import { CommunicationTypeServiceApiFactory } from 'webitel-sdk';
|
|
16
|
+
|
|
17
|
+
const instance = getDefaultInstance();
|
|
18
|
+
const configuration = getDefaultOpenAPIConfig();
|
|
19
|
+
|
|
20
|
+
const communicationService = new CommunicationTypeServiceApiFactory(configuration, '', instance);
|
|
21
|
+
|
|
22
|
+
const getCommunicationsList = async (params) => {
|
|
23
|
+
const defaultObject = {
|
|
24
|
+
default: false,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const {
|
|
28
|
+
page,
|
|
29
|
+
size,
|
|
30
|
+
search,
|
|
31
|
+
sort,
|
|
32
|
+
fields,
|
|
33
|
+
id,
|
|
34
|
+
} = applyTransform(params, [
|
|
35
|
+
merge(getDefaultGetParams()),
|
|
36
|
+
starToSearch('search'),
|
|
37
|
+
]);
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
const response = await communicationService.searchCommunicationType(
|
|
41
|
+
page,
|
|
42
|
+
size,
|
|
43
|
+
search,
|
|
44
|
+
sort,
|
|
45
|
+
fields,
|
|
46
|
+
id,
|
|
47
|
+
);
|
|
48
|
+
const { items, next } = applyTransform(response.data, [
|
|
49
|
+
snakeToCamel(),
|
|
50
|
+
merge(getDefaultGetListResponse()),
|
|
51
|
+
]);
|
|
52
|
+
return {
|
|
53
|
+
items: applyTransform(items, [
|
|
54
|
+
mergeEach(defaultObject),
|
|
55
|
+
]),
|
|
56
|
+
next,
|
|
57
|
+
};
|
|
58
|
+
} catch (err) {
|
|
59
|
+
throw applyTransform(err, [
|
|
60
|
+
|
|
61
|
+
notify,
|
|
62
|
+
]);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const getCommunication = async ({ itemId: id }) => {
|
|
67
|
+
try {
|
|
68
|
+
const response = await communicationService.readCommunicationType(id);
|
|
69
|
+
return applyTransform(response.data, [
|
|
70
|
+
snakeToCamel(),
|
|
71
|
+
]);
|
|
72
|
+
} catch (err) {
|
|
73
|
+
throw applyTransform(err, [
|
|
74
|
+
|
|
75
|
+
notify,
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const fieldsToSend = ['code', 'name', 'description', 'channel', 'default'];
|
|
81
|
+
|
|
82
|
+
const addCommunication = async ({ itemInstance }) => {
|
|
83
|
+
const item = applyTransform(itemInstance, [
|
|
84
|
+
sanitize(fieldsToSend),
|
|
85
|
+
camelToSnake(),
|
|
86
|
+
]);
|
|
87
|
+
try {
|
|
88
|
+
const response = await communicationService.createCommunicationType(item);
|
|
89
|
+
return applyTransform(response.data, [
|
|
90
|
+
snakeToCamel(),
|
|
91
|
+
]);
|
|
92
|
+
} catch (err) {
|
|
93
|
+
throw applyTransform(err, [
|
|
94
|
+
|
|
95
|
+
notify,
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const patchCommunication = async ({ changes, id }) => {
|
|
101
|
+
const body = applyTransform(changes, [
|
|
102
|
+
sanitize(fieldsToSend),
|
|
103
|
+
camelToSnake(),
|
|
104
|
+
]);
|
|
105
|
+
try {
|
|
106
|
+
const response = await communicationService.patchCommunicationType(id, body);
|
|
107
|
+
return applyTransform(response.data, [
|
|
108
|
+
snakeToCamel(),
|
|
109
|
+
]);
|
|
110
|
+
} catch (err) {
|
|
111
|
+
throw applyTransform(err, [
|
|
112
|
+
notify,
|
|
113
|
+
]);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const updateCommunication = async ({ itemInstance, itemId: id }) => {
|
|
118
|
+
const item = applyTransform(itemInstance, [
|
|
119
|
+
sanitize(fieldsToSend),
|
|
120
|
+
camelToSnake(),
|
|
121
|
+
]);
|
|
122
|
+
try {
|
|
123
|
+
const response = await communicationService.updateCommunicationType(id, item);
|
|
124
|
+
return applyTransform(response.data, [
|
|
125
|
+
snakeToCamel(),
|
|
126
|
+
]);
|
|
127
|
+
} catch (err) {
|
|
128
|
+
throw applyTransform(err, [
|
|
129
|
+
|
|
130
|
+
notify,
|
|
131
|
+
]);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
const deleteCommunication = async ({ id }) => {
|
|
136
|
+
try {
|
|
137
|
+
const response = await communicationService.deleteCommunicationType(id);
|
|
138
|
+
return applyTransform(response.data, []);
|
|
139
|
+
} catch (err) {
|
|
140
|
+
throw applyTransform(err, [
|
|
141
|
+
|
|
142
|
+
notify,
|
|
143
|
+
]);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const getCommunicationsLookup = (params) => getCommunicationsList({
|
|
148
|
+
...params,
|
|
149
|
+
fields: params.fields || ['id', 'name'],
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
const CommunicationsAPI = {
|
|
153
|
+
getList: getCommunicationsList,
|
|
154
|
+
get: getCommunication,
|
|
155
|
+
add: addCommunication,
|
|
156
|
+
patch: patchCommunication,
|
|
157
|
+
update: updateCommunication,
|
|
158
|
+
delete: deleteCommunication,
|
|
159
|
+
getLookup: getCommunicationsLookup,
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export default CommunicationsAPI;
|