@livechat/customer-sdk 4.0.2 → 5.0.1
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/README.md +212 -58
- package/dist/customer-sdk.cjs.js +1473 -1206
- package/dist/customer-sdk.cjs.native.js +1482 -1215
- package/dist/customer-sdk.esm.js +1475 -1207
- package/dist/customer-sdk.js +2088 -1816
- package/dist/customer-sdk.min.js +1 -1
- package/package.json +15 -17
- package/types/actions.d.ts +40 -24
- package/types/clientDataParsers.d.ts +4 -1
- package/types/constants/clientErrorCodes.d.ts +0 -1
- package/types/constants/organizationIds.d.ts +1 -1
- package/types/constants/reduxActions.d.ts +2 -0
- package/types/constants/serverPushActions.d.ts +3 -1
- package/types/constants/serverRequestActions.d.ts +3 -1
- package/types/graylog/index.d.ts +2 -2
- package/types/index.d.ts +27 -9
- package/types/reducer.d.ts +111 -87
- package/types/sendCustomerActions.d.ts +17 -0
- package/types/sendGreetingButtonClicked.d.ts +13 -0
- package/types/serverFrameParser.d.ts +49 -15
- package/types/sideEffects/checkGoals.d.ts +1 -1
- package/types/sideEffects/index.d.ts +4 -3
- package/types/sideStorage.d.ts +3 -2
- package/types/socketClient.d.ts +1 -1
- package/types/socketListener.d.ts +3 -3
- package/types/types/actions.d.ts +13 -3
- package/types/types/clientEntities.d.ts +77 -4
- package/types/types/frames.d.ts +59 -24
- package/types/types/serverEntities.d.ts +78 -3
- package/types/types/state.d.ts +2 -0
- package/types/sendTicketForm.d.ts +0 -14
package/dist/customer-sdk.esm.js
CHANGED
|
@@ -1,59 +1,246 @@
|
|
|
1
1
|
import createAuth, { validateConfig } from '@livechat/customer-auth';
|
|
2
|
+
import { toPairs, pickOwn, isObject, hasOwn, identity, noop, generateUniqueId, mapValues, keyBy, pick, values, last, stringCompare, numericSortBy, uniqBy, flatMap, includes } from '@livechat/data-utils';
|
|
2
3
|
import mitt from '@livechat/mitt';
|
|
3
|
-
import { hasOwn, identity, toPairs, pickOwn, isObject, generateUniqueId, noop, pick, mapValues, keyBy, values, includes, numericSortBy, uniqBy, flatMap, last, stringCompare } from '@livechat/data-utils';
|
|
4
4
|
import { createStore, applyMiddleware } from 'redux';
|
|
5
5
|
import createSideEffectsMiddleware from '@livechat/side-effects-middleware';
|
|
6
6
|
import { promiseDeferred, promiseTry } from '@livechat/promise-utils';
|
|
7
|
-
import createBackoff from '@livechat/backoff';
|
|
8
|
-
import storage from '@livechat/isomorphic-storage';
|
|
9
|
-
import unfetch from 'unfetch';
|
|
10
7
|
import { buildQueryString, removeProtocol } from '@livechat/url-utils';
|
|
8
|
+
import { createAsyncStorage } from '@livechat/isomorphic-storage';
|
|
9
|
+
import unfetch from 'unfetch';
|
|
10
|
+
import createBackoff from '@livechat/backoff';
|
|
11
11
|
import createPlatformClient from '@livechat/platform-client';
|
|
12
12
|
import rawUploadFile from '@livechat/file-upload';
|
|
13
13
|
|
|
14
|
+
function _arrayLikeToArray(r, a) {
|
|
15
|
+
(null == a || a > r.length) && (a = r.length);
|
|
16
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
17
|
+
return n;
|
|
18
|
+
}
|
|
14
19
|
function _extends() {
|
|
15
|
-
_extends = Object.assign ? Object.assign.bind() : function (
|
|
16
|
-
for (var
|
|
17
|
-
var
|
|
18
|
-
for (var
|
|
19
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
20
|
-
target[key] = source[key];
|
|
21
|
-
}
|
|
22
|
-
}
|
|
20
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
21
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
22
|
+
var t = arguments[e];
|
|
23
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
23
24
|
}
|
|
24
|
-
return
|
|
25
|
-
};
|
|
26
|
-
return _extends.apply(this, arguments);
|
|
25
|
+
return n;
|
|
26
|
+
}, _extends.apply(null, arguments);
|
|
27
27
|
}
|
|
28
|
-
function _objectWithoutPropertiesLoose(
|
|
29
|
-
if (
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
key = sourceKeys[i];
|
|
35
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
36
|
-
target[key] = source[key];
|
|
28
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
|
29
|
+
if (null == r) return {};
|
|
30
|
+
var t = {};
|
|
31
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
32
|
+
if (-1 !== e.indexOf(n)) continue;
|
|
33
|
+
t[n] = r[n];
|
|
37
34
|
}
|
|
38
|
-
return
|
|
35
|
+
return t;
|
|
39
36
|
}
|
|
40
|
-
function _toPrimitive(
|
|
41
|
-
if (
|
|
42
|
-
var
|
|
43
|
-
if (
|
|
44
|
-
var
|
|
45
|
-
if (
|
|
37
|
+
function _toPrimitive(t, r) {
|
|
38
|
+
if ("object" != typeof t || !t) return t;
|
|
39
|
+
var e = t[Symbol.toPrimitive];
|
|
40
|
+
if (void 0 !== e) {
|
|
41
|
+
var i = e.call(t, r || "default");
|
|
42
|
+
if ("object" != typeof i) return i;
|
|
46
43
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
47
44
|
}
|
|
48
|
-
return (
|
|
45
|
+
return ("string" === r ? String : Number)(t);
|
|
49
46
|
}
|
|
50
|
-
function _toPropertyKey(
|
|
51
|
-
var
|
|
52
|
-
return
|
|
47
|
+
function _toPropertyKey(t) {
|
|
48
|
+
var i = _toPrimitive(t, "string");
|
|
49
|
+
return "symbol" == typeof i ? i : i + "";
|
|
53
50
|
}
|
|
54
51
|
|
|
52
|
+
var FILE = 'file';
|
|
53
|
+
var FORM = 'form';
|
|
54
|
+
var FILLED_FORM = 'filled_form';
|
|
55
|
+
var MESSAGE = 'message';
|
|
56
|
+
var RICH_MESSAGE = 'rich_message';
|
|
57
|
+
var SYSTEM_MESSAGE = 'system_message';
|
|
58
|
+
var CUSTOM = 'custom';
|
|
59
|
+
|
|
60
|
+
var eventTypes = /*#__PURE__*/Object.freeze({
|
|
61
|
+
__proto__: null,
|
|
62
|
+
FILE: FILE,
|
|
63
|
+
FORM: FORM,
|
|
64
|
+
FILLED_FORM: FILLED_FORM,
|
|
65
|
+
MESSAGE: MESSAGE,
|
|
66
|
+
RICH_MESSAGE: RICH_MESSAGE,
|
|
67
|
+
SYSTEM_MESSAGE: SYSTEM_MESSAGE,
|
|
68
|
+
CUSTOM: CUSTOM
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
var _excluded$5 = ["groupId"];
|
|
72
|
+
var createEventBase = function createEventBase(event) {
|
|
73
|
+
var base = {};
|
|
74
|
+
if (typeof event.customId === 'string') {
|
|
75
|
+
base.custom_id = event.customId;
|
|
76
|
+
}
|
|
77
|
+
if (isObject(event.properties)) {
|
|
78
|
+
base.properties = event.properties;
|
|
79
|
+
}
|
|
80
|
+
return base;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// TODO: we could validate and throw here
|
|
84
|
+
// but should we? maybe only in DEV mode?
|
|
85
|
+
var parseEvent$1 = function parseEvent(event) {
|
|
86
|
+
switch (event.type) {
|
|
87
|
+
case MESSAGE:
|
|
88
|
+
{
|
|
89
|
+
var message = _extends({}, createEventBase(event), {
|
|
90
|
+
type: event.type,
|
|
91
|
+
text: event.text
|
|
92
|
+
});
|
|
93
|
+
if (event.postback) {
|
|
94
|
+
message.postback = {
|
|
95
|
+
id: event.postback.id,
|
|
96
|
+
thread_id: event.postback.threadId,
|
|
97
|
+
event_id: event.postback.eventId,
|
|
98
|
+
type: event.postback.type,
|
|
99
|
+
value: event.postback.value
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return message;
|
|
103
|
+
}
|
|
104
|
+
case FILE:
|
|
105
|
+
{
|
|
106
|
+
var file = _extends({}, createEventBase(event), {
|
|
107
|
+
type: event.type,
|
|
108
|
+
url: event.url,
|
|
109
|
+
alternative_text: event.alternativeText
|
|
110
|
+
});
|
|
111
|
+
return file;
|
|
112
|
+
}
|
|
113
|
+
case FILLED_FORM:
|
|
114
|
+
{
|
|
115
|
+
var filledForm = _extends({}, createEventBase(event), {
|
|
116
|
+
type: event.type,
|
|
117
|
+
form_id: event.formId
|
|
118
|
+
}, event.formType && {
|
|
119
|
+
form_type: event.formType
|
|
120
|
+
}, {
|
|
121
|
+
fields: event.fields.map(function (field) {
|
|
122
|
+
switch (field.type) {
|
|
123
|
+
case 'group_chooser':
|
|
124
|
+
{
|
|
125
|
+
if (!field.answer) {
|
|
126
|
+
return field;
|
|
127
|
+
}
|
|
128
|
+
var _field$answer = field.answer,
|
|
129
|
+
groupId = _field$answer.groupId,
|
|
130
|
+
answer = _objectWithoutPropertiesLoose(_field$answer, _excluded$5);
|
|
131
|
+
return _extends({}, field, {
|
|
132
|
+
answer: _extends({}, answer, {
|
|
133
|
+
group_id: groupId
|
|
134
|
+
})
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
default:
|
|
138
|
+
return field;
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
return filledForm;
|
|
143
|
+
}
|
|
144
|
+
case SYSTEM_MESSAGE:
|
|
145
|
+
{
|
|
146
|
+
var systemMessage = _extends({}, createEventBase(event), {
|
|
147
|
+
type: event.type,
|
|
148
|
+
text: event.text,
|
|
149
|
+
system_message_type: event.systemMessageType
|
|
150
|
+
});
|
|
151
|
+
if (event.recipients) {
|
|
152
|
+
systemMessage.recipients = event.recipients;
|
|
153
|
+
}
|
|
154
|
+
return systemMessage;
|
|
155
|
+
}
|
|
156
|
+
case CUSTOM:
|
|
157
|
+
{
|
|
158
|
+
var customEvent = _extends({}, createEventBase(event), {
|
|
159
|
+
type: event.type
|
|
160
|
+
});
|
|
161
|
+
if (event.content) {
|
|
162
|
+
customEvent.content = event.content;
|
|
163
|
+
}
|
|
164
|
+
return customEvent;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
var parseThreadData = function parseThreadData(thread) {
|
|
169
|
+
var data = {};
|
|
170
|
+
var events = thread.events,
|
|
171
|
+
properties = thread.properties;
|
|
172
|
+
if (events) {
|
|
173
|
+
data.events = events.map(parseEvent$1);
|
|
174
|
+
}
|
|
175
|
+
if (properties) {
|
|
176
|
+
data.properties = properties;
|
|
177
|
+
}
|
|
178
|
+
return data;
|
|
179
|
+
};
|
|
180
|
+
var parseStartChatData = function parseStartChatData(_ref) {
|
|
181
|
+
var _ref$active = _ref.active,
|
|
182
|
+
active = _ref$active === void 0 ? true : _ref$active,
|
|
183
|
+
chat = _ref.chat,
|
|
184
|
+
welcomeMessageId = _ref.welcomeMessageId,
|
|
185
|
+
continuous = _ref.continuous;
|
|
186
|
+
var data = {
|
|
187
|
+
active: active,
|
|
188
|
+
chat: {}
|
|
189
|
+
};
|
|
190
|
+
if (typeof continuous === 'boolean') {
|
|
191
|
+
data.continuous = continuous;
|
|
192
|
+
}
|
|
193
|
+
if (welcomeMessageId && typeof welcomeMessageId === 'string') {
|
|
194
|
+
data.welcome_message_id = welcomeMessageId;
|
|
195
|
+
}
|
|
196
|
+
if (!chat) {
|
|
197
|
+
return data;
|
|
198
|
+
}
|
|
199
|
+
var access = chat.access,
|
|
200
|
+
thread = chat.thread,
|
|
201
|
+
properties = chat.properties;
|
|
202
|
+
if (access && access.groupIds) {
|
|
203
|
+
data.chat.access = {
|
|
204
|
+
group_ids: access.groupIds
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
if (properties) {
|
|
208
|
+
data.chat.properties = properties;
|
|
209
|
+
}
|
|
210
|
+
if (thread) {
|
|
211
|
+
data.chat.thread = parseThreadData(thread);
|
|
212
|
+
}
|
|
213
|
+
return data;
|
|
214
|
+
};
|
|
215
|
+
var parseResumeChatData = function parseResumeChatData(requestData) {
|
|
216
|
+
var data = parseStartChatData(requestData);
|
|
217
|
+
return _extends({}, data, {
|
|
218
|
+
chat: _extends({}, data.chat, {
|
|
219
|
+
id: requestData.chat.id
|
|
220
|
+
})
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
var parseCustomerSessionFields$1 = function parseCustomerSessionFields(sessionFields) {
|
|
224
|
+
return toPairs(sessionFields).map(function (_ref2) {
|
|
225
|
+
var _ref3;
|
|
226
|
+
var key = _ref2[0],
|
|
227
|
+
value = _ref2[1];
|
|
228
|
+
return _ref3 = {}, _ref3[key] = value, _ref3;
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
var parseCustomerUpdate = function parseCustomerUpdate(update) {
|
|
232
|
+
var result = pickOwn(['avatar', 'name', 'email'], update);
|
|
233
|
+
if (update.sessionFields) {
|
|
234
|
+
result.session_fields = parseCustomerSessionFields$1(update.sessionFields);
|
|
235
|
+
}
|
|
236
|
+
if (typeof update.nameIsDefault === 'boolean') {
|
|
237
|
+
result.name_is_default = update.nameIsDefault;
|
|
238
|
+
}
|
|
239
|
+
return result;
|
|
240
|
+
};
|
|
241
|
+
|
|
55
242
|
var CHANGE_REGION = 'change_region';
|
|
56
|
-
var CHECK_GOALS = 'check_goals';
|
|
243
|
+
var CHECK_GOALS$1 = 'check_goals';
|
|
57
244
|
var DESTROY = 'destroy';
|
|
58
245
|
var FAIL_ALL_REQUESTS = 'fail_all_requests';
|
|
59
246
|
var LOGIN_SUCCESS = 'login_success';
|
|
@@ -72,21 +259,13 @@ var SOCKET_DISCONNECTED = 'socket_disconnected';
|
|
|
72
259
|
var SOCKET_RECOVERED = 'socket_recovered';
|
|
73
260
|
var SOCKET_UNSTABLE = 'socket_unstable';
|
|
74
261
|
var START_CONNECTION = 'start_connection';
|
|
75
|
-
var UPDATE_CUSTOMER_PAGE = 'update_customer_page';
|
|
76
|
-
|
|
77
|
-
var
|
|
78
|
-
var IDENTITY_MISMATCH = 'IDENTITY_MISMATCH';
|
|
79
|
-
var MISDIRECTED_CONNECTION = 'MISDIRECTED_CONNECTION';
|
|
80
|
-
var MISSING_CHAT_THREAD = 'MISSING_CHAT_THREAD';
|
|
81
|
-
var NO_CONNECTION = 'NO_CONNECTION';
|
|
82
|
-
var REQUEST_TIMEOUT = 'REQUEST_TIMEOUT';
|
|
83
|
-
var SDK_DESTROYED = 'SDK_DESTROYED';
|
|
84
|
-
var SERVICE_TEMPORARILY_UNAVAILABLE = 'SERVICE_TEMPORARILY_UNAVAILABLE';
|
|
85
|
-
var TOO_BIG_FILE = 'TOO_BIG_FILE';
|
|
262
|
+
var UPDATE_CUSTOMER_PAGE$1 = 'update_customer_page';
|
|
263
|
+
var CLEAR_SENSITIVE_SESSION_STATE = 'clear_sensitive_session_state';
|
|
264
|
+
var IDENTITY_CHANGED = 'identity_changed';
|
|
86
265
|
|
|
87
266
|
var ACCEPT_GREETING = 'accept_greeting';
|
|
88
267
|
var CANCEL_GREETING = 'cancel_greeting';
|
|
89
|
-
var CHECK_GOALS
|
|
268
|
+
var CHECK_GOALS = 'check_goals';
|
|
90
269
|
var DEACTIVATE_CHAT = 'deactivate_chat';
|
|
91
270
|
var DELETE_CHAT_PROPERTIES = 'delete_chat_properties';
|
|
92
271
|
var DELETE_EVENT_PROPERTIES = 'delete_event_properties';
|
|
@@ -94,268 +273,176 @@ var DELETE_THREAD_PROPERTIES = 'delete_thread_properties';
|
|
|
94
273
|
var GET_CHAT = 'get_chat';
|
|
95
274
|
var GET_CUSTOMER = 'get_customer';
|
|
96
275
|
var GET_FORM = 'get_form';
|
|
97
|
-
var GET_PREDICTED_AGENT = 'get_predicted_agent';
|
|
98
276
|
var GET_URL_INFO = 'get_url_info';
|
|
99
277
|
var LIST_CHATS = 'list_chats';
|
|
100
278
|
var LIST_GROUP_STATUSES = 'list_group_statuses';
|
|
101
279
|
var LIST_THREADS = 'list_threads';
|
|
102
280
|
var LOGIN = 'login';
|
|
103
281
|
var MARK_EVENTS_AS_SEEN = 'mark_events_as_seen';
|
|
282
|
+
var REQUEST_WELCOME_MESSAGE = 'request_welcome_message';
|
|
104
283
|
var RESUME_CHAT = 'resume_chat';
|
|
105
284
|
var SEND_EVENT = 'send_event';
|
|
285
|
+
var SEND_GREETING_BUTTON_CLICKED = 'send_greeting_button_clicked';
|
|
286
|
+
var SEND_CUSTOMER_ACTIONS = 'send_customer_actions';
|
|
106
287
|
var SEND_RICH_MESSAGE_POSTBACK = 'send_rich_message_postback';
|
|
107
288
|
var SEND_SNEAK_PEEK = 'send_sneak_peek';
|
|
108
289
|
var SET_CUSTOMER_SESSION_FIELDS = 'set_customer_session_fields';
|
|
109
290
|
var START_CHAT = 'start_chat';
|
|
110
291
|
var UPDATE_CHAT_PROPERTIES = 'update_chat_properties';
|
|
111
292
|
var UPDATE_CUSTOMER = 'update_customer';
|
|
112
|
-
var UPDATE_CUSTOMER_PAGE
|
|
293
|
+
var UPDATE_CUSTOMER_PAGE = 'update_customer_page';
|
|
113
294
|
var UPDATE_EVENT_PROPERTIES = 'update_event_properties';
|
|
114
295
|
var UPDATE_THREAD_PROPERTIES = 'update_thread_properties';
|
|
115
296
|
var UPLOAD_FILE = 'upload_file';
|
|
116
297
|
|
|
117
|
-
var
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
298
|
+
var destroy = function destroy(reason) {
|
|
299
|
+
return {
|
|
300
|
+
type: DESTROY,
|
|
301
|
+
payload: {
|
|
302
|
+
reason: reason
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
var loginSuccess = function loginSuccess(payload) {
|
|
307
|
+
return {
|
|
308
|
+
type: LOGIN_SUCCESS,
|
|
309
|
+
payload: payload
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
var pauseConnection = function pauseConnection(reason) {
|
|
313
|
+
return {
|
|
314
|
+
type: PAUSE_CONNECTION,
|
|
315
|
+
payload: {
|
|
316
|
+
reason: reason
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
};
|
|
320
|
+
var prefetchToken = function prefetchToken(fresh) {
|
|
321
|
+
if (fresh === void 0) {
|
|
322
|
+
fresh = false;
|
|
121
323
|
}
|
|
122
|
-
return
|
|
123
|
-
|
|
124
|
-
|
|
324
|
+
return {
|
|
325
|
+
type: PREFETCH_TOKEN,
|
|
326
|
+
payload: {
|
|
327
|
+
fresh: fresh
|
|
125
328
|
}
|
|
126
|
-
|
|
127
|
-
|
|
329
|
+
};
|
|
330
|
+
};
|
|
331
|
+
var reconnect = function reconnect(delay) {
|
|
332
|
+
return {
|
|
333
|
+
type: RECONNECT,
|
|
334
|
+
payload: {
|
|
335
|
+
delay: delay
|
|
128
336
|
}
|
|
129
|
-
return state;
|
|
130
337
|
};
|
|
131
338
|
};
|
|
132
339
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
var AGENT = 'agent';
|
|
149
|
-
var CUSTOMER = 'customer';
|
|
150
|
-
|
|
151
|
-
var userTypes = /*#__PURE__*/Object.freeze({
|
|
152
|
-
__proto__: null,
|
|
153
|
-
AGENT: AGENT,
|
|
154
|
-
CUSTOMER: CUSTOMER
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
var LIVECHAT_ORGANIZATION_ID = 'feaf6c0e-9f43-48ff-9ad0-8e24e0350932';
|
|
158
|
-
|
|
159
|
-
var getAllRequests = function getAllRequests(state) {
|
|
160
|
-
return state.requests;
|
|
161
|
-
};
|
|
162
|
-
var getConnectionStatus = function getConnectionStatus(state) {
|
|
163
|
-
return state.connection.status;
|
|
164
|
-
};
|
|
165
|
-
var getRequest = function getRequest(state, id) {
|
|
166
|
-
return state.requests[id];
|
|
167
|
-
};
|
|
168
|
-
var getSelfId = function getSelfId(state) {
|
|
169
|
-
return state.users.self.id;
|
|
170
|
-
};
|
|
171
|
-
var isChatActive = function isChatActive(state, chatId) {
|
|
172
|
-
var chat = state.chats[chatId];
|
|
173
|
-
return !!chat && chat.active;
|
|
174
|
-
};
|
|
175
|
-
var isConnected = function isConnected(state) {
|
|
176
|
-
return getConnectionStatus(state) === CONNECTED;
|
|
177
|
-
};
|
|
178
|
-
var isDestroyed = function isDestroyed(state) {
|
|
179
|
-
return getConnectionStatus(state) === DESTROYED;
|
|
340
|
+
// TODO: this one was currently pretty hard to type in full
|
|
341
|
+
// we should explore providing stricter types for this in the future
|
|
342
|
+
var sendRequest$1 = function sendRequest(action, payload, source) {
|
|
343
|
+
return {
|
|
344
|
+
type: SEND_REQUEST,
|
|
345
|
+
payload: _extends({
|
|
346
|
+
request: {
|
|
347
|
+
action: action,
|
|
348
|
+
payload: payload
|
|
349
|
+
}
|
|
350
|
+
}, source && {
|
|
351
|
+
source: source
|
|
352
|
+
})
|
|
353
|
+
};
|
|
180
354
|
};
|
|
181
|
-
var
|
|
182
|
-
var
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
355
|
+
var sendEvent = function sendEvent(_ref) {
|
|
356
|
+
var chatId = _ref.chatId,
|
|
357
|
+
event = _ref.event,
|
|
358
|
+
attachToLastThread = _ref.attachToLastThread;
|
|
359
|
+
var payload = {
|
|
360
|
+
chat_id: chatId,
|
|
361
|
+
event: parseEvent$1(event)
|
|
362
|
+
};
|
|
363
|
+
if (attachToLastThread) {
|
|
364
|
+
payload.attach_to_last_thread = true;
|
|
189
365
|
}
|
|
190
|
-
return
|
|
366
|
+
return sendRequest$1(SEND_EVENT, payload);
|
|
191
367
|
};
|
|
192
|
-
var
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
368
|
+
var setChatActive = function setChatActive(id, active) {
|
|
369
|
+
return {
|
|
370
|
+
type: SET_CHAT_ACTIVE,
|
|
371
|
+
payload: {
|
|
372
|
+
id: id,
|
|
373
|
+
active: active
|
|
374
|
+
}
|
|
375
|
+
};
|
|
196
376
|
};
|
|
197
|
-
var
|
|
198
|
-
return
|
|
377
|
+
var setSelfId = function setSelfId(id) {
|
|
378
|
+
return {
|
|
379
|
+
type: SET_SELF_ID,
|
|
380
|
+
payload: {
|
|
381
|
+
id: id
|
|
382
|
+
}
|
|
383
|
+
};
|
|
199
384
|
};
|
|
200
|
-
var
|
|
201
|
-
var _initialStateData$app = initialStateData.application,
|
|
202
|
-
application = _initialStateData$app === void 0 ? {} : _initialStateData$app,
|
|
203
|
-
organizationId = initialStateData.organizationId,
|
|
204
|
-
_initialStateData$gro = initialStateData.groupId,
|
|
205
|
-
groupId = _initialStateData$gro === void 0 ? null : _initialStateData$gro,
|
|
206
|
-
env = initialStateData.env,
|
|
207
|
-
_initialStateData$pag = initialStateData.page,
|
|
208
|
-
page = _initialStateData$pag === void 0 ? null : _initialStateData$pag,
|
|
209
|
-
_initialStateData$reg = initialStateData.region,
|
|
210
|
-
region = _initialStateData$reg === void 0 ? null : _initialStateData$reg,
|
|
211
|
-
_initialStateData$ref = initialStateData.referrer,
|
|
212
|
-
referrer = _initialStateData$ref === void 0 ? null : _initialStateData$ref,
|
|
213
|
-
_initialStateData$uni = initialStateData.uniqueGroups,
|
|
214
|
-
uniqueGroups = _initialStateData$uni === void 0 ? false : _initialStateData$uni,
|
|
215
|
-
_initialStateData$mob = initialStateData.mobile,
|
|
216
|
-
mobile = _initialStateData$mob === void 0 ? false : _initialStateData$mob;
|
|
385
|
+
var socketDisconnected = function socketDisconnected() {
|
|
217
386
|
return {
|
|
218
|
-
|
|
219
|
-
name: "customer_sdk",
|
|
220
|
-
version: "4.0.2"
|
|
221
|
-
}),
|
|
222
|
-
organizationId: organizationId,
|
|
223
|
-
env: env,
|
|
224
|
-
groupId: groupId,
|
|
225
|
-
chats: {},
|
|
226
|
-
connection: {
|
|
227
|
-
status: DISCONNECTED
|
|
228
|
-
},
|
|
229
|
-
page: page,
|
|
230
|
-
region: region,
|
|
231
|
-
referrer: referrer,
|
|
232
|
-
requests: {},
|
|
233
|
-
users: {
|
|
234
|
-
self: {
|
|
235
|
-
id: null,
|
|
236
|
-
type: CUSTOMER
|
|
237
|
-
},
|
|
238
|
-
others: {}
|
|
239
|
-
},
|
|
240
|
-
uniqueGroups: uniqueGroups,
|
|
241
|
-
mobile: mobile
|
|
387
|
+
type: SOCKET_DISCONNECTED
|
|
242
388
|
};
|
|
243
389
|
};
|
|
244
|
-
var
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
return _extends({}, state, {
|
|
249
|
-
requests: requests
|
|
250
|
-
});
|
|
390
|
+
var clearSensitiveSessionState = function clearSensitiveSessionState() {
|
|
391
|
+
return {
|
|
392
|
+
type: CLEAR_SENSITIVE_SESSION_STATE
|
|
393
|
+
};
|
|
251
394
|
};
|
|
252
|
-
var
|
|
253
|
-
return
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
});
|
|
395
|
+
var identityChanged = function identityChanged(payload) {
|
|
396
|
+
return {
|
|
397
|
+
type: IDENTITY_CHANGED,
|
|
398
|
+
payload: payload
|
|
399
|
+
};
|
|
258
400
|
};
|
|
259
|
-
var createReducer$1 = (function (state) {
|
|
260
|
-
var _createReducer;
|
|
261
|
-
return createReducer(state, (_createReducer = {}, _createReducer[CHANGE_REGION] = function (state, _ref3) {
|
|
262
|
-
var region = _ref3.region;
|
|
263
|
-
return _extends({}, state, {
|
|
264
|
-
region: region
|
|
265
|
-
});
|
|
266
|
-
}, _createReducer[DESTROY] = function (state) {
|
|
267
|
-
return setConnectionStatus(DESTROYED, state);
|
|
268
|
-
}, _createReducer[LOGIN_SUCCESS] = function (state) {
|
|
269
|
-
return setConnectionStatus(CONNECTED, state);
|
|
270
|
-
}, _createReducer[PAUSE_CONNECTION] = function (state) {
|
|
271
|
-
return setConnectionStatus(PAUSED, state);
|
|
272
|
-
}, _createReducer[REQUEST_FAILED] = removeStoredRequest, _createReducer[RESPONSE_RECEIVED] = removeStoredRequest, _createReducer[PUSH_RESPONSE_RECEIVED] = removeStoredRequest, _createReducer[SEND_REQUEST] = function (state, _ref4) {
|
|
273
|
-
var _extends2;
|
|
274
|
-
var promise = _ref4.promise,
|
|
275
|
-
resolve = _ref4.resolve,
|
|
276
|
-
reject = _ref4.reject,
|
|
277
|
-
id = _ref4.id,
|
|
278
|
-
request = _ref4.request;
|
|
279
|
-
return _extends({}, state, {
|
|
280
|
-
requests: _extends({}, state.requests, (_extends2 = {}, _extends2[id] = {
|
|
281
|
-
id: id,
|
|
282
|
-
promise: promise,
|
|
283
|
-
resolve: resolve,
|
|
284
|
-
reject: reject,
|
|
285
|
-
request: request
|
|
286
|
-
}, _extends2))
|
|
287
|
-
});
|
|
288
|
-
}, _createReducer[SET_CHAT_ACTIVE] = function (state, _ref5) {
|
|
289
|
-
var _extends3;
|
|
290
|
-
var id = _ref5.id,
|
|
291
|
-
active = _ref5.active;
|
|
292
|
-
return _extends({}, state, {
|
|
293
|
-
chats: _extends({}, state.chats, (_extends3 = {}, _extends3[id] = _extends({}, state.chats[id], {
|
|
294
|
-
active: active
|
|
295
|
-
}), _extends3))
|
|
296
|
-
});
|
|
297
|
-
}, _createReducer[SET_SELF_ID] = function (state, payload) {
|
|
298
|
-
return _extends({}, state, {
|
|
299
|
-
users: _extends({}, state.users, {
|
|
300
|
-
self: _extends({}, state.users.self, {
|
|
301
|
-
id: payload.id
|
|
302
|
-
})
|
|
303
|
-
})
|
|
304
|
-
});
|
|
305
|
-
}, _createReducer[SOCKET_DISCONNECTED] = function (state) {
|
|
306
|
-
var previousStatus = getConnectionStatus(state);
|
|
307
|
-
if (process.env.NODE_ENV !== 'production' && (previousStatus === PAUSED || previousStatus === DESTROYED)) {
|
|
308
|
-
throw new Error("Got 'socket_disconnected' action when in " + previousStatus + " state. This should be an impossible state.");
|
|
309
|
-
}
|
|
310
|
-
var state1 = setConnectionStatus(previousStatus === DISCONNECTED ? DISCONNECTED : RECONNECTING, state);
|
|
311
|
-
return _extends({}, state1, {
|
|
312
|
-
requests: {}
|
|
313
|
-
});
|
|
314
|
-
}, _createReducer[UPDATE_CUSTOMER_PAGE] = function (state, page) {
|
|
315
|
-
return _extends({}, state, {
|
|
316
|
-
page: _extends({}, state.page, page)
|
|
317
|
-
});
|
|
318
|
-
}, _createReducer));
|
|
319
|
-
});
|
|
320
401
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
}
|
|
402
|
+
var CONNECTION_LOST = 'CONNECTION_LOST';
|
|
403
|
+
var MISDIRECTED_CONNECTION$1 = 'MISDIRECTED_CONNECTION';
|
|
404
|
+
var MISSING_CHAT_THREAD = 'MISSING_CHAT_THREAD';
|
|
405
|
+
var NO_CONNECTION = 'NO_CONNECTION';
|
|
406
|
+
var REQUEST_TIMEOUT$1 = 'REQUEST_TIMEOUT';
|
|
407
|
+
var SDK_DESTROYED = 'SDK_DESTROYED';
|
|
408
|
+
var SERVICE_TEMPORARILY_UNAVAILABLE$1 = 'SERVICE_TEMPORARILY_UNAVAILABLE';
|
|
409
|
+
var TOO_BIG_FILE = 'TOO_BIG_FILE';
|
|
330
410
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
411
|
+
var CONNECTED = 'connected';
|
|
412
|
+
var DESTROYED = 'destroyed';
|
|
413
|
+
var DISCONNECTED = 'disconnected';
|
|
414
|
+
var PAUSED = 'paused';
|
|
415
|
+
var RECONNECTING = 'reconnecting';
|
|
416
|
+
|
|
417
|
+
var connectionStatuses = /*#__PURE__*/Object.freeze({
|
|
418
|
+
__proto__: null,
|
|
419
|
+
CONNECTED: CONNECTED,
|
|
420
|
+
DESTROYED: DESTROYED,
|
|
421
|
+
DISCONNECTED: DISCONNECTED,
|
|
422
|
+
PAUSED: PAUSED,
|
|
423
|
+
RECONNECTING: RECONNECTING
|
|
424
|
+
});
|
|
338
425
|
|
|
339
426
|
var ACCESS_TOKEN_EXPIRED = 'access_token_expired';
|
|
340
427
|
var CONNECTION_TIMEOUT = 'connection_timeout';
|
|
341
|
-
var CUSTOMER_BANNED = 'customer_banned';
|
|
428
|
+
var CUSTOMER_BANNED$1 = 'customer_banned';
|
|
342
429
|
// customer tried reconnecting too many times after they received too_many_connections error
|
|
343
430
|
var CUSTOMER_TEMPORARILY_BLOCKED = 'customer_temporarily_blocked';
|
|
344
431
|
var INACTIVITY_TIMEOUT = 'inactivity_timeout';
|
|
345
432
|
var INTERNAL_ERROR = 'internal_error';
|
|
346
|
-
var LICENSE_EXPIRED = 'license_expired';
|
|
433
|
+
var LICENSE_EXPIRED$1 = 'license_expired';
|
|
347
434
|
var LICENSE_NOT_FOUND = 'license_not_found';
|
|
348
|
-
var MISDIRECTED_CONNECTION
|
|
435
|
+
var MISDIRECTED_CONNECTION = 'misdirected_connection';
|
|
349
436
|
var PRODUCT_VERSION_CHANGED = 'product_version_changed';
|
|
350
437
|
// the limit of connections per user host has been exceeded
|
|
351
438
|
// or rate limit for new connections has been hit
|
|
352
439
|
// (in 3.2 only the latter case, the first one is using `too_many_connections` to avoid breaking changes)
|
|
353
|
-
var SERVICE_TEMPORARILY_UNAVAILABLE
|
|
440
|
+
var SERVICE_TEMPORARILY_UNAVAILABLE = 'service_temporarily_unavailable';
|
|
354
441
|
// the limit of those connections is per user
|
|
355
442
|
var TOO_MANY_CONNECTIONS = 'too_many_connections';
|
|
356
443
|
// the limit of unauthorized connections is per IP
|
|
357
444
|
var TOO_MANY_UNAUTHORIZED_CONNECTIONS = 'too_many_unauthorized_connections';
|
|
358
|
-
var UNSUPPORTED_VERSION = 'unsupported_version';
|
|
445
|
+
var UNSUPPORTED_VERSION$1 = 'unsupported_version';
|
|
359
446
|
// introduced in 3.5 meaning the customer was logged out by the server
|
|
360
447
|
var LOGGED_OUT_REMOTELY = 'logged_out_remotely';
|
|
361
448
|
|
|
@@ -363,47 +450,99 @@ var serverDisconnectionReasons = /*#__PURE__*/Object.freeze({
|
|
|
363
450
|
__proto__: null,
|
|
364
451
|
ACCESS_TOKEN_EXPIRED: ACCESS_TOKEN_EXPIRED,
|
|
365
452
|
CONNECTION_TIMEOUT: CONNECTION_TIMEOUT,
|
|
366
|
-
CUSTOMER_BANNED: CUSTOMER_BANNED,
|
|
453
|
+
CUSTOMER_BANNED: CUSTOMER_BANNED$1,
|
|
367
454
|
CUSTOMER_TEMPORARILY_BLOCKED: CUSTOMER_TEMPORARILY_BLOCKED,
|
|
368
455
|
INACTIVITY_TIMEOUT: INACTIVITY_TIMEOUT,
|
|
369
456
|
INTERNAL_ERROR: INTERNAL_ERROR,
|
|
370
|
-
LICENSE_EXPIRED: LICENSE_EXPIRED,
|
|
457
|
+
LICENSE_EXPIRED: LICENSE_EXPIRED$1,
|
|
371
458
|
LICENSE_NOT_FOUND: LICENSE_NOT_FOUND,
|
|
372
|
-
MISDIRECTED_CONNECTION: MISDIRECTED_CONNECTION
|
|
459
|
+
MISDIRECTED_CONNECTION: MISDIRECTED_CONNECTION,
|
|
373
460
|
PRODUCT_VERSION_CHANGED: PRODUCT_VERSION_CHANGED,
|
|
374
|
-
SERVICE_TEMPORARILY_UNAVAILABLE: SERVICE_TEMPORARILY_UNAVAILABLE
|
|
461
|
+
SERVICE_TEMPORARILY_UNAVAILABLE: SERVICE_TEMPORARILY_UNAVAILABLE,
|
|
375
462
|
TOO_MANY_CONNECTIONS: TOO_MANY_CONNECTIONS,
|
|
376
463
|
TOO_MANY_UNAUTHORIZED_CONNECTIONS: TOO_MANY_UNAUTHORIZED_CONNECTIONS,
|
|
377
|
-
UNSUPPORTED_VERSION: UNSUPPORTED_VERSION,
|
|
464
|
+
UNSUPPORTED_VERSION: UNSUPPORTED_VERSION$1,
|
|
378
465
|
LOGGED_OUT_REMOTELY: LOGGED_OUT_REMOTELY
|
|
379
466
|
});
|
|
380
467
|
|
|
381
|
-
var
|
|
382
|
-
var
|
|
383
|
-
var
|
|
384
|
-
var
|
|
385
|
-
var
|
|
386
|
-
var
|
|
387
|
-
var
|
|
388
|
-
var
|
|
389
|
-
var
|
|
390
|
-
var
|
|
391
|
-
var
|
|
392
|
-
var
|
|
393
|
-
var
|
|
394
|
-
var
|
|
395
|
-
|
|
396
|
-
var
|
|
397
|
-
var
|
|
398
|
-
var
|
|
399
|
-
var
|
|
400
|
-
var
|
|
468
|
+
var AUTHENTICATION = 'AUTHENTICATION';
|
|
469
|
+
var AUTHORIZATION = 'AUTHORIZATION';
|
|
470
|
+
var CHAT_ALREADY_ACTIVE = 'CHAT_ALREADY_ACTIVE';
|
|
471
|
+
var CHAT_LIMIT_REACHED = 'CHAT_LIMIT_REACHED';
|
|
472
|
+
var CUSTOMER_BANNED = 'CUSTOMER_BANNED';
|
|
473
|
+
var CUSTOMER_SESSION_FIELDS_LIMIT_REACHED = 'CUSTOMER_SESSION_FIELDS_LIMIT_REACHED';
|
|
474
|
+
var ENTITY_TOO_LARGE = 'ENTITY_TOO_LARGE';
|
|
475
|
+
var GREETING_NOT_FOUND = 'GREETING_NOT_FOUND';
|
|
476
|
+
var GROUP_OFFLINE = 'GROUP_OFFLINE';
|
|
477
|
+
var GROUPS_OFFLINE = 'GROUPS_OFFLINE';
|
|
478
|
+
var GROUP_NOT_FOUND = 'GROUP_NOT_FOUND';
|
|
479
|
+
var GROUP_UNAVAILABLE = 'GROUP_UNAVAILABLE';
|
|
480
|
+
var INTERNAL = 'INTERNAL';
|
|
481
|
+
var LICENSE_EXPIRED = 'LICENSE_EXPIRED';
|
|
482
|
+
// actually this can happen only when using REST
|
|
483
|
+
var MISDIRECTED_REQUEST = 'MISDIRECTED_REQUEST';
|
|
484
|
+
var PENDING_REQUESTS_LIMIT_REACHED = 'PENDING_REQUESTS_LIMIT_REACHED';
|
|
485
|
+
var REQUEST_TIMEOUT = 'REQUEST_TIMEOUT';
|
|
486
|
+
var SERVICE_UNAVAILABLE = 'SERVICE_UNAVAILABLE';
|
|
487
|
+
var UNSUPPORTED_VERSION = 'UNSUPPORTED_VERSION';
|
|
488
|
+
var USERS_LIMIT_REACHED = 'USERS_LIMIT_REACHED';
|
|
489
|
+
var VALIDATION = 'VALIDATION';
|
|
490
|
+
var WRONG_PRODUCT_VERSION = 'WRONG_PRODUCT_VERSION';
|
|
491
|
+
|
|
492
|
+
var serverErrorCodes = /*#__PURE__*/Object.freeze({
|
|
493
|
+
__proto__: null,
|
|
494
|
+
AUTHENTICATION: AUTHENTICATION,
|
|
495
|
+
AUTHORIZATION: AUTHORIZATION,
|
|
496
|
+
CHAT_ALREADY_ACTIVE: CHAT_ALREADY_ACTIVE,
|
|
497
|
+
CHAT_LIMIT_REACHED: CHAT_LIMIT_REACHED,
|
|
498
|
+
CUSTOMER_BANNED: CUSTOMER_BANNED,
|
|
499
|
+
CUSTOMER_SESSION_FIELDS_LIMIT_REACHED: CUSTOMER_SESSION_FIELDS_LIMIT_REACHED,
|
|
500
|
+
ENTITY_TOO_LARGE: ENTITY_TOO_LARGE,
|
|
501
|
+
GREETING_NOT_FOUND: GREETING_NOT_FOUND,
|
|
502
|
+
GROUP_OFFLINE: GROUP_OFFLINE,
|
|
503
|
+
GROUPS_OFFLINE: GROUPS_OFFLINE,
|
|
504
|
+
GROUP_NOT_FOUND: GROUP_NOT_FOUND,
|
|
505
|
+
GROUP_UNAVAILABLE: GROUP_UNAVAILABLE,
|
|
506
|
+
INTERNAL: INTERNAL,
|
|
507
|
+
LICENSE_EXPIRED: LICENSE_EXPIRED,
|
|
508
|
+
MISDIRECTED_REQUEST: MISDIRECTED_REQUEST,
|
|
509
|
+
PENDING_REQUESTS_LIMIT_REACHED: PENDING_REQUESTS_LIMIT_REACHED,
|
|
510
|
+
REQUEST_TIMEOUT: REQUEST_TIMEOUT,
|
|
511
|
+
SERVICE_UNAVAILABLE: SERVICE_UNAVAILABLE,
|
|
512
|
+
UNSUPPORTED_VERSION: UNSUPPORTED_VERSION,
|
|
513
|
+
USERS_LIMIT_REACHED: USERS_LIMIT_REACHED,
|
|
514
|
+
VALIDATION: VALIDATION,
|
|
515
|
+
WRONG_PRODUCT_VERSION: WRONG_PRODUCT_VERSION
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
var CHAT_DEACTIVATED = 'chat_deactivated';
|
|
519
|
+
var CHAT_PROPERTIES_DELETED = 'chat_properties_deleted';
|
|
520
|
+
var CHAT_PROPERTIES_UPDATED = 'chat_properties_updated';
|
|
521
|
+
var CHAT_TRANSFERRED = 'chat_transferred';
|
|
522
|
+
var CUSTOMER_DISCONNECTED = 'customer_disconnected';
|
|
523
|
+
var CUSTOMER_SIDE_STORAGE_UPDATED = 'customer_side_storage_updated';
|
|
524
|
+
var CUSTOMER_UPDATED = 'customer_updated';
|
|
525
|
+
var EVENT_PROPERTIES_DELETED = 'event_properties_deleted';
|
|
526
|
+
var EVENT_PROPERTIES_UPDATED = 'event_properties_updated';
|
|
527
|
+
var EVENT_UPDATED = 'event_updated';
|
|
528
|
+
var EVENTS_MARKED_AS_SEEN = 'events_marked_as_seen';
|
|
529
|
+
var GREETING_ACCEPTED = 'greeting_accepted';
|
|
530
|
+
var GREETING_CANCELED = 'greeting_canceled';
|
|
531
|
+
var GROUPS_STATUS_UPDATED = 'groups_status_updated';
|
|
532
|
+
var INCOMING_CHAT = 'incoming_chat';
|
|
533
|
+
var INCOMING_EVENT = 'incoming_event';
|
|
534
|
+
var INCOMING_GREETING = 'incoming_greeting';
|
|
535
|
+
var INCOMING_MULTICAST = 'incoming_multicast';
|
|
536
|
+
var INCOMING_RICH_MESSAGE_POSTBACK = 'incoming_rich_message_postback';
|
|
401
537
|
var INCOMING_TYPING_INDICATOR = 'incoming_typing_indicator';
|
|
538
|
+
var INCOMING_WELCOME_MESSAGE = 'incoming_welcome_message';
|
|
402
539
|
var QUEUE_POSITION_UPDATED = 'queue_position_updated';
|
|
403
540
|
var THREAD_PROPERTIES_DELETED = 'thread_properties_deleted';
|
|
404
541
|
var THREAD_PROPERTIES_UPDATED = 'thread_properties_updated';
|
|
405
542
|
var USER_ADDED_TO_CHAT = 'user_added_to_chat';
|
|
406
543
|
var USER_REMOVED_FROM_CHAT = 'user_removed_from_chat';
|
|
544
|
+
var INCOMING_THINKING_INDICATOR = 'incoming_thinking_indicator';
|
|
545
|
+
var INCOMING_EVENT_PREVIEW = 'incoming_event_preview';
|
|
407
546
|
|
|
408
547
|
var serverPushActions = /*#__PURE__*/Object.freeze({
|
|
409
548
|
__proto__: null,
|
|
@@ -412,7 +551,6 @@ var serverPushActions = /*#__PURE__*/Object.freeze({
|
|
|
412
551
|
CHAT_PROPERTIES_UPDATED: CHAT_PROPERTIES_UPDATED,
|
|
413
552
|
CHAT_TRANSFERRED: CHAT_TRANSFERRED,
|
|
414
553
|
CUSTOMER_DISCONNECTED: CUSTOMER_DISCONNECTED,
|
|
415
|
-
CUSTOMER_PAGE_UPDATED: CUSTOMER_PAGE_UPDATED,
|
|
416
554
|
CUSTOMER_SIDE_STORAGE_UPDATED: CUSTOMER_SIDE_STORAGE_UPDATED,
|
|
417
555
|
CUSTOMER_UPDATED: CUSTOMER_UPDATED,
|
|
418
556
|
EVENT_PROPERTIES_DELETED: EVENT_PROPERTIES_DELETED,
|
|
@@ -428,637 +566,449 @@ var serverPushActions = /*#__PURE__*/Object.freeze({
|
|
|
428
566
|
INCOMING_MULTICAST: INCOMING_MULTICAST,
|
|
429
567
|
INCOMING_RICH_MESSAGE_POSTBACK: INCOMING_RICH_MESSAGE_POSTBACK,
|
|
430
568
|
INCOMING_TYPING_INDICATOR: INCOMING_TYPING_INDICATOR,
|
|
569
|
+
INCOMING_WELCOME_MESSAGE: INCOMING_WELCOME_MESSAGE,
|
|
431
570
|
QUEUE_POSITION_UPDATED: QUEUE_POSITION_UPDATED,
|
|
432
571
|
THREAD_PROPERTIES_DELETED: THREAD_PROPERTIES_DELETED,
|
|
433
572
|
THREAD_PROPERTIES_UPDATED: THREAD_PROPERTIES_UPDATED,
|
|
434
573
|
USER_ADDED_TO_CHAT: USER_ADDED_TO_CHAT,
|
|
435
|
-
USER_REMOVED_FROM_CHAT: USER_REMOVED_FROM_CHAT
|
|
574
|
+
USER_REMOVED_FROM_CHAT: USER_REMOVED_FROM_CHAT,
|
|
575
|
+
INCOMING_THINKING_INDICATOR: INCOMING_THINKING_INDICATOR,
|
|
576
|
+
INCOMING_EVENT_PREVIEW: INCOMING_EVENT_PREVIEW
|
|
436
577
|
});
|
|
437
578
|
|
|
438
|
-
var
|
|
439
|
-
var
|
|
440
|
-
var FILLED_FORM = 'filled_form';
|
|
441
|
-
var MESSAGE = 'message';
|
|
442
|
-
var RICH_MESSAGE = 'rich_message';
|
|
443
|
-
var SYSTEM_MESSAGE = 'system_message';
|
|
444
|
-
var CUSTOM = 'custom';
|
|
579
|
+
var ASC = 'asc';
|
|
580
|
+
var DESC = 'desc';
|
|
445
581
|
|
|
446
|
-
var
|
|
582
|
+
var sortOrders = /*#__PURE__*/Object.freeze({
|
|
447
583
|
__proto__: null,
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
FILLED_FORM: FILLED_FORM,
|
|
451
|
-
MESSAGE: MESSAGE,
|
|
452
|
-
RICH_MESSAGE: RICH_MESSAGE,
|
|
453
|
-
SYSTEM_MESSAGE: SYSTEM_MESSAGE,
|
|
454
|
-
CUSTOM: CUSTOM
|
|
584
|
+
ASC: ASC,
|
|
585
|
+
DESC: DESC
|
|
455
586
|
});
|
|
456
587
|
|
|
457
|
-
var
|
|
458
|
-
|
|
459
|
-
if (typeof event.customId === 'string') {
|
|
460
|
-
base.custom_id = event.customId;
|
|
461
|
-
}
|
|
462
|
-
if (isObject(event.properties)) {
|
|
463
|
-
base.properties = event.properties;
|
|
464
|
-
}
|
|
465
|
-
return base;
|
|
466
|
-
};
|
|
588
|
+
var AGENT = 'agent';
|
|
589
|
+
var CUSTOMER = 'customer';
|
|
467
590
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
}
|
|
522
|
-
}
|
|
591
|
+
var userTypes = /*#__PURE__*/Object.freeze({
|
|
592
|
+
__proto__: null,
|
|
593
|
+
AGENT: AGENT,
|
|
594
|
+
CUSTOMER: CUSTOMER
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
var HISTORY_EVENT_COUNT_TARGET = 25;
|
|
598
|
+
var createState = function createState() {
|
|
599
|
+
return {
|
|
600
|
+
status: 'idle',
|
|
601
|
+
queuedTasks: [],
|
|
602
|
+
nextPageId: null
|
|
603
|
+
};
|
|
604
|
+
};
|
|
605
|
+
var createChatHistoryIterator = function createChatHistoryIterator(sdk, chatId) {
|
|
606
|
+
var historyState = createState();
|
|
607
|
+
var next = function (_next) {
|
|
608
|
+
function next(_x, _x2) {
|
|
609
|
+
return _next.apply(this, arguments);
|
|
610
|
+
}
|
|
611
|
+
next.toString = function () {
|
|
612
|
+
return _next.toString();
|
|
613
|
+
};
|
|
614
|
+
return next;
|
|
615
|
+
}(function (resolve, reject) {
|
|
616
|
+
switch (historyState.status) {
|
|
617
|
+
case 'idle':
|
|
618
|
+
historyState.status = 'fetching';
|
|
619
|
+
sdk.listThreads(historyState.nextPageId ? {
|
|
620
|
+
chatId: chatId,
|
|
621
|
+
pageId: historyState.nextPageId
|
|
622
|
+
} : {
|
|
623
|
+
chatId: chatId,
|
|
624
|
+
minEventsCount: HISTORY_EVENT_COUNT_TARGET
|
|
625
|
+
}).then(function (_ref) {
|
|
626
|
+
var threads = _ref.threads,
|
|
627
|
+
nextPageId = _ref.nextPageId;
|
|
628
|
+
historyState.nextPageId = nextPageId;
|
|
629
|
+
if (!historyState.nextPageId) {
|
|
630
|
+
historyState.status = 'done';
|
|
631
|
+
resolve({
|
|
632
|
+
value: {
|
|
633
|
+
threads: [].concat(threads).reverse()
|
|
634
|
+
},
|
|
635
|
+
done: true
|
|
636
|
+
});
|
|
637
|
+
} else {
|
|
638
|
+
historyState.status = 'idle';
|
|
639
|
+
resolve({
|
|
640
|
+
value: {
|
|
641
|
+
threads: [].concat(threads).reverse()
|
|
642
|
+
},
|
|
643
|
+
done: false
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
var queuedTask = historyState.queuedTasks.shift();
|
|
647
|
+
if (!queuedTask) {
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
next(queuedTask.resolve, queuedTask.reject);
|
|
651
|
+
}, function (err) {
|
|
652
|
+
var queuedTasks = historyState.queuedTasks;
|
|
653
|
+
historyState.status = 'idle';
|
|
654
|
+
historyState.queuedTasks = [];
|
|
655
|
+
reject(err);
|
|
656
|
+
queuedTasks.forEach(function (queuedTask) {
|
|
657
|
+
return queuedTask.reject(err);
|
|
658
|
+
});
|
|
523
659
|
});
|
|
524
|
-
return
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
type: event.type,
|
|
530
|
-
text: event.text,
|
|
531
|
-
system_message_type: event.systemMessageType
|
|
660
|
+
return;
|
|
661
|
+
case 'fetching':
|
|
662
|
+
historyState.queuedTasks.push({
|
|
663
|
+
resolve: resolve,
|
|
664
|
+
reject: reject
|
|
532
665
|
});
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
case CUSTOM:
|
|
539
|
-
{
|
|
540
|
-
var customEvent = _extends({}, createEventBase(event), {
|
|
541
|
-
type: event.type
|
|
666
|
+
return;
|
|
667
|
+
case 'done':
|
|
668
|
+
resolve({
|
|
669
|
+
value: undefined,
|
|
670
|
+
done: true
|
|
542
671
|
});
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
});
|
|
675
|
+
return {
|
|
676
|
+
next: function (_next2) {
|
|
677
|
+
function next() {
|
|
678
|
+
return _next2.apply(this, arguments);
|
|
547
679
|
}
|
|
548
|
-
|
|
680
|
+
next.toString = function () {
|
|
681
|
+
return _next2.toString();
|
|
682
|
+
};
|
|
683
|
+
return next;
|
|
684
|
+
}(function () {
|
|
685
|
+
return new Promise(next);
|
|
686
|
+
})
|
|
687
|
+
};
|
|
549
688
|
};
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
var
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
689
|
+
|
|
690
|
+
function createError(_ref) {
|
|
691
|
+
var message = _ref.message,
|
|
692
|
+
code = _ref.code;
|
|
693
|
+
var error = new Error(message);
|
|
694
|
+
error.code = code;
|
|
695
|
+
return error;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
var createReducer$1 = function createReducer(initialState, reducersMap) {
|
|
699
|
+
if (process.env.NODE_ENV !== 'development' && reducersMap[undefined]) {
|
|
700
|
+
// eslint-disable-next-line no-console
|
|
701
|
+
console.warn(["Reducer contains an 'undefined' action type.", 'Have you misspelled a constant?'].join('\n'));
|
|
559
702
|
}
|
|
560
|
-
return
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
active: active,
|
|
569
|
-
chat: {}
|
|
703
|
+
return function reducer(state, action) {
|
|
704
|
+
if (state === void 0) {
|
|
705
|
+
state = initialState;
|
|
706
|
+
}
|
|
707
|
+
if (hasOwn(action.type, reducersMap)) {
|
|
708
|
+
return reducersMap[action.type](state, action.payload);
|
|
709
|
+
}
|
|
710
|
+
return state;
|
|
570
711
|
};
|
|
571
|
-
if (typeof continuous === 'boolean') {
|
|
572
|
-
data.continuous = continuous;
|
|
573
|
-
}
|
|
574
|
-
if (!chat) {
|
|
575
|
-
return data;
|
|
576
|
-
}
|
|
577
|
-
var access = chat.access,
|
|
578
|
-
thread = chat.thread,
|
|
579
|
-
properties = chat.properties;
|
|
580
|
-
if (access && access.groupIds) {
|
|
581
|
-
data.chat.access = {
|
|
582
|
-
group_ids: access.groupIds
|
|
583
|
-
};
|
|
584
|
-
}
|
|
585
|
-
if (properties) {
|
|
586
|
-
data.chat.properties = properties;
|
|
587
|
-
}
|
|
588
|
-
if (thread) {
|
|
589
|
-
data.chat.thread = parseThreadData(thread);
|
|
590
|
-
}
|
|
591
|
-
return data;
|
|
592
712
|
};
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
return
|
|
596
|
-
chat: _extends({}, data.chat, {
|
|
597
|
-
id: requestData.chat.id
|
|
598
|
-
})
|
|
599
|
-
});
|
|
600
|
-
};
|
|
601
|
-
var parseCustomerSessionFields = function parseCustomerSessionFields(sessionFields) {
|
|
602
|
-
return toPairs(sessionFields).map(function (_ref2) {
|
|
603
|
-
var _ref3;
|
|
604
|
-
var key = _ref2[0],
|
|
605
|
-
value = _ref2[1];
|
|
606
|
-
return _ref3 = {}, _ref3[key] = value, _ref3;
|
|
607
|
-
});
|
|
713
|
+
|
|
714
|
+
var getAllRequests = function getAllRequests(state) {
|
|
715
|
+
return state.requests;
|
|
608
716
|
};
|
|
609
|
-
var
|
|
610
|
-
|
|
611
|
-
if (update.sessionFields) {
|
|
612
|
-
result.session_fields = parseCustomerSessionFields(update.sessionFields);
|
|
613
|
-
}
|
|
614
|
-
return result;
|
|
717
|
+
var getConnectionStatus = function getConnectionStatus(state) {
|
|
718
|
+
return state.connection.status;
|
|
615
719
|
};
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
return {
|
|
619
|
-
type: DESTROY,
|
|
620
|
-
payload: {
|
|
621
|
-
reason: reason
|
|
622
|
-
}
|
|
623
|
-
};
|
|
720
|
+
var getRequest = function getRequest(state, id) {
|
|
721
|
+
return state.requests[id];
|
|
624
722
|
};
|
|
625
|
-
var
|
|
626
|
-
return
|
|
627
|
-
type: LOGIN_SUCCESS,
|
|
628
|
-
payload: payload
|
|
629
|
-
};
|
|
723
|
+
var getSelfId = function getSelfId(state) {
|
|
724
|
+
return state.users.self.id;
|
|
630
725
|
};
|
|
631
|
-
var
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
payload: {
|
|
635
|
-
reason: reason
|
|
636
|
-
}
|
|
637
|
-
};
|
|
726
|
+
var isChatActive = function isChatActive(state, chatId) {
|
|
727
|
+
var chat = state.chats[chatId];
|
|
728
|
+
return !!chat && chat.active;
|
|
638
729
|
};
|
|
639
|
-
var
|
|
640
|
-
|
|
641
|
-
fresh = false;
|
|
642
|
-
}
|
|
643
|
-
return {
|
|
644
|
-
type: PREFETCH_TOKEN,
|
|
645
|
-
payload: {
|
|
646
|
-
fresh: fresh
|
|
647
|
-
}
|
|
648
|
-
};
|
|
730
|
+
var isConnected = function isConnected(state) {
|
|
731
|
+
return getConnectionStatus(state) === CONNECTED;
|
|
649
732
|
};
|
|
650
|
-
var
|
|
651
|
-
return
|
|
652
|
-
type: RECONNECT,
|
|
653
|
-
payload: {
|
|
654
|
-
delay: delay
|
|
655
|
-
}
|
|
656
|
-
};
|
|
733
|
+
var isDestroyed = function isDestroyed(state) {
|
|
734
|
+
return getConnectionStatus(state) === DESTROYED;
|
|
657
735
|
};
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
// we should explore providing stricter types for this in the future
|
|
661
|
-
var sendRequest = function sendRequest(action, payload, source) {
|
|
736
|
+
var getRegionParam = function getRegionParam(options) {
|
|
737
|
+
var _options$region;
|
|
662
738
|
return {
|
|
663
|
-
|
|
664
|
-
payload: _extends({
|
|
665
|
-
request: {
|
|
666
|
-
action: action,
|
|
667
|
-
payload: payload
|
|
668
|
-
}
|
|
669
|
-
}, source && {
|
|
670
|
-
source: source
|
|
671
|
-
})
|
|
739
|
+
'x-region': (_options$region = options.region) != null ? _options$region : ''
|
|
672
740
|
};
|
|
673
741
|
};
|
|
674
|
-
var
|
|
675
|
-
var
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
var payload = {
|
|
679
|
-
chat_id: chatId,
|
|
680
|
-
event: parseEvent(event)
|
|
681
|
-
};
|
|
682
|
-
if (attachToLastThread) {
|
|
683
|
-
payload.attach_to_last_thread = true;
|
|
742
|
+
var getEnvPart = function getEnvPart(_ref) {
|
|
743
|
+
var env = _ref.env;
|
|
744
|
+
if (env === 'production') {
|
|
745
|
+
return '';
|
|
684
746
|
}
|
|
685
|
-
return
|
|
747
|
+
return "." + env;
|
|
686
748
|
};
|
|
687
|
-
var
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
id: id,
|
|
692
|
-
active: active
|
|
693
|
-
}
|
|
694
|
-
};
|
|
749
|
+
var getApiOrigin = function getApiOrigin(state) {
|
|
750
|
+
{
|
|
751
|
+
return "https://api" + getEnvPart(state) + ".livechatinc.com";
|
|
752
|
+
}
|
|
695
753
|
};
|
|
696
|
-
var
|
|
697
|
-
return
|
|
698
|
-
type: SET_SELF_ID,
|
|
699
|
-
payload: {
|
|
700
|
-
id: id
|
|
701
|
-
}
|
|
702
|
-
};
|
|
754
|
+
var getServerUrl = function getServerUrl(state) {
|
|
755
|
+
return getApiOrigin(state) + "/v3.6/customer";
|
|
703
756
|
};
|
|
704
|
-
var
|
|
757
|
+
var createInitialState = function createInitialState(initialStateData) {
|
|
758
|
+
var _initialStateData$app = initialStateData.application,
|
|
759
|
+
application = _initialStateData$app === void 0 ? {} : _initialStateData$app,
|
|
760
|
+
organizationId = initialStateData.organizationId,
|
|
761
|
+
_initialStateData$gro = initialStateData.groupId,
|
|
762
|
+
groupId = _initialStateData$gro === void 0 ? null : _initialStateData$gro,
|
|
763
|
+
env = initialStateData.env,
|
|
764
|
+
_initialStateData$pag = initialStateData.page,
|
|
765
|
+
page = _initialStateData$pag === void 0 ? null : _initialStateData$pag,
|
|
766
|
+
_initialStateData$reg = initialStateData.region,
|
|
767
|
+
region = _initialStateData$reg === void 0 ? null : _initialStateData$reg,
|
|
768
|
+
_initialStateData$ref = initialStateData.referrer,
|
|
769
|
+
referrer = _initialStateData$ref === void 0 ? null : _initialStateData$ref,
|
|
770
|
+
_initialStateData$tab = initialStateData.tabId,
|
|
771
|
+
tabId = _initialStateData$tab === void 0 ? null : _initialStateData$tab,
|
|
772
|
+
_initialStateData$uni = initialStateData.uniqueGroups,
|
|
773
|
+
uniqueGroups = _initialStateData$uni === void 0 ? false : _initialStateData$uni,
|
|
774
|
+
_initialStateData$mob = initialStateData.mobile,
|
|
775
|
+
mobile = _initialStateData$mob === void 0 ? false : _initialStateData$mob;
|
|
705
776
|
return {
|
|
706
|
-
|
|
777
|
+
application: _extends({}, application, {
|
|
778
|
+
name: "customer_sdk",
|
|
779
|
+
version: "5.0.1"
|
|
780
|
+
}),
|
|
781
|
+
organizationId: organizationId,
|
|
782
|
+
env: env,
|
|
783
|
+
groupId: groupId,
|
|
784
|
+
chats: {},
|
|
785
|
+
connection: {
|
|
786
|
+
status: DISCONNECTED
|
|
787
|
+
},
|
|
788
|
+
page: page,
|
|
789
|
+
region: region,
|
|
790
|
+
referrer: referrer,
|
|
791
|
+
tabId: tabId,
|
|
792
|
+
requests: {},
|
|
793
|
+
users: {
|
|
794
|
+
self: {
|
|
795
|
+
id: null,
|
|
796
|
+
type: CUSTOMER
|
|
797
|
+
},
|
|
798
|
+
others: {}
|
|
799
|
+
},
|
|
800
|
+
uniqueGroups: uniqueGroups,
|
|
801
|
+
mobile: mobile
|
|
707
802
|
};
|
|
708
803
|
};
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
var
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
promise = _promiseDeferred.promise;
|
|
717
|
-
action.payload.promise = promise;
|
|
718
|
-
action.payload.resolve = resolve;
|
|
719
|
-
action.payload.reject = reject;
|
|
720
|
-
store.dispatch(action);
|
|
721
|
-
return promise;
|
|
722
|
-
};
|
|
723
|
-
|
|
724
|
-
var AUTHENTICATION = 'AUTHENTICATION';
|
|
725
|
-
var AUTHORIZATION = 'AUTHORIZATION';
|
|
726
|
-
var CHAT_ALREADY_ACTIVE = 'CHAT_ALREADY_ACTIVE';
|
|
727
|
-
var CHAT_LIMIT_REACHED = 'CHAT_LIMIT_REACHED';
|
|
728
|
-
var CUSTOMER_BANNED$1 = 'CUSTOMER_BANNED';
|
|
729
|
-
var CUSTOMER_SESSION_FIELDS_LIMIT_REACHED = 'CUSTOMER_SESSION_FIELDS_LIMIT_REACHED';
|
|
730
|
-
var ENTITY_TOO_LARGE = 'ENTITY_TOO_LARGE';
|
|
731
|
-
var GREETING_NOT_FOUND = 'GREETING_NOT_FOUND';
|
|
732
|
-
var GROUP_OFFLINE = 'GROUP_OFFLINE';
|
|
733
|
-
var GROUPS_OFFLINE = 'GROUPS_OFFLINE';
|
|
734
|
-
var GROUP_NOT_FOUND = 'GROUP_NOT_FOUND';
|
|
735
|
-
var GROUP_UNAVAILABLE = 'GROUP_UNAVAILABLE';
|
|
736
|
-
var INTERNAL = 'INTERNAL';
|
|
737
|
-
var LICENSE_EXPIRED$1 = 'LICENSE_EXPIRED';
|
|
738
|
-
// actually this can happen only when using REST
|
|
739
|
-
var MISDIRECTED_REQUEST = 'MISDIRECTED_REQUEST';
|
|
740
|
-
var PENDING_REQUESTS_LIMIT_REACHED = 'PENDING_REQUESTS_LIMIT_REACHED';
|
|
741
|
-
var REQUEST_TIMEOUT$1 = 'REQUEST_TIMEOUT';
|
|
742
|
-
var SERVICE_UNAVAILABLE = 'SERVICE_UNAVAILABLE';
|
|
743
|
-
var UNSUPPORTED_VERSION$1 = 'UNSUPPORTED_VERSION';
|
|
744
|
-
var USERS_LIMIT_REACHED = 'USERS_LIMIT_REACHED';
|
|
745
|
-
var VALIDATION = 'VALIDATION';
|
|
746
|
-
var WRONG_PRODUCT_VERSION = 'WRONG_PRODUCT_VERSION';
|
|
747
|
-
|
|
748
|
-
var serverErrorCodes = /*#__PURE__*/Object.freeze({
|
|
749
|
-
__proto__: null,
|
|
750
|
-
AUTHENTICATION: AUTHENTICATION,
|
|
751
|
-
AUTHORIZATION: AUTHORIZATION,
|
|
752
|
-
CHAT_ALREADY_ACTIVE: CHAT_ALREADY_ACTIVE,
|
|
753
|
-
CHAT_LIMIT_REACHED: CHAT_LIMIT_REACHED,
|
|
754
|
-
CUSTOMER_BANNED: CUSTOMER_BANNED$1,
|
|
755
|
-
CUSTOMER_SESSION_FIELDS_LIMIT_REACHED: CUSTOMER_SESSION_FIELDS_LIMIT_REACHED,
|
|
756
|
-
ENTITY_TOO_LARGE: ENTITY_TOO_LARGE,
|
|
757
|
-
GREETING_NOT_FOUND: GREETING_NOT_FOUND,
|
|
758
|
-
GROUP_OFFLINE: GROUP_OFFLINE,
|
|
759
|
-
GROUPS_OFFLINE: GROUPS_OFFLINE,
|
|
760
|
-
GROUP_NOT_FOUND: GROUP_NOT_FOUND,
|
|
761
|
-
GROUP_UNAVAILABLE: GROUP_UNAVAILABLE,
|
|
762
|
-
INTERNAL: INTERNAL,
|
|
763
|
-
LICENSE_EXPIRED: LICENSE_EXPIRED$1,
|
|
764
|
-
MISDIRECTED_REQUEST: MISDIRECTED_REQUEST,
|
|
765
|
-
PENDING_REQUESTS_LIMIT_REACHED: PENDING_REQUESTS_LIMIT_REACHED,
|
|
766
|
-
REQUEST_TIMEOUT: REQUEST_TIMEOUT$1,
|
|
767
|
-
SERVICE_UNAVAILABLE: SERVICE_UNAVAILABLE,
|
|
768
|
-
UNSUPPORTED_VERSION: UNSUPPORTED_VERSION$1,
|
|
769
|
-
USERS_LIMIT_REACHED: USERS_LIMIT_REACHED,
|
|
770
|
-
VALIDATION: VALIDATION,
|
|
771
|
-
WRONG_PRODUCT_VERSION: WRONG_PRODUCT_VERSION
|
|
772
|
-
});
|
|
773
|
-
|
|
774
|
-
var getSideStorageKeyByLicense = function getSideStorageKeyByLicense(store, licenseId) {
|
|
775
|
-
var _store$getState = store.getState(),
|
|
776
|
-
groupId = _store$getState.groupId,
|
|
777
|
-
uniqueGroups = _store$getState.uniqueGroups;
|
|
778
|
-
return "side_storage_" + licenseId + (uniqueGroups ? ":" + groupId : '');
|
|
804
|
+
var removeStoredRequest = function removeStoredRequest(state, _ref2) {
|
|
805
|
+
var id = _ref2.id;
|
|
806
|
+
var _state$requests = state.requests,
|
|
807
|
+
requests = _objectWithoutPropertiesLoose(_state$requests, [id].map(_toPropertyKey));
|
|
808
|
+
return _extends({}, state, {
|
|
809
|
+
requests: requests
|
|
810
|
+
});
|
|
779
811
|
};
|
|
780
|
-
var
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
812
|
+
var setConnectionStatus = function setConnectionStatus(status, state) {
|
|
813
|
+
return _extends({}, state, {
|
|
814
|
+
connection: _extends({}, state.connection, {
|
|
815
|
+
status: status
|
|
816
|
+
})
|
|
817
|
+
});
|
|
786
818
|
};
|
|
787
|
-
var
|
|
788
|
-
var
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
return JSON.parse(organizationSideStorage || '{}');
|
|
794
|
-
})["catch"](noop);
|
|
795
|
-
}
|
|
796
|
-
return storage.setItem(sideStorageOrganizationKey, sideStorage)["catch"](noop).then(function () {
|
|
797
|
-
return storage.removeItem(sideStorageLicenseKey)["catch"](noop).then(function () {
|
|
798
|
-
return JSON.parse(sideStorage);
|
|
799
|
-
})["catch"](noop);
|
|
819
|
+
var createReducer = (function (state) {
|
|
820
|
+
var _createReducer;
|
|
821
|
+
return createReducer$1(state, (_createReducer = {}, _createReducer[CHANGE_REGION] = function (state, _ref3) {
|
|
822
|
+
var region = _ref3.region;
|
|
823
|
+
return _extends({}, state, {
|
|
824
|
+
region: region
|
|
800
825
|
});
|
|
801
|
-
})
|
|
802
|
-
|
|
803
|
-
[
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
var
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
return;
|
|
823
|
-
}
|
|
824
|
-
onSuccess(result);
|
|
825
|
-
}, function (error) {
|
|
826
|
-
if (cancelled) {
|
|
827
|
-
return;
|
|
828
|
-
}
|
|
829
|
-
onError(error);
|
|
826
|
+
}, _createReducer[DESTROY] = function (state) {
|
|
827
|
+
return setConnectionStatus(DESTROYED, state);
|
|
828
|
+
}, _createReducer[LOGIN_SUCCESS] = function (state) {
|
|
829
|
+
return setConnectionStatus(CONNECTED, state);
|
|
830
|
+
}, _createReducer[PAUSE_CONNECTION] = function (state) {
|
|
831
|
+
return setConnectionStatus(PAUSED, state);
|
|
832
|
+
}, _createReducer[REQUEST_FAILED] = removeStoredRequest, _createReducer[RESPONSE_RECEIVED] = removeStoredRequest, _createReducer[PUSH_RESPONSE_RECEIVED] = removeStoredRequest, _createReducer[SEND_REQUEST] = function (state, _ref4) {
|
|
833
|
+
var _extends2;
|
|
834
|
+
var promise = _ref4.promise,
|
|
835
|
+
resolve = _ref4.resolve,
|
|
836
|
+
reject = _ref4.reject,
|
|
837
|
+
id = _ref4.id,
|
|
838
|
+
request = _ref4.request;
|
|
839
|
+
return _extends({}, state, {
|
|
840
|
+
requests: _extends({}, state.requests, (_extends2 = {}, _extends2[id] = {
|
|
841
|
+
id: id,
|
|
842
|
+
promise: promise,
|
|
843
|
+
resolve: resolve,
|
|
844
|
+
reject: reject,
|
|
845
|
+
request: request
|
|
846
|
+
}, _extends2))
|
|
830
847
|
});
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
848
|
+
}, _createReducer[SET_CHAT_ACTIVE] = function (state, _ref5) {
|
|
849
|
+
var _extends3;
|
|
850
|
+
var id = _ref5.id,
|
|
851
|
+
active = _ref5.active;
|
|
852
|
+
return _extends({}, state, {
|
|
853
|
+
chats: _extends({}, state.chats, (_extends3 = {}, _extends3[id] = _extends({}, state.chats[id], {
|
|
854
|
+
active: active
|
|
855
|
+
}), _extends3))
|
|
856
|
+
});
|
|
857
|
+
}, _createReducer[SET_SELF_ID] = function (state, payload) {
|
|
858
|
+
return _extends({}, state, {
|
|
859
|
+
users: _extends({}, state.users, {
|
|
860
|
+
self: _extends({}, state.users.self, {
|
|
861
|
+
id: payload.id
|
|
862
|
+
})
|
|
863
|
+
})
|
|
864
|
+
});
|
|
865
|
+
}, _createReducer[SOCKET_DISCONNECTED] = function (state) {
|
|
866
|
+
var previousStatus = getConnectionStatus(state);
|
|
867
|
+
if (process.env.NODE_ENV !== 'production' && (previousStatus === PAUSED || previousStatus === DESTROYED)) {
|
|
868
|
+
throw new Error("Got 'socket_disconnected' action when in " + previousStatus + " state. This should be an impossible state.");
|
|
836
869
|
}
|
|
837
|
-
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
}
|
|
842
|
-
|
|
870
|
+
var state1 = setConnectionStatus(previousStatus === DISCONNECTED ? DISCONNECTED : RECONNECTING, state);
|
|
871
|
+
return _extends({}, state1, {
|
|
872
|
+
requests: {}
|
|
873
|
+
});
|
|
874
|
+
}, _createReducer[UPDATE_CUSTOMER_PAGE$1] = function (state, page) {
|
|
875
|
+
return _extends({}, state, {
|
|
876
|
+
page: _extends({}, state.page, page)
|
|
877
|
+
});
|
|
878
|
+
}, _createReducer[CLEAR_SENSITIVE_SESSION_STATE] = function (state) {
|
|
879
|
+
return _extends({}, state, {
|
|
880
|
+
chats: {},
|
|
881
|
+
users: {
|
|
882
|
+
self: {
|
|
883
|
+
id: null,
|
|
884
|
+
type: CUSTOMER
|
|
885
|
+
},
|
|
886
|
+
others: {}
|
|
887
|
+
},
|
|
888
|
+
requests: {}
|
|
889
|
+
});
|
|
890
|
+
}, _createReducer[IDENTITY_CHANGED] = function (state) {
|
|
891
|
+
return state;
|
|
892
|
+
}, _createReducer));
|
|
893
|
+
});
|
|
894
|
+
|
|
895
|
+
function finalCreateStore(initialStateData) {
|
|
896
|
+
var compose = process.env.NODE_ENV === 'development' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
|
897
|
+
name: '@livechat/customer-sdk'
|
|
898
|
+
}) : identity;
|
|
899
|
+
var sideEffectsMiddleware = createSideEffectsMiddleware();
|
|
900
|
+
var store = createStore(createReducer(createInitialState(initialStateData)), compose(applyMiddleware(sideEffectsMiddleware)));
|
|
901
|
+
store.addSideEffectsHandler = sideEffectsMiddleware.add;
|
|
902
|
+
return store;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
var makeGraylogRequest = function makeGraylogRequest(url, body) {
|
|
843
906
|
return new Promise(function (resolve) {
|
|
844
|
-
|
|
907
|
+
var img = new Image();
|
|
908
|
+
img.src = url + "?" + body;
|
|
909
|
+
img.onerror = noop;
|
|
910
|
+
img.onload = function () {
|
|
911
|
+
return resolve();
|
|
912
|
+
};
|
|
845
913
|
});
|
|
846
914
|
};
|
|
847
|
-
function createLoginTask(auth, customerDataProvider, licenseId) {
|
|
848
|
-
var store;
|
|
849
|
-
var sentPage = null;
|
|
850
|
-
var task;
|
|
851
|
-
var backoffConfig = {
|
|
852
|
-
min: 300,
|
|
853
|
-
max: 60000,
|
|
854
|
-
jitter: 0.3
|
|
855
|
-
};
|
|
856
|
-
var defaultBackoffStrategy = createBackoff(backoffConfig);
|
|
857
|
-
var slowerBackoffStrategy = createBackoff(_extends({}, backoffConfig, {
|
|
858
|
-
min: 1000
|
|
859
|
-
}));
|
|
860
|
-
var currentBackoffStrategy = defaultBackoffStrategy;
|
|
861
|
-
var destroy$1 = function destroy$1(reason) {
|
|
862
|
-
return store.dispatch(destroy(reason));
|
|
863
|
-
};
|
|
864
|
-
var reconnect$1 = function reconnect$1() {
|
|
865
|
-
return store.dispatch(reconnect(currentBackoffStrategy.duration()));
|
|
866
|
-
};
|
|
867
|
-
var getTokenAndSideStorage = function getTokenAndSideStorage() {
|
|
868
|
-
return Promise.all([auth.getToken(), getSideStorage(store, licenseId)]);
|
|
869
|
-
};
|
|
870
|
-
var dispatchSelfId = function dispatchSelfId(_ref2) {
|
|
871
|
-
var token = _ref2[0],
|
|
872
|
-
sideStorage = _ref2[1];
|
|
873
|
-
var selfId = getSelfId(store.getState());
|
|
874
|
-
if (selfId === null) {
|
|
875
|
-
store.dispatch(setSelfId(token.entityId));
|
|
876
|
-
} else if (selfId !== token.entityId) {
|
|
877
|
-
var err = new Error('Identity has changed.');
|
|
878
|
-
err.code = IDENTITY_MISMATCH;
|
|
879
|
-
throw err;
|
|
880
|
-
}
|
|
881
|
-
return [token, sideStorage];
|
|
882
|
-
};
|
|
883
|
-
var _sendLogin = function sendLogin(_ref3) {
|
|
884
|
-
var token = _ref3[0],
|
|
885
|
-
sideStorage = _ref3[1];
|
|
886
|
-
var state = store.getState();
|
|
887
|
-
var application = state.application,
|
|
888
|
-
groupId = state.groupId,
|
|
889
|
-
page = state.page,
|
|
890
|
-
referrer = state.referrer,
|
|
891
|
-
mobile = state.mobile;
|
|
892
|
-
var payload = {
|
|
893
|
-
token: token.tokenType + " " + token.accessToken,
|
|
894
|
-
customer: typeof customerDataProvider === 'function' ? parseCustomerUpdate(customerDataProvider()) : {},
|
|
895
|
-
customer_side_storage: sideStorage,
|
|
896
|
-
is_mobile: mobile,
|
|
897
|
-
application: pick(['name', 'version'], application)
|
|
898
|
-
};
|
|
899
|
-
if (typeof groupId === 'number') {
|
|
900
|
-
payload.group_id = groupId;
|
|
901
|
-
}
|
|
902
|
-
if (application.channelType) {
|
|
903
|
-
payload.application.channel_type = application.channelType;
|
|
904
|
-
}
|
|
905
|
-
if (page !== null) {
|
|
906
|
-
sentPage = page;
|
|
907
|
-
payload.customer_page = page;
|
|
908
|
-
}
|
|
909
|
-
if (referrer !== null) {
|
|
910
|
-
payload.referrer = referrer;
|
|
911
|
-
}
|
|
912
|
-
return Promise.race([sendLoginFlowRequest(store, LOGIN, payload), delay(15 * 1000).then(function () {
|
|
913
|
-
return Promise.reject(createError({
|
|
914
|
-
message: 'Request timed out.',
|
|
915
|
-
code: REQUEST_TIMEOUT
|
|
916
|
-
}));
|
|
917
|
-
})]);
|
|
918
|
-
};
|
|
919
|
-
var updateCustomerPageIfNeeded = function updateCustomerPageIfNeeded() {
|
|
920
|
-
var _store$getState = store.getState(),
|
|
921
|
-
page = _store$getState.page;
|
|
922
|
-
if (sentPage !== page) {
|
|
923
|
-
sendLoginFlowRequest(store, UPDATE_CUSTOMER_PAGE$1, page)["catch"](noop);
|
|
924
|
-
}
|
|
925
|
-
sentPage = null;
|
|
926
|
-
};
|
|
927
|
-
return {
|
|
928
|
-
sendLogin: function sendLogin(_store) {
|
|
929
|
-
var _task;
|
|
930
|
-
// after switching to callbags, we should be able to use smth similar to redux-observable
|
|
931
|
-
// and thus just use store given to epic
|
|
932
|
-
store = _store;
|
|
933
|
-
(_task = task) == null ? void 0 : _task.cancel();
|
|
934
|
-
task = taskChain([getTokenAndSideStorage, dispatchSelfId, _sendLogin], function (loginResponse) {
|
|
935
|
-
task = null;
|
|
936
|
-
defaultBackoffStrategy.reset();
|
|
937
|
-
slowerBackoffStrategy.reset();
|
|
938
|
-
currentBackoffStrategy = defaultBackoffStrategy;
|
|
939
915
|
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
case MISDIRECTED_CONNECTION:
|
|
959
|
-
// socket gets reinitialized on this anyway, so just ignore it here
|
|
960
|
-
return;
|
|
961
|
-
case SDK_DESTROYED:
|
|
962
|
-
return;
|
|
963
|
-
// those are auth errors, we should maybe export those constants from the auth package
|
|
964
|
-
case 'SSO_IDENTITY_EXCEPTION':
|
|
965
|
-
case 'SSO_OAUTH_EXCEPTION':
|
|
966
|
-
if (error.message === 'server_error' || error.message === 'temporarily_unavailable') {
|
|
967
|
-
reconnect$1();
|
|
968
|
-
return;
|
|
969
|
-
}
|
|
970
|
-
destroy$1(error.message);
|
|
971
|
-
return;
|
|
972
|
-
case USERS_LIMIT_REACHED:
|
|
973
|
-
store.dispatch(pauseConnection(error.code.toLowerCase()));
|
|
974
|
-
return;
|
|
975
|
-
case IDENTITY_MISMATCH:
|
|
976
|
-
case CUSTOMER_BANNED$1:
|
|
977
|
-
case WRONG_PRODUCT_VERSION:
|
|
978
|
-
destroy$1(error.code.toLowerCase());
|
|
979
|
-
return;
|
|
980
|
-
case SERVICE_TEMPORARILY_UNAVAILABLE:
|
|
981
|
-
currentBackoffStrategy = slowerBackoffStrategy;
|
|
982
|
-
reconnect$1();
|
|
983
|
-
return;
|
|
984
|
-
default:
|
|
985
|
-
reconnect$1();
|
|
986
|
-
return;
|
|
987
|
-
}
|
|
988
|
-
});
|
|
989
|
-
},
|
|
990
|
-
cancel: function cancel() {
|
|
991
|
-
var _task2;
|
|
992
|
-
(_task2 = task) == null ? void 0 : _task2.cancel();
|
|
993
|
-
}
|
|
916
|
+
// eslint-disable-next-line local/no-livechat-package-direct-file-import
|
|
917
|
+
/**
|
|
918
|
+
* Logs event to Graylog with provided config data.
|
|
919
|
+
* Logging request is fired only when all of those conditions are true:
|
|
920
|
+
* 1. package is used in lc production environment
|
|
921
|
+
* 2. package is used standalone because only then "customer_sdk" will be set to customer_sdk
|
|
922
|
+
*/
|
|
923
|
+
var log = function log(_ref) {
|
|
924
|
+
var env = _ref.env,
|
|
925
|
+
organizationId = _ref.organizationId,
|
|
926
|
+
eventName = _ref.eventName;
|
|
927
|
+
if (env !== 'production' || "customer_sdk" !== 'customer_sdk') {
|
|
928
|
+
return Promise.resolve();
|
|
929
|
+
}
|
|
930
|
+
var message = {
|
|
931
|
+
event_name: eventName,
|
|
932
|
+
severity: 'Informational',
|
|
933
|
+
sdkVersion: "5.0.1"
|
|
994
934
|
};
|
|
995
|
-
|
|
935
|
+
var body = {
|
|
936
|
+
organizationId: organizationId,
|
|
937
|
+
event_id: 'chat_widget_customer_sdk',
|
|
938
|
+
message: JSON.stringify(message)
|
|
939
|
+
};
|
|
940
|
+
return makeGraylogRequest('https://applog.livechatinc.com/logs', buildQueryString(body));
|
|
941
|
+
};
|
|
996
942
|
|
|
997
|
-
var
|
|
943
|
+
var sendCustomerActions = function sendCustomerActions(_ref, _ref2) {
|
|
944
|
+
var auth = _ref.auth,
|
|
945
|
+
store = _ref.store;
|
|
946
|
+
var actions = _ref2.actions;
|
|
998
947
|
return auth.getToken().then(function (token) {
|
|
999
948
|
var state = store.getState();
|
|
1000
|
-
|
|
1001
|
-
store.dispatch(setSelfId(token.entityId));
|
|
1002
|
-
}
|
|
1003
|
-
var page = state.page;
|
|
1004
|
-
if (!page || !page.url) {
|
|
1005
|
-
return;
|
|
1006
|
-
}
|
|
1007
|
-
var query = buildQueryString({
|
|
949
|
+
var query = buildQueryString(_extends({
|
|
1008
950
|
organization_id: state.organizationId
|
|
1009
|
-
});
|
|
1010
|
-
var
|
|
1011
|
-
|
|
1012
|
-
group_id: state.groupId || 0,
|
|
1013
|
-
page_url: page.url
|
|
1014
|
-
};
|
|
1015
|
-
return unfetch(getServerUrl(state) + "/action/" + CHECK_GOALS$1 + "?" + query, {
|
|
951
|
+
}, getRegionParam(state)));
|
|
952
|
+
var apiUrl = getServerUrl(state) + "/action/" + SEND_CUSTOMER_ACTIONS + "?" + query;
|
|
953
|
+
return fetch(apiUrl, {
|
|
1016
954
|
method: 'POST',
|
|
1017
955
|
headers: {
|
|
1018
956
|
'Content-Type': 'application/json',
|
|
1019
957
|
Authorization: token.tokenType + " " + token.accessToken
|
|
1020
958
|
},
|
|
1021
|
-
body: JSON.stringify(
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
});
|
|
959
|
+
body: JSON.stringify({
|
|
960
|
+
actions: actions
|
|
961
|
+
}),
|
|
962
|
+
keepalive: true
|
|
963
|
+
}).then(noop);
|
|
1026
964
|
});
|
|
1027
965
|
};
|
|
1028
966
|
|
|
1029
|
-
var
|
|
1030
|
-
var
|
|
1031
|
-
|
|
1032
|
-
var
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
967
|
+
var sendGreetingButtonClicked = function sendGreetingButtonClicked(_ref, _ref2) {
|
|
968
|
+
var auth = _ref.auth,
|
|
969
|
+
store = _ref.store;
|
|
970
|
+
var greetingUniqueId = _ref2.greetingUniqueId,
|
|
971
|
+
buttonId = _ref2.buttonId;
|
|
972
|
+
return auth.getToken().then(function (token) {
|
|
973
|
+
var state = store.getState();
|
|
974
|
+
var query = buildQueryString(_extends({
|
|
975
|
+
organization_id: state.organizationId
|
|
976
|
+
}, getRegionParam(state)));
|
|
977
|
+
var apiUrl = getServerUrl(state) + "/action/" + SEND_GREETING_BUTTON_CLICKED + "?" + query;
|
|
978
|
+
return fetch(apiUrl, {
|
|
979
|
+
method: 'POST',
|
|
980
|
+
headers: {
|
|
981
|
+
'Content-Type': 'application/json',
|
|
982
|
+
Authorization: token.tokenType + " " + token.accessToken
|
|
983
|
+
},
|
|
984
|
+
body: JSON.stringify({
|
|
985
|
+
greeting_unique_id: greetingUniqueId,
|
|
986
|
+
button_id: buttonId
|
|
1039
987
|
}),
|
|
1040
|
-
|
|
1041
|
-
}
|
|
988
|
+
keepalive: true
|
|
989
|
+
}).then(noop);
|
|
1042
990
|
});
|
|
1043
991
|
};
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
992
|
+
|
|
993
|
+
// TODO: this thing is not really well typed and should be improved
|
|
994
|
+
var sendRequestAction = function sendRequestAction(store, action) {
|
|
995
|
+
action.payload.id = generateUniqueId(store.getState().requests);
|
|
996
|
+
var _promiseDeferred = promiseDeferred(),
|
|
997
|
+
resolve = _promiseDeferred.resolve,
|
|
998
|
+
reject = _promiseDeferred.reject,
|
|
999
|
+
promise = _promiseDeferred.promise;
|
|
1000
|
+
action.payload.promise = promise;
|
|
1001
|
+
action.payload.resolve = resolve;
|
|
1002
|
+
action.payload.reject = reject;
|
|
1003
|
+
store.dispatch(action);
|
|
1004
|
+
return promise;
|
|
1056
1005
|
};
|
|
1057
1006
|
|
|
1058
1007
|
var SUCCESS = Object.freeze({
|
|
1059
1008
|
success: true
|
|
1060
1009
|
});
|
|
1061
1010
|
|
|
1011
|
+
var _excluded$4 = ["group_id"];
|
|
1062
1012
|
var parseCommonEventProps = function parseCommonEventProps(threadId, event) {
|
|
1063
1013
|
var parsed = {
|
|
1064
1014
|
id: event.id,
|
|
@@ -1123,18 +1073,24 @@ var parseFile = function parseFile(thread, file) {
|
|
|
1123
1073
|
name: file.name
|
|
1124
1074
|
});
|
|
1125
1075
|
};
|
|
1126
|
-
var parseForm = function parseForm(thread, form) {
|
|
1076
|
+
var parseForm$1 = function parseForm(thread, form) {
|
|
1127
1077
|
return _extends({}, parseCommonEventProps(thread, form), {
|
|
1128
1078
|
authorId: 'system',
|
|
1129
1079
|
type: FORM,
|
|
1130
|
-
formId: form.form_id
|
|
1080
|
+
formId: form.form_id
|
|
1081
|
+
}, form.form_type && {
|
|
1082
|
+
formType: form.form_type
|
|
1083
|
+
}, {
|
|
1131
1084
|
fields: form.fields
|
|
1132
1085
|
});
|
|
1133
1086
|
};
|
|
1134
1087
|
var parseFilledForm = function parseFilledForm(thread, filledForm) {
|
|
1135
1088
|
return _extends({}, parseCommonEventProps(thread, filledForm), {
|
|
1136
1089
|
type: FILLED_FORM,
|
|
1137
|
-
formId: filledForm.form_id
|
|
1090
|
+
formId: filledForm.form_id
|
|
1091
|
+
}, filledForm.form_type && {
|
|
1092
|
+
formType: filledForm.form_type
|
|
1093
|
+
}, {
|
|
1138
1094
|
fields: filledForm.fields.map(function (field) {
|
|
1139
1095
|
switch (field.type) {
|
|
1140
1096
|
case 'group_chooser':
|
|
@@ -1144,7 +1100,7 @@ var parseFilledForm = function parseFilledForm(thread, filledForm) {
|
|
|
1144
1100
|
}
|
|
1145
1101
|
var _field$answer = field.answer,
|
|
1146
1102
|
groupId = _field$answer.group_id,
|
|
1147
|
-
answer = _objectWithoutPropertiesLoose(_field$answer,
|
|
1103
|
+
answer = _objectWithoutPropertiesLoose(_field$answer, _excluded$4);
|
|
1148
1104
|
return _extends({}, field, {
|
|
1149
1105
|
answer: _extends({}, answer, {
|
|
1150
1106
|
groupId: groupId
|
|
@@ -1188,69 +1144,147 @@ var parseRichMessageElement = function parseRichMessageElement(element) {
|
|
|
1188
1144
|
alternativeText: image.alternative_text
|
|
1189
1145
|
});
|
|
1190
1146
|
}
|
|
1147
|
+
if (element.ecommerce) {
|
|
1148
|
+
parsed.ecommerce = _extends({
|
|
1149
|
+
productId: element.ecommerce.product_id,
|
|
1150
|
+
viewType: element.ecommerce.view_type
|
|
1151
|
+
}, typeof element.ecommerce.label === 'string' && {
|
|
1152
|
+
label: element.ecommerce.label
|
|
1153
|
+
}, Array.isArray(element.ecommerce.options) && {
|
|
1154
|
+
options: element.ecommerce.options.map(function (option) {
|
|
1155
|
+
return _extends({
|
|
1156
|
+
label: option.label,
|
|
1157
|
+
optionId: option.option_id
|
|
1158
|
+
}, option.price !== undefined && {
|
|
1159
|
+
price: option.price
|
|
1160
|
+
}, option.regular_price !== undefined && {
|
|
1161
|
+
regularPrice: option.regular_price
|
|
1162
|
+
}, option.max_price !== undefined && {
|
|
1163
|
+
maxPrice: option.max_price
|
|
1164
|
+
}, option.currency !== undefined && {
|
|
1165
|
+
currency: option.currency
|
|
1166
|
+
}, typeof option.color === 'string' && {
|
|
1167
|
+
color: option.color
|
|
1168
|
+
}, option.image_url && _extends({
|
|
1169
|
+
imageUrl: option.image_url
|
|
1170
|
+
}, typeof option.image_thumbnail_url === 'string' && {
|
|
1171
|
+
imageThumbnailUrl: option.image_thumbnail_url
|
|
1172
|
+
}), typeof option.available === 'boolean' && {
|
|
1173
|
+
available: option.available
|
|
1174
|
+
}, typeof option.selected === 'boolean' && {
|
|
1175
|
+
selected: option.selected
|
|
1176
|
+
});
|
|
1177
|
+
})
|
|
1178
|
+
}, Array.isArray(element.ecommerce.addons) && {
|
|
1179
|
+
addons: element.ecommerce.addons.map(function (addon) {
|
|
1180
|
+
switch (addon.addon_type) {
|
|
1181
|
+
case 'price_range':
|
|
1182
|
+
return _extends({
|
|
1183
|
+
addonType: addon.addon_type
|
|
1184
|
+
}, addon.range_from !== undefined && {
|
|
1185
|
+
rangeFrom: addon.range_from
|
|
1186
|
+
}, addon.range_to !== undefined && {
|
|
1187
|
+
rangeTo: addon.range_to
|
|
1188
|
+
}, typeof addon.currency === 'string' && {
|
|
1189
|
+
currency: addon.currency
|
|
1190
|
+
});
|
|
1191
|
+
default:
|
|
1192
|
+
return {
|
|
1193
|
+
addonType: addon.addon_type
|
|
1194
|
+
};
|
|
1195
|
+
}
|
|
1196
|
+
})
|
|
1197
|
+
});
|
|
1198
|
+
}
|
|
1191
1199
|
if (element.buttons) {
|
|
1192
1200
|
parsed.buttons = element.buttons.map(function (serverButton) {
|
|
1193
1201
|
switch (serverButton.type) {
|
|
1194
1202
|
case 'message':
|
|
1203
|
+
case 'add_to_cart':
|
|
1204
|
+
case 'show_gallery':
|
|
1205
|
+
case 'copy':
|
|
1195
1206
|
case 'phone':
|
|
1196
1207
|
{
|
|
1197
|
-
return {
|
|
1208
|
+
return _extends({
|
|
1198
1209
|
type: serverButton.type,
|
|
1199
1210
|
text: serverButton.text,
|
|
1200
1211
|
postbackId: serverButton.postback_id,
|
|
1201
1212
|
userIds: serverButton.user_ids,
|
|
1202
1213
|
value: serverButton.value,
|
|
1203
1214
|
role: serverButton.role || 'default'
|
|
1204
|
-
}
|
|
1215
|
+
}, serverButton.button_id && {
|
|
1216
|
+
buttonId: serverButton.button_id
|
|
1217
|
+
});
|
|
1205
1218
|
}
|
|
1206
1219
|
case 'cancel':
|
|
1207
1220
|
{
|
|
1208
|
-
return {
|
|
1221
|
+
return _extends({
|
|
1209
1222
|
type: serverButton.type,
|
|
1210
1223
|
text: serverButton.text,
|
|
1211
1224
|
postbackId: serverButton.postback_id,
|
|
1212
1225
|
userIds: serverButton.user_ids,
|
|
1213
1226
|
role: serverButton.role || 'default'
|
|
1214
|
-
}
|
|
1227
|
+
}, serverButton.button_id && {
|
|
1228
|
+
buttonId: serverButton.button_id
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1231
|
+
case 'url':
|
|
1232
|
+
{
|
|
1233
|
+
var button = _extends({
|
|
1234
|
+
type: serverButton.type,
|
|
1235
|
+
text: serverButton.text,
|
|
1236
|
+
postbackId: serverButton.postback_id,
|
|
1237
|
+
userIds: serverButton.user_ids,
|
|
1238
|
+
value: serverButton.value,
|
|
1239
|
+
role: serverButton.role || 'default'
|
|
1240
|
+
}, serverButton.button_id && {
|
|
1241
|
+
buttonId: serverButton.button_id
|
|
1242
|
+
});
|
|
1243
|
+
if (serverButton.target) {
|
|
1244
|
+
button.target = serverButton.target;
|
|
1245
|
+
}
|
|
1246
|
+
return button;
|
|
1215
1247
|
}
|
|
1216
|
-
case '
|
|
1248
|
+
case 'open_external':
|
|
1217
1249
|
{
|
|
1218
|
-
var
|
|
1250
|
+
var _button = _extends({
|
|
1219
1251
|
type: serverButton.type,
|
|
1220
1252
|
text: serverButton.text,
|
|
1221
1253
|
postbackId: serverButton.postback_id,
|
|
1222
1254
|
userIds: serverButton.user_ids,
|
|
1223
1255
|
value: serverButton.value,
|
|
1224
1256
|
role: serverButton.role || 'default'
|
|
1225
|
-
}
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1257
|
+
}, serverButton.button_id && {
|
|
1258
|
+
buttonId: serverButton.button_id
|
|
1259
|
+
}, serverButton.target && {
|
|
1260
|
+
target: serverButton.target
|
|
1261
|
+
});
|
|
1262
|
+
return _button;
|
|
1230
1263
|
}
|
|
1231
1264
|
case 'webview':
|
|
1232
1265
|
{
|
|
1233
|
-
var
|
|
1266
|
+
var _button2 = _extends({
|
|
1234
1267
|
type: serverButton.type,
|
|
1235
1268
|
text: serverButton.text,
|
|
1236
1269
|
postbackId: serverButton.postback_id,
|
|
1237
1270
|
userIds: serverButton.user_ids,
|
|
1238
1271
|
value: serverButton.value,
|
|
1239
1272
|
role: serverButton.role || 'default'
|
|
1240
|
-
}
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
return _button;
|
|
1273
|
+
}, serverButton.button_id && {
|
|
1274
|
+
buttonId: serverButton.button_id
|
|
1275
|
+
});
|
|
1276
|
+
return _button2;
|
|
1245
1277
|
}
|
|
1246
1278
|
default:
|
|
1247
1279
|
{
|
|
1248
|
-
return {
|
|
1280
|
+
return _extends({
|
|
1249
1281
|
text: serverButton.text,
|
|
1250
1282
|
postbackId: serverButton.postback_id,
|
|
1251
1283
|
userIds: serverButton.user_ids,
|
|
1252
1284
|
role: serverButton.role || 'default'
|
|
1253
|
-
}
|
|
1285
|
+
}, serverButton.button_id && {
|
|
1286
|
+
buttonId: serverButton.button_id
|
|
1287
|
+
});
|
|
1254
1288
|
}
|
|
1255
1289
|
}
|
|
1256
1290
|
});
|
|
@@ -1262,6 +1296,7 @@ var parseRichMessage = function parseRichMessage(thread, richMessage) {
|
|
|
1262
1296
|
case 'cards':
|
|
1263
1297
|
case 'quick_replies':
|
|
1264
1298
|
case 'sticker':
|
|
1299
|
+
case 'ecommerce':
|
|
1265
1300
|
return _extends({}, parseCommonEventProps(thread, richMessage), {
|
|
1266
1301
|
type: RICH_MESSAGE,
|
|
1267
1302
|
template: richMessage.template_id,
|
|
@@ -1284,12 +1319,12 @@ var parseSystemMessage = function parseSystemMessage(thread, systemMessage) {
|
|
|
1284
1319
|
}
|
|
1285
1320
|
return parsed;
|
|
1286
1321
|
};
|
|
1287
|
-
var parseEvent
|
|
1322
|
+
var parseEvent = function parseEvent(thread, event) {
|
|
1288
1323
|
switch (event.type) {
|
|
1289
1324
|
case FILE:
|
|
1290
1325
|
return parseFile(thread, event);
|
|
1291
1326
|
case FORM:
|
|
1292
|
-
return parseForm(thread, event);
|
|
1327
|
+
return parseForm$1(thread, event);
|
|
1293
1328
|
case FILLED_FORM:
|
|
1294
1329
|
return parseFilledForm(thread, event);
|
|
1295
1330
|
case MESSAGE:
|
|
@@ -1310,10 +1345,11 @@ var parseGreeting = function parseGreeting(greeting) {
|
|
|
1310
1345
|
addon: greeting.addon || null,
|
|
1311
1346
|
uniqueId: greeting.unique_id,
|
|
1312
1347
|
displayedFirstTime: greeting.displayed_first_time,
|
|
1348
|
+
isExitIntent: greeting.is_exit_intent,
|
|
1313
1349
|
accepted: greeting.accepted || false,
|
|
1314
1350
|
subtype: greeting.subtype || 'greeting',
|
|
1315
1351
|
// threadId is typed as nonoptional string but for greetings it doesn't exist
|
|
1316
|
-
event: parseEvent
|
|
1352
|
+
event: parseEvent(null, greeting.event),
|
|
1317
1353
|
agent: {
|
|
1318
1354
|
id: greeting.agent.id,
|
|
1319
1355
|
name: greeting.agent.name,
|
|
@@ -1326,7 +1362,7 @@ var parseGreeting = function parseGreeting(greeting) {
|
|
|
1326
1362
|
|
|
1327
1363
|
// we could use `mergeAll` for this, but we need to preserve insertion order here
|
|
1328
1364
|
// so it's better to rely on a custom implementation
|
|
1329
|
-
var parseCustomerSessionFields
|
|
1365
|
+
var parseCustomerSessionFields = function parseCustomerSessionFields(sessionFields) {
|
|
1330
1366
|
return sessionFields.reduce(function (acc, field) {
|
|
1331
1367
|
var _Object$keys = Object.keys(field),
|
|
1332
1368
|
key = _Object$keys[0];
|
|
@@ -1357,7 +1393,7 @@ var parseThread = function parseThread(chatId, thread) {
|
|
|
1357
1393
|
createdAt: thread.created_at,
|
|
1358
1394
|
userIds: thread.user_ids,
|
|
1359
1395
|
events: thread.events.map(function (event) {
|
|
1360
|
-
return parseEvent
|
|
1396
|
+
return parseEvent(thread.id, event);
|
|
1361
1397
|
}).filter(Boolean),
|
|
1362
1398
|
properties: properties,
|
|
1363
1399
|
previousThreadId: thread.previous_thread_id || null,
|
|
@@ -1390,7 +1426,7 @@ var parseChatAgent = function parseChatAgent(agent) {
|
|
|
1390
1426
|
var parseCustomerOptionalProps = function parseCustomerOptionalProps(customerProps) {
|
|
1391
1427
|
var optionalProps = pickOwn(['avatar', 'email', 'name'], customerProps);
|
|
1392
1428
|
if (customerProps.session_fields) {
|
|
1393
|
-
optionalProps.sessionFields = parseCustomerSessionFields
|
|
1429
|
+
optionalProps.sessionFields = parseCustomerSessionFields(customerProps.session_fields);
|
|
1394
1430
|
}
|
|
1395
1431
|
return optionalProps;
|
|
1396
1432
|
};
|
|
@@ -1421,44 +1457,315 @@ var parseCustomer = function parseCustomer(customer) {
|
|
|
1421
1457
|
}
|
|
1422
1458
|
});
|
|
1423
1459
|
};
|
|
1424
|
-
var
|
|
1425
|
-
var agent = payload.agent,
|
|
1426
|
-
queue = payload.queue;
|
|
1460
|
+
var parseQueueUpdate = function parseQueueUpdate(queueUpdate) {
|
|
1427
1461
|
return {
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1462
|
+
position: queueUpdate.position,
|
|
1463
|
+
waitTime: queueUpdate.wait_time
|
|
1464
|
+
};
|
|
1465
|
+
};
|
|
1466
|
+
var parseQueue = function parseQueue(queue) {
|
|
1467
|
+
return _extends({}, parseQueueUpdate(queue), {
|
|
1468
|
+
queuedAt: queue.queued_at
|
|
1469
|
+
});
|
|
1470
|
+
};
|
|
1471
|
+
var parseChatUser = function parseChatUser(user) {
|
|
1472
|
+
return user.type === CUSTOMER ? parseChatCustomer(user) : parseChatAgent(user);
|
|
1473
|
+
};
|
|
1474
|
+
var parseGroupStatus = function parseGroupStatus(status) {
|
|
1475
|
+
return status === 'offline' ? 'offline' : 'online';
|
|
1476
|
+
};
|
|
1477
|
+
|
|
1478
|
+
var getSideStorageKey = function getSideStorageKey(store) {
|
|
1479
|
+
var _store$getState = store.getState(),
|
|
1480
|
+
organizationId = _store$getState.organizationId,
|
|
1481
|
+
groupId = _store$getState.groupId,
|
|
1482
|
+
uniqueGroups = _store$getState.uniqueGroups;
|
|
1483
|
+
return "side_storage_" + organizationId + (uniqueGroups ? ":" + groupId : '');
|
|
1484
|
+
};
|
|
1485
|
+
var getSideStorage = function getSideStorage(store, parentStorage) {
|
|
1486
|
+
var storage = createAsyncStorage(parentStorage);
|
|
1487
|
+
var sideStorageKey = getSideStorageKey(store);
|
|
1488
|
+
return storage.getItem(sideStorageKey)["catch"](noop).then(function (sideStorage) {
|
|
1489
|
+
return JSON.parse(sideStorage || '{}');
|
|
1490
|
+
})
|
|
1491
|
+
// shouldnt get triggered, just a defensive measure against malformed storage entries
|
|
1492
|
+
["catch"](noop);
|
|
1493
|
+
};
|
|
1494
|
+
var saveSideStorage = function saveSideStorage(store, sideStorage, parentStorage) {
|
|
1495
|
+
var storage = createAsyncStorage(parentStorage);
|
|
1496
|
+
storage.setItem(getSideStorageKey(store), JSON.stringify(sideStorage))["catch"](noop);
|
|
1497
|
+
};
|
|
1498
|
+
var clearSideStorage = function clearSideStorage(store, parentStorage) {
|
|
1499
|
+
var storage = createAsyncStorage(parentStorage);
|
|
1500
|
+
storage.removeItem(getSideStorageKey(store))["catch"](noop);
|
|
1501
|
+
};
|
|
1502
|
+
|
|
1503
|
+
var failAllRequests = function failAllRequests(_ref, reason) {
|
|
1504
|
+
var getState = _ref.getState,
|
|
1505
|
+
dispatch = _ref.dispatch;
|
|
1506
|
+
var state = getState();
|
|
1507
|
+
var requests = getAllRequests(state);
|
|
1508
|
+
dispatch({
|
|
1509
|
+
type: FAIL_ALL_REQUESTS,
|
|
1510
|
+
payload: {
|
|
1511
|
+
rejects: Object.keys(requests).map(function (requestId) {
|
|
1512
|
+
return requests[requestId].reject;
|
|
1513
|
+
}),
|
|
1514
|
+
reason: reason
|
|
1515
|
+
}
|
|
1516
|
+
});
|
|
1517
|
+
};
|
|
1518
|
+
var failRequest = function failRequest(_ref2, requestAction, error) {
|
|
1519
|
+
var getState = _ref2.getState,
|
|
1520
|
+
dispatch = _ref2.dispatch;
|
|
1521
|
+
var requestId = requestAction.payload.id;
|
|
1522
|
+
dispatch({
|
|
1523
|
+
type: REQUEST_FAILED,
|
|
1524
|
+
payload: {
|
|
1525
|
+
id: requestId,
|
|
1526
|
+
reject: getState().requests[requestId].reject,
|
|
1527
|
+
error: error
|
|
1528
|
+
}
|
|
1529
|
+
});
|
|
1530
|
+
};
|
|
1531
|
+
|
|
1532
|
+
var checkGoals = function checkGoals(store, auth, sessionFields) {
|
|
1533
|
+
return auth.getToken().then(function (token) {
|
|
1534
|
+
var state = store.getState();
|
|
1535
|
+
if (getSelfId(state) === null) {
|
|
1536
|
+
store.dispatch(setSelfId(token.entityId));
|
|
1537
|
+
}
|
|
1538
|
+
var page = state.page;
|
|
1539
|
+
if (!page || !page.url) {
|
|
1540
|
+
return;
|
|
1541
|
+
}
|
|
1542
|
+
var query = buildQueryString(_extends({
|
|
1543
|
+
organization_id: state.organizationId
|
|
1544
|
+
}, getRegionParam(state)));
|
|
1545
|
+
var payload = {
|
|
1546
|
+
session_fields: parseCustomerSessionFields$1(sessionFields || {}),
|
|
1547
|
+
group_id: state.groupId || 0,
|
|
1548
|
+
page_url: page.url
|
|
1549
|
+
};
|
|
1550
|
+
return unfetch(getServerUrl(state) + "/action/" + CHECK_GOALS + "?" + query, {
|
|
1551
|
+
method: 'POST',
|
|
1552
|
+
headers: {
|
|
1553
|
+
'Content-Type': 'application/json',
|
|
1554
|
+
Authorization: token.tokenType + " " + token.accessToken
|
|
1555
|
+
},
|
|
1556
|
+
body: JSON.stringify(payload)
|
|
1557
|
+
}).then(function () {
|
|
1558
|
+
// TODO: we should actually normalize response here
|
|
1559
|
+
return undefined;
|
|
1560
|
+
});
|
|
1561
|
+
});
|
|
1562
|
+
};
|
|
1563
|
+
|
|
1564
|
+
var taskChain = function taskChain(_ref, onSuccess, onError) {
|
|
1565
|
+
var steps = _arrayLikeToArray(_ref).slice(0);
|
|
1566
|
+
var cancelled = false;
|
|
1567
|
+
var _next = function next(intermediateResult) {
|
|
1568
|
+
var step = steps.shift();
|
|
1569
|
+
promiseTry(function () {
|
|
1570
|
+
return step(intermediateResult);
|
|
1571
|
+
}).then(function (result) {
|
|
1572
|
+
if (cancelled) {
|
|
1573
|
+
return;
|
|
1574
|
+
}
|
|
1575
|
+
if (steps.length) {
|
|
1576
|
+
_next(result);
|
|
1577
|
+
return;
|
|
1578
|
+
}
|
|
1579
|
+
onSuccess(result);
|
|
1580
|
+
}, function (error) {
|
|
1581
|
+
if (cancelled) {
|
|
1582
|
+
return;
|
|
1583
|
+
}
|
|
1584
|
+
onError(error);
|
|
1585
|
+
});
|
|
1586
|
+
};
|
|
1587
|
+
_next();
|
|
1588
|
+
return {
|
|
1589
|
+
cancel: function cancel() {
|
|
1590
|
+
cancelled = true;
|
|
1591
|
+
}
|
|
1592
|
+
};
|
|
1593
|
+
};
|
|
1594
|
+
var sendLoginFlowRequest = function sendLoginFlowRequest(store, type, payload) {
|
|
1595
|
+
return sendRequestAction(store, sendRequest$1(type, payload, 'login'));
|
|
1596
|
+
};
|
|
1597
|
+
var delay = function delay(ms) {
|
|
1598
|
+
return new Promise(function (resolve) {
|
|
1599
|
+
setTimeout(resolve, ms);
|
|
1600
|
+
});
|
|
1601
|
+
};
|
|
1602
|
+
function createLoginTask(auth, customerDataProvider, parentStorage) {
|
|
1603
|
+
var store;
|
|
1604
|
+
var sentPage = null;
|
|
1605
|
+
var task;
|
|
1606
|
+
var backoffConfig = {
|
|
1607
|
+
min: 300,
|
|
1608
|
+
max: 60000,
|
|
1609
|
+
jitter: 0.3
|
|
1610
|
+
};
|
|
1611
|
+
var defaultBackoffStrategy = createBackoff(backoffConfig);
|
|
1612
|
+
var slowerBackoffStrategy = createBackoff(_extends({}, backoffConfig, {
|
|
1613
|
+
min: 1000
|
|
1614
|
+
}));
|
|
1615
|
+
var currentBackoffStrategy = defaultBackoffStrategy;
|
|
1616
|
+
var destroy$1 = function destroy$1(reason) {
|
|
1617
|
+
return store.dispatch(destroy(reason));
|
|
1618
|
+
};
|
|
1619
|
+
var reconnect$1 = function reconnect$1() {
|
|
1620
|
+
return store.dispatch(reconnect(currentBackoffStrategy.duration()));
|
|
1621
|
+
};
|
|
1622
|
+
var getTokenAndSideStorage = function getTokenAndSideStorage() {
|
|
1623
|
+
return Promise.all([auth.getToken(), getSideStorage(store, parentStorage)]);
|
|
1624
|
+
};
|
|
1625
|
+
var dispatchSelfId = function dispatchSelfId(_ref3) {
|
|
1626
|
+
var token = _ref3[0],
|
|
1627
|
+
sideStorage = _ref3[1];
|
|
1628
|
+
var selfId = getSelfId(store.getState());
|
|
1629
|
+
if (selfId === null) {
|
|
1630
|
+
store.dispatch(setSelfId(token.entityId));
|
|
1631
|
+
} else if (selfId !== token.entityId) {
|
|
1632
|
+
if (parentStorage) {
|
|
1633
|
+
clearSideStorage(store, parentStorage);
|
|
1634
|
+
}
|
|
1635
|
+
store.dispatch(clearSensitiveSessionState());
|
|
1636
|
+
store.dispatch(setSelfId(token.entityId));
|
|
1637
|
+
store.dispatch(identityChanged({
|
|
1638
|
+
previousId: selfId,
|
|
1639
|
+
newId: token.entityId
|
|
1640
|
+
}));
|
|
1641
|
+
return [token, {}];
|
|
1642
|
+
}
|
|
1643
|
+
return [token, sideStorage];
|
|
1644
|
+
};
|
|
1645
|
+
var _sendLogin = function sendLogin(_ref4) {
|
|
1646
|
+
var token = _ref4[0],
|
|
1647
|
+
sideStorage = _ref4[1];
|
|
1648
|
+
var state = store.getState();
|
|
1649
|
+
var application = state.application,
|
|
1650
|
+
groupId = state.groupId,
|
|
1651
|
+
page = state.page,
|
|
1652
|
+
referrer = state.referrer,
|
|
1653
|
+
mobile = state.mobile,
|
|
1654
|
+
tabId = state.tabId;
|
|
1655
|
+
var payload = {
|
|
1656
|
+
token: token.tokenType + " " + token.accessToken,
|
|
1657
|
+
customer: typeof customerDataProvider === 'function' ? parseCustomerUpdate(customerDataProvider()) : {},
|
|
1658
|
+
customer_side_storage: sideStorage,
|
|
1659
|
+
is_mobile: mobile,
|
|
1660
|
+
application: pick(['name', 'version'], application)
|
|
1661
|
+
};
|
|
1662
|
+
if (typeof groupId === 'number') {
|
|
1663
|
+
payload.group_id = groupId;
|
|
1664
|
+
}
|
|
1665
|
+
if (application.channelType) {
|
|
1666
|
+
payload.application.channel_type = application.channelType;
|
|
1667
|
+
}
|
|
1668
|
+
if (page !== null) {
|
|
1669
|
+
sentPage = page;
|
|
1670
|
+
payload.customer_page = page;
|
|
1671
|
+
}
|
|
1672
|
+
if (referrer !== null) {
|
|
1673
|
+
payload.referrer = referrer;
|
|
1674
|
+
}
|
|
1675
|
+
if (tabId !== null) {
|
|
1676
|
+
payload.tab_id = tabId;
|
|
1677
|
+
}
|
|
1678
|
+
return Promise.race([sendLoginFlowRequest(store, LOGIN, payload), delay(15 * 1000).then(function () {
|
|
1679
|
+
return Promise.reject(createError({
|
|
1680
|
+
message: 'Request timed out.',
|
|
1681
|
+
code: REQUEST_TIMEOUT$1
|
|
1682
|
+
}));
|
|
1683
|
+
})]);
|
|
1684
|
+
};
|
|
1685
|
+
var updateCustomerPageIfNeeded = function updateCustomerPageIfNeeded() {
|
|
1686
|
+
var _store$getState = store.getState(),
|
|
1687
|
+
page = _store$getState.page;
|
|
1688
|
+
if (sentPage !== page) {
|
|
1689
|
+
sendLoginFlowRequest(store, UPDATE_CUSTOMER_PAGE, page)["catch"](noop);
|
|
1690
|
+
}
|
|
1691
|
+
sentPage = null;
|
|
1692
|
+
};
|
|
1693
|
+
return {
|
|
1694
|
+
sendLogin: function sendLogin(_store) {
|
|
1695
|
+
var _task;
|
|
1696
|
+
// after switching to callbags, we should be able to use smth similar to redux-observable
|
|
1697
|
+
// and thus just use store given to epic
|
|
1698
|
+
store = _store;
|
|
1699
|
+
(_task = task) == null || _task.cancel();
|
|
1700
|
+
task = taskChain([getTokenAndSideStorage, dispatchSelfId, _sendLogin], function (loginResponse) {
|
|
1701
|
+
task = null;
|
|
1702
|
+
defaultBackoffStrategy.reset();
|
|
1703
|
+
slowerBackoffStrategy.reset();
|
|
1704
|
+
currentBackoffStrategy = defaultBackoffStrategy;
|
|
1705
|
+
|
|
1706
|
+
// TODO: rethink if this should be handled by SDK consumer
|
|
1707
|
+
updateCustomerPageIfNeeded();
|
|
1708
|
+
store.dispatch(loginSuccess(loginResponse));
|
|
1709
|
+
}, function (error) {
|
|
1710
|
+
task = null;
|
|
1711
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
1712
|
+
console.error('[Customer SDK] Login flow has thrown code', error.code, 'with', error);
|
|
1713
|
+
}
|
|
1714
|
+
switch (error.code) {
|
|
1715
|
+
case AUTHENTICATION:
|
|
1716
|
+
auth.getFreshToken();
|
|
1717
|
+
reconnect$1();
|
|
1718
|
+
return;
|
|
1719
|
+
case CONNECTION_LOST:
|
|
1720
|
+
// this is connectivity problem, not a server error
|
|
1721
|
+
// and is taken care of in socket module
|
|
1722
|
+
// as it has its own backoff implementation
|
|
1723
|
+
return;
|
|
1724
|
+
case MISDIRECTED_CONNECTION$1:
|
|
1725
|
+
// socket gets reinitialized on this anyway, so just ignore it here
|
|
1726
|
+
return;
|
|
1727
|
+
case SDK_DESTROYED:
|
|
1728
|
+
return;
|
|
1729
|
+
// those are auth errors, we should maybe export those constants from the auth package
|
|
1730
|
+
case 'SSO_IDENTITY_EXCEPTION':
|
|
1731
|
+
case 'SSO_OAUTH_EXCEPTION':
|
|
1732
|
+
if (error.message === 'server_error' || error.message === 'temporarily_unavailable') {
|
|
1733
|
+
reconnect$1();
|
|
1734
|
+
return;
|
|
1735
|
+
}
|
|
1736
|
+
destroy$1(error.message);
|
|
1737
|
+
return;
|
|
1738
|
+
case USERS_LIMIT_REACHED:
|
|
1739
|
+
store.dispatch(pauseConnection(error.code.toLowerCase()));
|
|
1740
|
+
return;
|
|
1741
|
+
case CUSTOMER_BANNED:
|
|
1742
|
+
case WRONG_PRODUCT_VERSION:
|
|
1743
|
+
destroy$1(error.code.toLowerCase());
|
|
1744
|
+
return;
|
|
1745
|
+
case SERVICE_TEMPORARILY_UNAVAILABLE$1:
|
|
1746
|
+
currentBackoffStrategy = slowerBackoffStrategy;
|
|
1747
|
+
reconnect$1();
|
|
1748
|
+
return;
|
|
1749
|
+
default:
|
|
1750
|
+
reconnect$1();
|
|
1751
|
+
return;
|
|
1752
|
+
}
|
|
1753
|
+
});
|
|
1435
1754
|
},
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
return {
|
|
1441
|
-
position: queueUpdate.position,
|
|
1442
|
-
waitTime: queueUpdate.wait_time
|
|
1755
|
+
cancel: function cancel() {
|
|
1756
|
+
var _task2;
|
|
1757
|
+
(_task2 = task) == null || _task2.cancel();
|
|
1758
|
+
}
|
|
1443
1759
|
};
|
|
1444
|
-
}
|
|
1445
|
-
var parseQueue = function parseQueue(queue) {
|
|
1446
|
-
return _extends({}, parseQueueUpdate(queue), {
|
|
1447
|
-
queuedAt: queue.queued_at
|
|
1448
|
-
});
|
|
1449
|
-
};
|
|
1450
|
-
var parseChatUser = function parseChatUser(user) {
|
|
1451
|
-
return user.type === CUSTOMER ? parseChatCustomer(user) : parseChatAgent(user);
|
|
1452
|
-
};
|
|
1453
|
-
var parseGroupStatus = function parseGroupStatus(status) {
|
|
1454
|
-
return status === 'offline' ? 'offline' : 'online';
|
|
1455
|
-
};
|
|
1760
|
+
}
|
|
1456
1761
|
|
|
1762
|
+
var _excluded$3 = ["present"],
|
|
1763
|
+
_excluded2$1 = ["statistics"];
|
|
1457
1764
|
var _FAIL_ALL_REQUESTS_ME;
|
|
1458
1765
|
|
|
1459
1766
|
// TODO: rethink how we handle reconnects
|
|
1460
1767
|
var SMALL_RECONNECT_DELAY = 100;
|
|
1461
|
-
var FAIL_ALL_REQUESTS_MESSAGES = (_FAIL_ALL_REQUESTS_ME = {}, _FAIL_ALL_REQUESTS_ME[CONNECTION_LOST] = 'Connection lost.', _FAIL_ALL_REQUESTS_ME[MISDIRECTED_CONNECTION] = 'Connected to wrong region.', _FAIL_ALL_REQUESTS_ME);
|
|
1768
|
+
var FAIL_ALL_REQUESTS_MESSAGES = (_FAIL_ALL_REQUESTS_ME = {}, _FAIL_ALL_REQUESTS_ME[CONNECTION_LOST] = 'Connection lost.', _FAIL_ALL_REQUESTS_ME[MISDIRECTED_CONNECTION$1] = 'Connected to wrong region.', _FAIL_ALL_REQUESTS_ME);
|
|
1462
1769
|
var updateStateIfNeeded = function updateStateIfNeeded(store, action) {
|
|
1463
1770
|
var state = store.getState();
|
|
1464
1771
|
switch (action.type) {
|
|
@@ -1492,7 +1799,7 @@ var updateStateIfNeeded = function updateStateIfNeeded(store, action) {
|
|
|
1492
1799
|
}
|
|
1493
1800
|
}
|
|
1494
1801
|
};
|
|
1495
|
-
var sendRequest
|
|
1802
|
+
var sendRequest = function sendRequest(socket, _ref3, hasCustomIdentityProvider) {
|
|
1496
1803
|
var _ref3$payload = _ref3.payload,
|
|
1497
1804
|
id = _ref3$payload.id,
|
|
1498
1805
|
request = _ref3$payload.request;
|
|
@@ -1502,20 +1809,19 @@ var sendRequest$1 = function sendRequest(socket, _ref3) {
|
|
|
1502
1809
|
switch (frame.action) {
|
|
1503
1810
|
case LOGIN:
|
|
1504
1811
|
{
|
|
1505
|
-
var
|
|
1812
|
+
var pushes = {
|
|
1813
|
+
'3.6': values(serverPushActions).filter(function (pushAction) {
|
|
1814
|
+
return (
|
|
1815
|
+
// `customer_disconnected` can be sent immediately after opening the connection, before it even received login request
|
|
1816
|
+
// therefore it's not possible to subscribe for a particular version of this push - the "connection version" is always used
|
|
1817
|
+
pushAction !== CUSTOMER_DISCONNECTED
|
|
1818
|
+
);
|
|
1819
|
+
})
|
|
1820
|
+
};
|
|
1506
1821
|
socket.emit(_extends({}, frame, {
|
|
1507
|
-
version: '3.
|
|
1822
|
+
version: '3.6',
|
|
1508
1823
|
payload: _extends({}, frame.payload, {
|
|
1509
|
-
pushes:
|
|
1510
|
-
// '3.6': upgradedPushes,
|
|
1511
|
-
'3.5': values(serverPushActions).filter(function (pushAction) {
|
|
1512
|
-
return (
|
|
1513
|
-
// `customer_disconnected` can be sent immediately after opening the connection, before it even received login request
|
|
1514
|
-
// therefore it's not possible to subscribe for a particular version of this push - the "connection version" is always used
|
|
1515
|
-
pushAction !== CUSTOMER_DISCONNECTED && !includes(pushAction, upgradedPushes)
|
|
1516
|
-
);
|
|
1517
|
-
})
|
|
1518
|
-
}
|
|
1824
|
+
pushes: pushes
|
|
1519
1825
|
})
|
|
1520
1826
|
}));
|
|
1521
1827
|
return;
|
|
@@ -1528,19 +1834,19 @@ var sendRequest$1 = function sendRequest(socket, _ref3) {
|
|
|
1528
1834
|
var emitUsers = function emitUsers(emit, users) {
|
|
1529
1835
|
users.forEach(function (user) {
|
|
1530
1836
|
if ('present' in user) {
|
|
1531
|
-
var rest = _objectWithoutPropertiesLoose(user,
|
|
1837
|
+
var rest = _objectWithoutPropertiesLoose(user, _excluded$3);
|
|
1532
1838
|
emit('user_data', rest);
|
|
1533
1839
|
return;
|
|
1534
1840
|
}
|
|
1535
1841
|
if (user.type === CUSTOMER) {
|
|
1536
|
-
var _rest = _objectWithoutPropertiesLoose(user,
|
|
1842
|
+
var _rest = _objectWithoutPropertiesLoose(user, _excluded2$1);
|
|
1537
1843
|
emit('user_data', _rest);
|
|
1538
1844
|
return;
|
|
1539
1845
|
}
|
|
1540
1846
|
emit('user_data', user);
|
|
1541
1847
|
});
|
|
1542
1848
|
};
|
|
1543
|
-
var handlePush = function handlePush(_ref4, _ref5) {
|
|
1849
|
+
var handlePush$1 = function handlePush(_ref4, _ref5, parentStorage) {
|
|
1544
1850
|
var emit = _ref4.emit,
|
|
1545
1851
|
store = _ref4.store;
|
|
1546
1852
|
var payload = _ref5.payload;
|
|
@@ -1559,7 +1865,7 @@ var handlePush = function handlePush(_ref4, _ref5) {
|
|
|
1559
1865
|
emit('thread_properties_updated', payload.payload);
|
|
1560
1866
|
return;
|
|
1561
1867
|
case CUSTOMER_SIDE_STORAGE_UPDATED:
|
|
1562
|
-
saveSideStorage(store, payload.payload.customer_side_storage);
|
|
1868
|
+
saveSideStorage(store, payload.payload.customer_side_storage, parentStorage);
|
|
1563
1869
|
return;
|
|
1564
1870
|
case CUSTOMER_DISCONNECTED:
|
|
1565
1871
|
// each of those should currently lead to either reconnect or destroy call
|
|
@@ -1577,24 +1883,24 @@ var handlePush = function handlePush(_ref4, _ref5) {
|
|
|
1577
1883
|
store.dispatch(reconnect(SMALL_RECONNECT_DELAY));
|
|
1578
1884
|
emit('disconnected', payload.payload);
|
|
1579
1885
|
break;
|
|
1580
|
-
case CUSTOMER_BANNED:
|
|
1886
|
+
case CUSTOMER_BANNED$1:
|
|
1581
1887
|
case CUSTOMER_TEMPORARILY_BLOCKED:
|
|
1582
1888
|
case LICENSE_NOT_FOUND:
|
|
1583
1889
|
case PRODUCT_VERSION_CHANGED:
|
|
1584
1890
|
case TOO_MANY_CONNECTIONS:
|
|
1585
|
-
case UNSUPPORTED_VERSION:
|
|
1891
|
+
case UNSUPPORTED_VERSION$1:
|
|
1586
1892
|
case LOGGED_OUT_REMOTELY:
|
|
1587
1893
|
// this also emits `disconnected` event - but it's handled in response to this action by destroy handler
|
|
1588
1894
|
store.dispatch(destroy(payload.payload.reason));
|
|
1589
1895
|
break;
|
|
1590
|
-
case MISDIRECTED_CONNECTION
|
|
1591
|
-
failAllRequests(store, MISDIRECTED_CONNECTION);
|
|
1896
|
+
case MISDIRECTED_CONNECTION:
|
|
1897
|
+
failAllRequests(store, MISDIRECTED_CONNECTION$1);
|
|
1592
1898
|
store.dispatch({
|
|
1593
1899
|
type: CHANGE_REGION,
|
|
1594
1900
|
payload: payload.payload.data
|
|
1595
1901
|
});
|
|
1596
1902
|
break;
|
|
1597
|
-
case SERVICE_TEMPORARILY_UNAVAILABLE
|
|
1903
|
+
case SERVICE_TEMPORARILY_UNAVAILABLE:
|
|
1598
1904
|
case TOO_MANY_UNAUTHORIZED_CONNECTIONS:
|
|
1599
1905
|
// this should only really fail a `login` request - as it's the only one sent before authorization
|
|
1600
1906
|
// and login should reconnect on its own right now
|
|
@@ -1629,6 +1935,12 @@ var handlePush = function handlePush(_ref4, _ref5) {
|
|
|
1629
1935
|
case INCOMING_TYPING_INDICATOR:
|
|
1630
1936
|
emit(payload.action, payload.payload);
|
|
1631
1937
|
return;
|
|
1938
|
+
case INCOMING_THINKING_INDICATOR:
|
|
1939
|
+
emit(payload.action, payload.payload);
|
|
1940
|
+
return;
|
|
1941
|
+
case INCOMING_EVENT_PREVIEW:
|
|
1942
|
+
emit(payload.action, payload.payload);
|
|
1943
|
+
return;
|
|
1632
1944
|
case USER_ADDED_TO_CHAT:
|
|
1633
1945
|
emitUsers(emit, [payload.payload.user]);
|
|
1634
1946
|
emit(payload.action, payload.payload);
|
|
@@ -1638,7 +1950,7 @@ var handlePush = function handlePush(_ref4, _ref5) {
|
|
|
1638
1950
|
return;
|
|
1639
1951
|
}
|
|
1640
1952
|
};
|
|
1641
|
-
var handleResponse = function handleResponse(_ref6, _ref7) {
|
|
1953
|
+
var handleResponse$1 = function handleResponse(_ref6, _ref7) {
|
|
1642
1954
|
var emit = _ref6.emit;
|
|
1643
1955
|
var payload = _ref7.payload;
|
|
1644
1956
|
switch (payload.action) {
|
|
@@ -1670,9 +1982,9 @@ var createSideEffectsHandler = (function (_ref8) {
|
|
|
1670
1982
|
customerDataProvider = _ref8.customerDataProvider,
|
|
1671
1983
|
emitter = _ref8.emitter,
|
|
1672
1984
|
socket = _ref8.socket,
|
|
1673
|
-
|
|
1985
|
+
parentStorage = _ref8.parentStorage;
|
|
1674
1986
|
var emit = emitter.emit;
|
|
1675
|
-
var loginTask = createLoginTask(auth, customerDataProvider,
|
|
1987
|
+
var loginTask = createLoginTask(auth, customerDataProvider, parentStorage);
|
|
1676
1988
|
|
|
1677
1989
|
// TODO: using Store type here is a lie, middleware only provides MiddlewareAPI here
|
|
1678
1990
|
return function (action, store) {
|
|
@@ -1680,7 +1992,7 @@ var createSideEffectsHandler = (function (_ref8) {
|
|
|
1680
1992
|
case CHANGE_REGION:
|
|
1681
1993
|
socket.reinitialize();
|
|
1682
1994
|
return;
|
|
1683
|
-
case CHECK_GOALS:
|
|
1995
|
+
case CHECK_GOALS$1:
|
|
1684
1996
|
checkGoals(store, auth, action.payload.sessionFields)["catch"](noop);
|
|
1685
1997
|
return;
|
|
1686
1998
|
case DESTROY:
|
|
@@ -1692,8 +2004,8 @@ var createSideEffectsHandler = (function (_ref8) {
|
|
|
1692
2004
|
case 'manual':
|
|
1693
2005
|
failAllRequests(store, SDK_DESTROYED);
|
|
1694
2006
|
break;
|
|
1695
|
-
case CUSTOMER_BANNED:
|
|
1696
|
-
case LICENSE_EXPIRED:
|
|
2007
|
+
case CUSTOMER_BANNED$1:
|
|
2008
|
+
case LICENSE_EXPIRED$1:
|
|
1697
2009
|
case PRODUCT_VERSION_CHANGED:
|
|
1698
2010
|
case LOGGED_OUT_REMOTELY:
|
|
1699
2011
|
// normalize those to CONNECTION_LOST as the handling on the consumer's side should be the same
|
|
@@ -1783,21 +2095,21 @@ var createSideEffectsHandler = (function (_ref8) {
|
|
|
1783
2095
|
// TODO: this if doesn't seem to make much sense
|
|
1784
2096
|
// I'm too afraid to remove it right now though
|
|
1785
2097
|
if (action.payload.action === CUSTOMER_DISCONNECTED) {
|
|
1786
|
-
handlePush({
|
|
2098
|
+
handlePush$1({
|
|
1787
2099
|
emit: emit,
|
|
1788
2100
|
store: store
|
|
1789
|
-
}, action);
|
|
2101
|
+
}, action, parentStorage);
|
|
1790
2102
|
return;
|
|
1791
2103
|
}
|
|
1792
2104
|
updateStateIfNeeded(store, action);
|
|
1793
|
-
handlePush({
|
|
2105
|
+
handlePush$1({
|
|
1794
2106
|
emit: emit,
|
|
1795
2107
|
store: store
|
|
1796
|
-
}, action);
|
|
2108
|
+
}, action, parentStorage);
|
|
1797
2109
|
return;
|
|
1798
2110
|
case PUSH_RESPONSE_RECEIVED:
|
|
1799
2111
|
updateStateIfNeeded(store, action);
|
|
1800
|
-
handleResponse({
|
|
2112
|
+
handleResponse$1({
|
|
1801
2113
|
emit: emit
|
|
1802
2114
|
}, action);
|
|
1803
2115
|
return;
|
|
@@ -1815,7 +2127,7 @@ var createSideEffectsHandler = (function (_ref8) {
|
|
|
1815
2127
|
}
|
|
1816
2128
|
case RESPONSE_RECEIVED:
|
|
1817
2129
|
updateStateIfNeeded(store, action);
|
|
1818
|
-
handleResponse({
|
|
2130
|
+
handleResponse$1({
|
|
1819
2131
|
emit: emit
|
|
1820
2132
|
}, action);
|
|
1821
2133
|
return;
|
|
@@ -1836,7 +2148,7 @@ var createSideEffectsHandler = (function (_ref8) {
|
|
|
1836
2148
|
});
|
|
1837
2149
|
return;
|
|
1838
2150
|
}
|
|
1839
|
-
sendRequest
|
|
2151
|
+
sendRequest(socket, action);
|
|
1840
2152
|
}
|
|
1841
2153
|
return;
|
|
1842
2154
|
case SET_SELF_ID:
|
|
@@ -1868,110 +2180,38 @@ var createSideEffectsHandler = (function (_ref8) {
|
|
|
1868
2180
|
socket.connect();
|
|
1869
2181
|
store.dispatch(prefetchToken());
|
|
1870
2182
|
return;
|
|
1871
|
-
case UPDATE_CUSTOMER_PAGE:
|
|
2183
|
+
case UPDATE_CUSTOMER_PAGE$1:
|
|
1872
2184
|
if (!isConnected(store.getState())) {
|
|
1873
2185
|
return;
|
|
1874
2186
|
}
|
|
1875
|
-
sendRequestAction(store, sendRequest(UPDATE_CUSTOMER_PAGE
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
var HISTORY_EVENT_COUNT_TARGET = 25;
|
|
1884
|
-
var createState = function createState() {
|
|
1885
|
-
return {
|
|
1886
|
-
status: 'idle',
|
|
1887
|
-
queuedTasks: [],
|
|
1888
|
-
nextPageId: null
|
|
1889
|
-
};
|
|
1890
|
-
};
|
|
1891
|
-
var createChatHistoryIterator = function createChatHistoryIterator(sdk, chatId) {
|
|
1892
|
-
var historyState = createState();
|
|
1893
|
-
var next = function next(resolve, reject) {
|
|
1894
|
-
switch (historyState.status) {
|
|
1895
|
-
case 'idle':
|
|
1896
|
-
historyState.status = 'fetching';
|
|
1897
|
-
sdk.listThreads(historyState.nextPageId ? {
|
|
1898
|
-
chatId: chatId,
|
|
1899
|
-
pageId: historyState.nextPageId
|
|
1900
|
-
} : {
|
|
1901
|
-
chatId: chatId,
|
|
1902
|
-
minEventsCount: HISTORY_EVENT_COUNT_TARGET
|
|
1903
|
-
}).then(function (_ref) {
|
|
1904
|
-
var threads = _ref.threads,
|
|
1905
|
-
nextPageId = _ref.nextPageId;
|
|
1906
|
-
historyState.nextPageId = nextPageId;
|
|
1907
|
-
if (!historyState.nextPageId) {
|
|
1908
|
-
historyState.status = 'done';
|
|
1909
|
-
resolve({
|
|
1910
|
-
value: {
|
|
1911
|
-
threads: [].concat(threads).reverse()
|
|
1912
|
-
},
|
|
1913
|
-
done: true
|
|
1914
|
-
});
|
|
1915
|
-
} else {
|
|
1916
|
-
historyState.status = 'idle';
|
|
1917
|
-
resolve({
|
|
1918
|
-
value: {
|
|
1919
|
-
threads: [].concat(threads).reverse()
|
|
1920
|
-
},
|
|
1921
|
-
done: false
|
|
2187
|
+
sendRequestAction(store, sendRequest$1(UPDATE_CUSTOMER_PAGE, action.payload)).then(function (response) {
|
|
2188
|
+
var _response$groups;
|
|
2189
|
+
if (response != null && (_response$groups = response.groups) != null && _response$groups.length) {
|
|
2190
|
+
var _response$groups2 = response.groups,
|
|
2191
|
+
group = _response$groups2[0];
|
|
2192
|
+
var _availability = parseGroupStatus(group.status);
|
|
2193
|
+
emit('availability_updated', {
|
|
2194
|
+
availability: _availability
|
|
1922
2195
|
});
|
|
1923
2196
|
}
|
|
1924
|
-
|
|
1925
|
-
if (!queuedTask) {
|
|
1926
|
-
return;
|
|
1927
|
-
}
|
|
1928
|
-
next(queuedTask.resolve, queuedTask.reject);
|
|
1929
|
-
}, function (err) {
|
|
1930
|
-
var queuedTasks = historyState.queuedTasks;
|
|
1931
|
-
historyState.status = 'idle';
|
|
1932
|
-
historyState.queuedTasks = [];
|
|
1933
|
-
reject(err);
|
|
1934
|
-
queuedTasks.forEach(function (queuedTask) {
|
|
1935
|
-
return queuedTask.reject(err);
|
|
1936
|
-
});
|
|
1937
|
-
});
|
|
2197
|
+
})["catch"](noop);
|
|
1938
2198
|
return;
|
|
1939
|
-
case
|
|
1940
|
-
|
|
1941
|
-
resolve: resolve,
|
|
1942
|
-
reject: reject
|
|
1943
|
-
});
|
|
2199
|
+
case IDENTITY_CHANGED:
|
|
2200
|
+
emit('identity_changed', action.payload);
|
|
1944
2201
|
return;
|
|
1945
|
-
|
|
1946
|
-
resolve({
|
|
1947
|
-
value: undefined,
|
|
1948
|
-
done: true
|
|
1949
|
-
});
|
|
2202
|
+
default:
|
|
1950
2203
|
return;
|
|
1951
2204
|
}
|
|
1952
2205
|
};
|
|
1953
|
-
|
|
1954
|
-
next: function (_next) {
|
|
1955
|
-
function next() {
|
|
1956
|
-
return _next.apply(this, arguments);
|
|
1957
|
-
}
|
|
1958
|
-
next.toString = function () {
|
|
1959
|
-
return _next.toString();
|
|
1960
|
-
};
|
|
1961
|
-
return next;
|
|
1962
|
-
}(function () {
|
|
1963
|
-
return new Promise(next);
|
|
1964
|
-
})
|
|
1965
|
-
};
|
|
1966
|
-
};
|
|
2206
|
+
});
|
|
1967
2207
|
|
|
1968
2208
|
var initialize = function initialize(store, emitter) {
|
|
1969
2209
|
var state = store.getState();
|
|
1970
2210
|
var url = (getServerUrl(state) + "/rtm/ws").replace(/^https/, 'wss');
|
|
1971
2211
|
return createPlatformClient(url, {
|
|
1972
|
-
query: {
|
|
2212
|
+
query: _extends({
|
|
1973
2213
|
organization_id: state.organizationId
|
|
1974
|
-
},
|
|
2214
|
+
}, getRegionParam(state)),
|
|
1975
2215
|
emitter: emitter
|
|
1976
2216
|
});
|
|
1977
2217
|
};
|
|
@@ -1993,6 +2233,8 @@ var createSocketClient = function createSocketClient(store) {
|
|
|
1993
2233
|
});
|
|
1994
2234
|
};
|
|
1995
2235
|
|
|
2236
|
+
var _excluded$2 = ["group_id"],
|
|
2237
|
+
_excluded2 = ["comment_label"];
|
|
1996
2238
|
var parseChatPropertiesDeletedPush = function parseChatPropertiesDeletedPush(payload) {
|
|
1997
2239
|
return {
|
|
1998
2240
|
chatId: payload.chat_id,
|
|
@@ -2026,13 +2268,6 @@ var parseChatTransferredPush = function parseChatTransferredPush(payload) {
|
|
|
2026
2268
|
reason: payload.reason
|
|
2027
2269
|
});
|
|
2028
2270
|
};
|
|
2029
|
-
var parseCustomerPageUpdatedPush = function parseCustomerPageUpdatedPush(payload) {
|
|
2030
|
-
return {
|
|
2031
|
-
url: payload.url,
|
|
2032
|
-
title: payload.title,
|
|
2033
|
-
openedAt: payload.opened_at
|
|
2034
|
-
};
|
|
2035
|
-
};
|
|
2036
2271
|
var parseCustomerUpdatedPush = function parseCustomerUpdatedPush(payload) {
|
|
2037
2272
|
return _extends({
|
|
2038
2273
|
id: payload.id
|
|
@@ -2059,7 +2294,7 @@ var parseEventUpdatedPush = function parseEventUpdatedPush(payload) {
|
|
|
2059
2294
|
return {
|
|
2060
2295
|
chatId: payload.chat_id,
|
|
2061
2296
|
threadId: threadId,
|
|
2062
|
-
event: parseEvent
|
|
2297
|
+
event: parseEvent(threadId, payload.event)
|
|
2063
2298
|
};
|
|
2064
2299
|
};
|
|
2065
2300
|
var parseEventsMarkedAsSeenPush = function parseEventsMarkedAsSeenPush(payload) {
|
|
@@ -2090,7 +2325,7 @@ var parseIncomingChatPush = function parseIncomingChatPush(payload) {
|
|
|
2090
2325
|
var parseIncomingEventPush = function parseIncomingEventPush(payload) {
|
|
2091
2326
|
return {
|
|
2092
2327
|
chatId: payload.chat_id,
|
|
2093
|
-
event: parseEvent
|
|
2328
|
+
event: parseEvent(payload.thread_id, payload.event)
|
|
2094
2329
|
};
|
|
2095
2330
|
};
|
|
2096
2331
|
var parseIncomingGreetingPush = function parseIncomingGreetingPush(payload) {
|
|
@@ -2116,6 +2351,41 @@ var parseIncomingTypingIndicatorPush = function parseIncomingTypingIndicatorPush
|
|
|
2116
2351
|
}
|
|
2117
2352
|
};
|
|
2118
2353
|
};
|
|
2354
|
+
var parseIncomingThinkingIndicatorPush = function parseIncomingThinkingIndicatorPush(payload) {
|
|
2355
|
+
var chatId = payload.chat_id,
|
|
2356
|
+
threadId = payload.thread_id,
|
|
2357
|
+
authorId = payload.author_id,
|
|
2358
|
+
sentAt = payload.sent_at,
|
|
2359
|
+
customId = payload.custom_id,
|
|
2360
|
+
title = payload.title,
|
|
2361
|
+
description = payload.description;
|
|
2362
|
+
return _extends({
|
|
2363
|
+
chatId: chatId,
|
|
2364
|
+
threadId: threadId,
|
|
2365
|
+
authorId: authorId,
|
|
2366
|
+
sentAt: sentAt
|
|
2367
|
+
}, customId && {
|
|
2368
|
+
customId: customId
|
|
2369
|
+
}, title && {
|
|
2370
|
+
title: title
|
|
2371
|
+
}, description && {
|
|
2372
|
+
description: description
|
|
2373
|
+
});
|
|
2374
|
+
};
|
|
2375
|
+
var parseIncomingEventPreviewPush = function parseIncomingEventPreviewPush(payload) {
|
|
2376
|
+
return {
|
|
2377
|
+
chatId: payload.chat_id,
|
|
2378
|
+
threadId: payload.thread_id,
|
|
2379
|
+
event: parseEvent(payload.thread_id, payload.event)
|
|
2380
|
+
};
|
|
2381
|
+
};
|
|
2382
|
+
var parseIncomingWelcomeMessagePush = function parseIncomingWelcomeMessagePush(payload) {
|
|
2383
|
+
return {
|
|
2384
|
+
id: payload.id,
|
|
2385
|
+
// threadId is typed as nonoptional string but for greetings it doesn't exist
|
|
2386
|
+
event: parseEvent(null, payload.event)
|
|
2387
|
+
};
|
|
2388
|
+
};
|
|
2119
2389
|
var parseQueuePositionUpdatedPush = function parseQueuePositionUpdatedPush(payload) {
|
|
2120
2390
|
return {
|
|
2121
2391
|
chatId: payload.chat_id,
|
|
@@ -2147,7 +2417,8 @@ var parseUserAddedToChatPush = function parseUserAddedToChatPush(payload) {
|
|
|
2147
2417
|
var parseUserRemovedFromChatPush = function parseUserRemovedFromChatPush(payload) {
|
|
2148
2418
|
return {
|
|
2149
2419
|
chatId: payload.chat_id,
|
|
2150
|
-
userId: payload.user_id
|
|
2420
|
+
userId: payload.user_id,
|
|
2421
|
+
reason: payload.reason
|
|
2151
2422
|
};
|
|
2152
2423
|
};
|
|
2153
2424
|
var parseFields = function parseFields(fields) {
|
|
@@ -2157,7 +2428,7 @@ var parseFields = function parseFields(fields) {
|
|
|
2157
2428
|
return _extends({}, field, {
|
|
2158
2429
|
options: field.options.map(function (_ref) {
|
|
2159
2430
|
var groupId = _ref.group_id,
|
|
2160
|
-
option = _objectWithoutPropertiesLoose(_ref,
|
|
2431
|
+
option = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
2161
2432
|
return _extends({}, option, {
|
|
2162
2433
|
groupId: groupId
|
|
2163
2434
|
});
|
|
@@ -2166,7 +2437,7 @@ var parseFields = function parseFields(fields) {
|
|
|
2166
2437
|
case 'rating':
|
|
2167
2438
|
{
|
|
2168
2439
|
var commentLabel = field.comment_label,
|
|
2169
|
-
parsed = _objectWithoutPropertiesLoose(field,
|
|
2440
|
+
parsed = _objectWithoutPropertiesLoose(field, _excluded2);
|
|
2170
2441
|
return _extends({}, parsed, {
|
|
2171
2442
|
commentLabel: commentLabel
|
|
2172
2443
|
});
|
|
@@ -2184,7 +2455,7 @@ var parseTicketFormFields = function parseTicketFormFields(fields) {
|
|
|
2184
2455
|
});
|
|
2185
2456
|
return parseFields(withFakeIds);
|
|
2186
2457
|
};
|
|
2187
|
-
var parseForm
|
|
2458
|
+
var parseForm = function parseForm(form) {
|
|
2188
2459
|
var isTicketForm = !('id' in form.fields[0]);
|
|
2189
2460
|
return {
|
|
2190
2461
|
id: form.id,
|
|
@@ -2196,7 +2467,7 @@ var parseGetFormResponse = function parseGetFormResponse(payload) {
|
|
|
2196
2467
|
return payload;
|
|
2197
2468
|
}
|
|
2198
2469
|
return _extends({}, payload, {
|
|
2199
|
-
form: parseForm
|
|
2470
|
+
form: parseForm(payload.form)
|
|
2200
2471
|
});
|
|
2201
2472
|
};
|
|
2202
2473
|
var parseGetUrlInfoResponse = function parseGetUrlInfoResponse(payload) {
|
|
@@ -2218,6 +2489,24 @@ var parseGetUrlInfoResponse = function parseGetUrlInfoResponse(payload) {
|
|
|
2218
2489
|
}
|
|
2219
2490
|
return urlInfo;
|
|
2220
2491
|
};
|
|
2492
|
+
var parseRequestWelcomeMessageResponse = function parseRequestWelcomeMessageResponse(payload) {
|
|
2493
|
+
var id = payload.id,
|
|
2494
|
+
predicted_agent = payload.predicted_agent,
|
|
2495
|
+
queue = payload.queue;
|
|
2496
|
+
return {
|
|
2497
|
+
id: id,
|
|
2498
|
+
predictedAgent: {
|
|
2499
|
+
id: predicted_agent.id,
|
|
2500
|
+
type: predicted_agent.type,
|
|
2501
|
+
name: predicted_agent.name,
|
|
2502
|
+
avatar: predicted_agent.avatar,
|
|
2503
|
+
jobTitle: predicted_agent.job_title,
|
|
2504
|
+
isBot: predicted_agent.is_bot,
|
|
2505
|
+
botType: predicted_agent.bot_type
|
|
2506
|
+
},
|
|
2507
|
+
queue: queue
|
|
2508
|
+
};
|
|
2509
|
+
};
|
|
2221
2510
|
var getAvailabilityBasedOnDynamicConfig = function getAvailabilityBasedOnDynamicConfig(_ref2) {
|
|
2222
2511
|
var onlineGroups = _ref2.online_groups_ids,
|
|
2223
2512
|
customerGroups = _ref2.customer_groups;
|
|
@@ -2253,7 +2542,7 @@ var parseListChatsResponse = function parseListChatsResponse(payload) {
|
|
|
2253
2542
|
return chatSummary;
|
|
2254
2543
|
}
|
|
2255
2544
|
chatSummary.lastEventsPerType = mapValues(function (lastEventPerType) {
|
|
2256
|
-
return parseEvent
|
|
2545
|
+
return parseEvent(lastEventPerType.thread_id, lastEventPerType.event);
|
|
2257
2546
|
}, lastEventsPerType);
|
|
2258
2547
|
var refinedLastEventsPerType = lastEventsPerType;
|
|
2259
2548
|
var lastEventSummariesArray = Object.keys(refinedLastEventsPerType).map(function (eventType) {
|
|
@@ -2351,11 +2640,6 @@ var parsePush = function parsePush(push) {
|
|
|
2351
2640
|
action: push.action,
|
|
2352
2641
|
payload: push.payload
|
|
2353
2642
|
};
|
|
2354
|
-
case CUSTOMER_PAGE_UPDATED:
|
|
2355
|
-
return {
|
|
2356
|
-
action: push.action,
|
|
2357
|
-
payload: parseCustomerPageUpdatedPush(push.payload)
|
|
2358
|
-
};
|
|
2359
2643
|
case CUSTOMER_UPDATED:
|
|
2360
2644
|
return {
|
|
2361
2645
|
action: push.action,
|
|
@@ -2427,6 +2711,21 @@ var parsePush = function parsePush(push) {
|
|
|
2427
2711
|
action: push.action,
|
|
2428
2712
|
payload: parseIncomingTypingIndicatorPush(push.payload)
|
|
2429
2713
|
};
|
|
2714
|
+
case INCOMING_THINKING_INDICATOR:
|
|
2715
|
+
return {
|
|
2716
|
+
action: push.action,
|
|
2717
|
+
payload: parseIncomingThinkingIndicatorPush(push.payload)
|
|
2718
|
+
};
|
|
2719
|
+
case INCOMING_EVENT_PREVIEW:
|
|
2720
|
+
return {
|
|
2721
|
+
action: push.action,
|
|
2722
|
+
payload: parseIncomingEventPreviewPush(push.payload)
|
|
2723
|
+
};
|
|
2724
|
+
case INCOMING_WELCOME_MESSAGE:
|
|
2725
|
+
return {
|
|
2726
|
+
action: push.action,
|
|
2727
|
+
payload: parseIncomingWelcomeMessagePush(push.payload)
|
|
2728
|
+
};
|
|
2430
2729
|
case QUEUE_POSITION_UPDATED:
|
|
2431
2730
|
return {
|
|
2432
2731
|
action: push.action,
|
|
@@ -2455,6 +2754,7 @@ var parsePush = function parsePush(push) {
|
|
|
2455
2754
|
}
|
|
2456
2755
|
};
|
|
2457
2756
|
var parseResponse = function parseResponse(_ref6) {
|
|
2757
|
+
var _response$payload;
|
|
2458
2758
|
var request = _ref6.request,
|
|
2459
2759
|
response = _ref6.response;
|
|
2460
2760
|
switch (response.action) {
|
|
@@ -2498,11 +2798,6 @@ var parseResponse = function parseResponse(_ref6) {
|
|
|
2498
2798
|
action: response.action,
|
|
2499
2799
|
payload: parseGetFormResponse(response.payload)
|
|
2500
2800
|
};
|
|
2501
|
-
case GET_PREDICTED_AGENT:
|
|
2502
|
-
return {
|
|
2503
|
-
action: response.action,
|
|
2504
|
-
payload: parsePredictedAgent(response.payload)
|
|
2505
|
-
};
|
|
2506
2801
|
case GET_URL_INFO:
|
|
2507
2802
|
return {
|
|
2508
2803
|
action: response.action,
|
|
@@ -2533,6 +2828,11 @@ var parseResponse = function parseResponse(_ref6) {
|
|
|
2533
2828
|
action: response.action,
|
|
2534
2829
|
payload: SUCCESS
|
|
2535
2830
|
};
|
|
2831
|
+
case REQUEST_WELCOME_MESSAGE:
|
|
2832
|
+
return {
|
|
2833
|
+
action: response.action,
|
|
2834
|
+
payload: parseRequestWelcomeMessageResponse(response.payload)
|
|
2835
|
+
};
|
|
2536
2836
|
case SEND_SNEAK_PEEK:
|
|
2537
2837
|
return {
|
|
2538
2838
|
action: response.action,
|
|
@@ -2543,6 +2843,11 @@ var parseResponse = function parseResponse(_ref6) {
|
|
|
2543
2843
|
action: response.action,
|
|
2544
2844
|
payload: SUCCESS
|
|
2545
2845
|
};
|
|
2846
|
+
case SEND_GREETING_BUTTON_CLICKED:
|
|
2847
|
+
return {
|
|
2848
|
+
action: response.action,
|
|
2849
|
+
payload: SUCCESS
|
|
2850
|
+
};
|
|
2546
2851
|
case SEND_RICH_MESSAGE_POSTBACK:
|
|
2547
2852
|
return {
|
|
2548
2853
|
action: response.action,
|
|
@@ -2558,10 +2863,12 @@ var parseResponse = function parseResponse(_ref6) {
|
|
|
2558
2863
|
action: response.action,
|
|
2559
2864
|
payload: SUCCESS
|
|
2560
2865
|
};
|
|
2561
|
-
case UPDATE_CUSTOMER_PAGE
|
|
2866
|
+
case UPDATE_CUSTOMER_PAGE:
|
|
2562
2867
|
return {
|
|
2563
2868
|
action: response.action,
|
|
2564
|
-
payload: SUCCESS
|
|
2869
|
+
payload: _extends({}, SUCCESS, {
|
|
2870
|
+
groups: (_response$payload = response.payload) == null ? void 0 : _response$payload.groups
|
|
2871
|
+
})
|
|
2565
2872
|
};
|
|
2566
2873
|
case UPDATE_EVENT_PROPERTIES:
|
|
2567
2874
|
return {
|
|
@@ -2598,7 +2905,7 @@ var handleResponseError = function handleResponseError(_ref, response) {
|
|
|
2598
2905
|
}
|
|
2599
2906
|
});
|
|
2600
2907
|
};
|
|
2601
|
-
var handleResponse
|
|
2908
|
+
var handleResponse = function handleResponse(_ref2, response) {
|
|
2602
2909
|
var dispatch = _ref2.dispatch,
|
|
2603
2910
|
getState = _ref2.getState;
|
|
2604
2911
|
var requestId = response.request_id;
|
|
@@ -2636,7 +2943,7 @@ var handlePushResponse = function handlePushResponse(_ref3, response) {
|
|
|
2636
2943
|
}, parsedPush)
|
|
2637
2944
|
});
|
|
2638
2945
|
};
|
|
2639
|
-
var handlePush
|
|
2946
|
+
var handlePush = function handlePush(store, push) {
|
|
2640
2947
|
var parsedPush = parsePush(push);
|
|
2641
2948
|
if (!parsedPush) {
|
|
2642
2949
|
// defensive measure against receiving unknown push
|
|
@@ -2667,7 +2974,7 @@ var socketListener = (function (store, socket) {
|
|
|
2667
2974
|
// those are requests with indirect responses
|
|
2668
2975
|
return;
|
|
2669
2976
|
default:
|
|
2670
|
-
handleResponse
|
|
2977
|
+
handleResponse(store, message);
|
|
2671
2978
|
return;
|
|
2672
2979
|
}
|
|
2673
2980
|
}
|
|
@@ -2680,7 +2987,7 @@ var socketListener = (function (store, socket) {
|
|
|
2680
2987
|
return;
|
|
2681
2988
|
}
|
|
2682
2989
|
}
|
|
2683
|
-
handlePush
|
|
2990
|
+
handlePush(store, message);
|
|
2684
2991
|
});
|
|
2685
2992
|
socket.on('disconnect', function () {
|
|
2686
2993
|
failAllRequests(store, CONNECTION_LOST);
|
|
@@ -2742,9 +3049,9 @@ var uploadFile = function uploadFile(_ref, _ref2) {
|
|
|
2742
3049
|
var send = new Promise(function (resolve, reject) {
|
|
2743
3050
|
validateFile(file);
|
|
2744
3051
|
var state = store.getState();
|
|
2745
|
-
var query = buildQueryString({
|
|
3052
|
+
var query = buildQueryString(_extends({
|
|
2746
3053
|
organization_id: state.organizationId
|
|
2747
|
-
});
|
|
3054
|
+
}, getRegionParam(state)));
|
|
2748
3055
|
var url = getServerUrl(state) + "/action/" + UPLOAD_FILE + "?" + query;
|
|
2749
3056
|
var payload = {
|
|
2750
3057
|
file: file
|
|
@@ -2790,44 +3097,7 @@ var uploadFile = function uploadFile(_ref, _ref2) {
|
|
|
2790
3097
|
};
|
|
2791
3098
|
};
|
|
2792
3099
|
|
|
2793
|
-
var
|
|
2794
|
-
return new Promise(function (resolve) {
|
|
2795
|
-
var img = new Image();
|
|
2796
|
-
img.src = url + "?" + body;
|
|
2797
|
-
img.onerror = noop;
|
|
2798
|
-
img.onload = function () {
|
|
2799
|
-
return resolve();
|
|
2800
|
-
};
|
|
2801
|
-
});
|
|
2802
|
-
};
|
|
2803
|
-
|
|
2804
|
-
// eslint-disable-next-line local/no-livechat-package-direct-file-import
|
|
2805
|
-
/**
|
|
2806
|
-
* Logs event to Graylog with provided config data.
|
|
2807
|
-
* Logging request is fired only when all of those conditions are true:
|
|
2808
|
-
* 1. package is used in lc production environment
|
|
2809
|
-
* 2. package is used standalone because only then "customer_sdk" will be set to customer_sdk
|
|
2810
|
-
*/
|
|
2811
|
-
var log = function log(_ref) {
|
|
2812
|
-
var env = _ref.env,
|
|
2813
|
-
organizationId = _ref.organizationId,
|
|
2814
|
-
eventName = _ref.eventName;
|
|
2815
|
-
if (env !== 'production' || "customer_sdk" !== 'customer_sdk') {
|
|
2816
|
-
return Promise.resolve();
|
|
2817
|
-
}
|
|
2818
|
-
var message = {
|
|
2819
|
-
event_name: eventName,
|
|
2820
|
-
severity: 'Informational',
|
|
2821
|
-
sdkVersion: "4.0.2"
|
|
2822
|
-
};
|
|
2823
|
-
var body = {
|
|
2824
|
-
organizationId: organizationId,
|
|
2825
|
-
event_id: 'chat_widget_customer_sdk',
|
|
2826
|
-
message: JSON.stringify(message)
|
|
2827
|
-
};
|
|
2828
|
-
return makeGraylogRequest('https://queue.livechatinc.com/logs', buildQueryString(body));
|
|
2829
|
-
};
|
|
2830
|
-
|
|
3100
|
+
var _excluded$1 = ["on", "once", "off", "getChatHistory", "auth"];
|
|
2831
3101
|
var LISTENER_IDENTITY = 'LISTENER_IDENTITY';
|
|
2832
3102
|
var listenersMap = {};
|
|
2833
3103
|
var createDebuggedMethods = function createDebuggedMethods(methods, prefix) {
|
|
@@ -2891,7 +3161,7 @@ var debug = (function (_sdk) {
|
|
|
2891
3161
|
_off = sdk.off,
|
|
2892
3162
|
_getChatHistory = sdk.getChatHistory,
|
|
2893
3163
|
auth = sdk.auth,
|
|
2894
|
-
rest = _objectWithoutPropertiesLoose(sdk,
|
|
3164
|
+
rest = _objectWithoutPropertiesLoose(sdk, _excluded$1);
|
|
2895
3165
|
var methods = createDebuggedMethods(rest);
|
|
2896
3166
|
return Object.freeze(_extends({
|
|
2897
3167
|
auth: Object.freeze(createDebuggedMethods(auth, '.auth'))
|
|
@@ -2938,38 +3208,35 @@ var debug = (function (_sdk) {
|
|
|
2938
3208
|
}));
|
|
2939
3209
|
});
|
|
2940
3210
|
|
|
2941
|
-
var
|
|
2942
|
-
var DESC = 'desc';
|
|
2943
|
-
|
|
2944
|
-
var sortOrders = /*#__PURE__*/Object.freeze({
|
|
2945
|
-
__proto__: null,
|
|
2946
|
-
ASC: ASC,
|
|
2947
|
-
DESC: DESC
|
|
2948
|
-
});
|
|
2949
|
-
|
|
3211
|
+
var _excluded = ["autoConnect", "customerDataProvider", "identityProvider", "parentStorage", "env"];
|
|
2950
3212
|
var CHATS_PAGINATION_MAX_LIMIT = 25;
|
|
2951
|
-
var init = function init(config
|
|
2952
|
-
if (env === void 0) {
|
|
2953
|
-
env = 'production';
|
|
2954
|
-
}
|
|
3213
|
+
var init = function init(config) {
|
|
2955
3214
|
validateConfig(config);
|
|
2956
|
-
var
|
|
2957
|
-
autoConnect =
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
3215
|
+
var _ref = config,
|
|
3216
|
+
_ref$autoConnect = _ref.autoConnect,
|
|
3217
|
+
autoConnect = _ref$autoConnect === void 0 ? true : _ref$autoConnect,
|
|
3218
|
+
customerDataProvider = _ref.customerDataProvider,
|
|
3219
|
+
identityProvider = _ref.identityProvider,
|
|
3220
|
+
parentStorage = _ref.parentStorage,
|
|
3221
|
+
configEnv = _ref.env,
|
|
3222
|
+
instanceConfig = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
3223
|
+
var env = configEnv && ['labs', 'staging'].includes(configEnv) ? configEnv : 'production';
|
|
2961
3224
|
var store = finalCreateStore(_extends({}, instanceConfig, {
|
|
2962
3225
|
env: env
|
|
2963
3226
|
}));
|
|
2964
3227
|
var emitter = mitt();
|
|
2965
3228
|
var socket = createSocketClient(store);
|
|
2966
|
-
var
|
|
3229
|
+
var hasCustomIdentityProvider = typeof identityProvider === 'function';
|
|
3230
|
+
var auth = hasCustomIdentityProvider ? identityProvider() : createAuth(_extends({}, instanceConfig, {
|
|
3231
|
+
env: env
|
|
3232
|
+
}), parentStorage);
|
|
2967
3233
|
store.addSideEffectsHandler(createSideEffectsHandler({
|
|
2968
3234
|
emitter: emitter,
|
|
2969
3235
|
socket: socket,
|
|
2970
3236
|
auth: auth,
|
|
2971
3237
|
customerDataProvider: customerDataProvider,
|
|
2972
|
-
|
|
3238
|
+
parentStorage: parentStorage,
|
|
3239
|
+
hasCustomIdentityProvider: hasCustomIdentityProvider
|
|
2973
3240
|
}));
|
|
2974
3241
|
socketListener(store, socket);
|
|
2975
3242
|
var sendRequestAction$1 = sendRequestAction.bind(null, store);
|
|
@@ -2979,18 +3246,18 @@ var init = function init(config, env, licenseId) {
|
|
|
2979
3246
|
});
|
|
2980
3247
|
};
|
|
2981
3248
|
var api = Object.freeze({
|
|
2982
|
-
acceptGreeting: function acceptGreeting(
|
|
2983
|
-
var greetingId =
|
|
2984
|
-
uniqueId =
|
|
2985
|
-
return sendRequestAction$1(sendRequest(ACCEPT_GREETING, {
|
|
3249
|
+
acceptGreeting: function acceptGreeting(_ref2) {
|
|
3250
|
+
var greetingId = _ref2.greetingId,
|
|
3251
|
+
uniqueId = _ref2.uniqueId;
|
|
3252
|
+
return sendRequestAction$1(sendRequest$1(ACCEPT_GREETING, {
|
|
2986
3253
|
greeting_id: greetingId,
|
|
2987
3254
|
unique_id: uniqueId
|
|
2988
3255
|
}));
|
|
2989
3256
|
},
|
|
2990
3257
|
auth: auth,
|
|
2991
|
-
cancelGreeting: function cancelGreeting(
|
|
2992
|
-
var uniqueId =
|
|
2993
|
-
return sendRequestAction$1(sendRequest(CANCEL_GREETING, {
|
|
3258
|
+
cancelGreeting: function cancelGreeting(_ref3) {
|
|
3259
|
+
var uniqueId = _ref3.uniqueId;
|
|
3260
|
+
return sendRequestAction$1(sendRequest$1(CANCEL_GREETING, {
|
|
2994
3261
|
unique_id: uniqueId
|
|
2995
3262
|
}));
|
|
2996
3263
|
},
|
|
@@ -3000,8 +3267,8 @@ var init = function init(config, env, licenseId) {
|
|
|
3000
3267
|
properties = _params$properties === void 0 ? ['score'] : _params$properties;
|
|
3001
3268
|
return api.listThreads({
|
|
3002
3269
|
chatId: chatId
|
|
3003
|
-
}).then(function (
|
|
3004
|
-
var threads =
|
|
3270
|
+
}).then(function (_ref4) {
|
|
3271
|
+
var threads = _ref4.threads;
|
|
3005
3272
|
if (!threads.length) {
|
|
3006
3273
|
throw createError({
|
|
3007
3274
|
message: "There is no thread in \"" + chatId + "\".",
|
|
@@ -3018,37 +3285,37 @@ var init = function init(config, env, licenseId) {
|
|
|
3018
3285
|
});
|
|
3019
3286
|
},
|
|
3020
3287
|
connect: startConnection,
|
|
3021
|
-
deactivateChat: function deactivateChat(
|
|
3022
|
-
var id =
|
|
3023
|
-
return sendRequestAction$1(sendRequest(DEACTIVATE_CHAT, {
|
|
3288
|
+
deactivateChat: function deactivateChat(_ref5) {
|
|
3289
|
+
var id = _ref5.id;
|
|
3290
|
+
return sendRequestAction$1(sendRequest$1(DEACTIVATE_CHAT, {
|
|
3024
3291
|
id: id
|
|
3025
3292
|
}));
|
|
3026
3293
|
},
|
|
3027
|
-
deleteChatProperties: function deleteChatProperties(
|
|
3028
|
-
var id =
|
|
3029
|
-
properties =
|
|
3030
|
-
return sendRequestAction$1(sendRequest(DELETE_CHAT_PROPERTIES, {
|
|
3294
|
+
deleteChatProperties: function deleteChatProperties(_ref6) {
|
|
3295
|
+
var id = _ref6.id,
|
|
3296
|
+
properties = _ref6.properties;
|
|
3297
|
+
return sendRequestAction$1(sendRequest$1(DELETE_CHAT_PROPERTIES, {
|
|
3031
3298
|
id: id,
|
|
3032
3299
|
properties: properties
|
|
3033
3300
|
}));
|
|
3034
3301
|
},
|
|
3035
|
-
deleteEventProperties: function deleteEventProperties(
|
|
3036
|
-
var chatId =
|
|
3037
|
-
threadId =
|
|
3038
|
-
eventId =
|
|
3039
|
-
properties =
|
|
3040
|
-
return sendRequestAction$1(sendRequest(DELETE_EVENT_PROPERTIES, {
|
|
3302
|
+
deleteEventProperties: function deleteEventProperties(_ref7) {
|
|
3303
|
+
var chatId = _ref7.chatId,
|
|
3304
|
+
threadId = _ref7.threadId,
|
|
3305
|
+
eventId = _ref7.eventId,
|
|
3306
|
+
properties = _ref7.properties;
|
|
3307
|
+
return sendRequestAction$1(sendRequest$1(DELETE_EVENT_PROPERTIES, {
|
|
3041
3308
|
chat_id: chatId,
|
|
3042
3309
|
thread_id: threadId,
|
|
3043
3310
|
event_id: eventId,
|
|
3044
3311
|
properties: properties
|
|
3045
3312
|
}));
|
|
3046
3313
|
},
|
|
3047
|
-
deleteThreadProperties: function deleteThreadProperties(
|
|
3048
|
-
var chatId =
|
|
3049
|
-
threadId =
|
|
3050
|
-
properties =
|
|
3051
|
-
return sendRequestAction$1(sendRequest(DELETE_THREAD_PROPERTIES, {
|
|
3314
|
+
deleteThreadProperties: function deleteThreadProperties(_ref8) {
|
|
3315
|
+
var chatId = _ref8.chatId,
|
|
3316
|
+
threadId = _ref8.threadId,
|
|
3317
|
+
properties = _ref8.properties;
|
|
3318
|
+
return sendRequestAction$1(sendRequest$1(DELETE_THREAD_PROPERTIES, {
|
|
3052
3319
|
chat_id: chatId,
|
|
3053
3320
|
thread_id: threadId,
|
|
3054
3321
|
properties: properties
|
|
@@ -3060,42 +3327,32 @@ var init = function init(config, env, licenseId) {
|
|
|
3060
3327
|
disconnect: function disconnect() {
|
|
3061
3328
|
store.dispatch(pauseConnection('manual'));
|
|
3062
3329
|
},
|
|
3063
|
-
getChat: function getChat(
|
|
3064
|
-
var chatId =
|
|
3065
|
-
threadId =
|
|
3066
|
-
return sendRequestAction$1(sendRequest(GET_CHAT, {
|
|
3330
|
+
getChat: function getChat(_ref9) {
|
|
3331
|
+
var chatId = _ref9.chatId,
|
|
3332
|
+
threadId = _ref9.threadId;
|
|
3333
|
+
return sendRequestAction$1(sendRequest$1(GET_CHAT, {
|
|
3067
3334
|
chat_id: chatId,
|
|
3068
3335
|
thread_id: threadId
|
|
3069
3336
|
}));
|
|
3070
3337
|
},
|
|
3071
|
-
getChatHistory: function getChatHistory(
|
|
3072
|
-
var chatId =
|
|
3338
|
+
getChatHistory: function getChatHistory(_ref0) {
|
|
3339
|
+
var chatId = _ref0.chatId;
|
|
3073
3340
|
return createChatHistoryIterator(api, chatId);
|
|
3074
3341
|
},
|
|
3075
3342
|
getCustomer: function getCustomer() {
|
|
3076
|
-
return sendRequestAction$1(sendRequest(GET_CUSTOMER, {}));
|
|
3343
|
+
return sendRequestAction$1(sendRequest$1(GET_CUSTOMER, {}));
|
|
3077
3344
|
},
|
|
3078
|
-
getForm: function getForm(
|
|
3079
|
-
var groupId =
|
|
3080
|
-
type =
|
|
3081
|
-
return sendRequestAction$1(sendRequest(GET_FORM, {
|
|
3345
|
+
getForm: function getForm(_ref1) {
|
|
3346
|
+
var groupId = _ref1.groupId,
|
|
3347
|
+
type = _ref1.type;
|
|
3348
|
+
return sendRequestAction$1(sendRequest$1(GET_FORM, {
|
|
3082
3349
|
group_id: groupId,
|
|
3083
3350
|
type: type
|
|
3084
3351
|
}));
|
|
3085
3352
|
},
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
}
|
|
3090
|
-
var _params = params,
|
|
3091
|
-
groupId = _params.groupId;
|
|
3092
|
-
return sendRequestAction$1(sendRequest(GET_PREDICTED_AGENT, typeof groupId === 'number' ? {
|
|
3093
|
-
group_id: groupId
|
|
3094
|
-
} : {}));
|
|
3095
|
-
},
|
|
3096
|
-
getUrlInfo: function getUrlInfo(_ref11) {
|
|
3097
|
-
var url = _ref11.url;
|
|
3098
|
-
return sendRequestAction$1(sendRequest(GET_URL_INFO, {
|
|
3353
|
+
getUrlInfo: function getUrlInfo(_ref10) {
|
|
3354
|
+
var url = _ref10.url;
|
|
3355
|
+
return sendRequestAction$1(sendRequest$1(GET_URL_INFO, {
|
|
3099
3356
|
url: url
|
|
3100
3357
|
}));
|
|
3101
3358
|
},
|
|
@@ -3106,23 +3363,23 @@ var init = function init(config, env, licenseId) {
|
|
|
3106
3363
|
if ('limit' in params && typeof params.limit === 'number' && params.limit > CHATS_PAGINATION_MAX_LIMIT) {
|
|
3107
3364
|
return Promise.reject(new Error("Specified limit is too high (max " + CHATS_PAGINATION_MAX_LIMIT + ")."));
|
|
3108
3365
|
}
|
|
3109
|
-
return sendRequestAction$1(sendRequest(LIST_CHATS, params.pageId === undefined ? {
|
|
3366
|
+
return sendRequestAction$1(sendRequest$1(LIST_CHATS, params.pageId === undefined ? {
|
|
3110
3367
|
limit: params.limit || 10
|
|
3111
3368
|
} : {
|
|
3112
3369
|
page_id: params.pageId
|
|
3113
3370
|
}));
|
|
3114
3371
|
},
|
|
3115
3372
|
listGroupStatuses: function listGroupStatuses(_temp) {
|
|
3116
|
-
var
|
|
3117
|
-
groupIds =
|
|
3118
|
-
return sendRequestAction$1(sendRequest(LIST_GROUP_STATUSES, groupIds ? {
|
|
3373
|
+
var _ref11 = _temp === void 0 ? {} : _temp,
|
|
3374
|
+
groupIds = _ref11.groupIds;
|
|
3375
|
+
return sendRequestAction$1(sendRequest$1(LIST_GROUP_STATUSES, groupIds ? {
|
|
3119
3376
|
group_ids: groupIds
|
|
3120
3377
|
} : {
|
|
3121
3378
|
all: true
|
|
3122
3379
|
}));
|
|
3123
3380
|
},
|
|
3124
3381
|
listThreads: function listThreads(params) {
|
|
3125
|
-
return sendRequestAction$1(sendRequest(LIST_THREADS, params.pageId === undefined ? {
|
|
3382
|
+
return sendRequestAction$1(sendRequest$1(LIST_THREADS, params.pageId === undefined ? {
|
|
3126
3383
|
chat_id: params.chatId,
|
|
3127
3384
|
sort_order: params.sortOrder,
|
|
3128
3385
|
limit: params.limit,
|
|
@@ -3132,10 +3389,10 @@ var init = function init(config, env, licenseId) {
|
|
|
3132
3389
|
page_id: params.pageId
|
|
3133
3390
|
}));
|
|
3134
3391
|
},
|
|
3135
|
-
markEventsAsSeen: function markEventsAsSeen(
|
|
3136
|
-
var chatId =
|
|
3137
|
-
seenUpTo =
|
|
3138
|
-
return sendRequestAction$1(sendRequest(MARK_EVENTS_AS_SEEN, {
|
|
3392
|
+
markEventsAsSeen: function markEventsAsSeen(_ref12) {
|
|
3393
|
+
var chatId = _ref12.chatId,
|
|
3394
|
+
seenUpTo = _ref12.seenUpTo;
|
|
3395
|
+
return sendRequestAction$1(sendRequest$1(MARK_EVENTS_AS_SEEN, {
|
|
3139
3396
|
chat_id: chatId,
|
|
3140
3397
|
seen_up_to: seenUpTo
|
|
3141
3398
|
}));
|
|
@@ -3148,8 +3405,8 @@ var init = function init(config, env, licenseId) {
|
|
|
3148
3405
|
rating = params.rating;
|
|
3149
3406
|
return api.listThreads({
|
|
3150
3407
|
chatId: chatId
|
|
3151
|
-
}).then(function (
|
|
3152
|
-
var threads =
|
|
3408
|
+
}).then(function (_ref13) {
|
|
3409
|
+
var threads = _ref13.threads;
|
|
3153
3410
|
if (!threads.length) {
|
|
3154
3411
|
throw createError({
|
|
3155
3412
|
message: "There is no thread in \"" + chatId + "\".",
|
|
@@ -3165,31 +3422,42 @@ var init = function init(config, env, licenseId) {
|
|
|
3165
3422
|
});
|
|
3166
3423
|
});
|
|
3167
3424
|
},
|
|
3425
|
+
requestWelcomeMessage: function requestWelcomeMessage(_temp2) {
|
|
3426
|
+
var _ref14 = _temp2 === void 0 ? {} : _temp2,
|
|
3427
|
+
id = _ref14.id;
|
|
3428
|
+
return sendRequestAction$1(sendRequest$1(REQUEST_WELCOME_MESSAGE, id ? {
|
|
3429
|
+
id: id
|
|
3430
|
+
} : {}));
|
|
3431
|
+
},
|
|
3168
3432
|
resumeChat: function resumeChat(data) {
|
|
3169
3433
|
log({
|
|
3170
3434
|
env: env,
|
|
3171
3435
|
organizationId: config.organizationId,
|
|
3172
3436
|
eventName: 'chat_started'
|
|
3173
3437
|
});
|
|
3174
|
-
return sendRequestAction$1(sendRequest(RESUME_CHAT, parseResumeChatData(data)));
|
|
3438
|
+
return sendRequestAction$1(sendRequest$1(RESUME_CHAT, parseResumeChatData(data)));
|
|
3175
3439
|
},
|
|
3176
|
-
sendEvent: function (
|
|
3177
|
-
function sendEvent(_x) {
|
|
3178
|
-
return _sendEvent.apply(this, arguments);
|
|
3179
|
-
}
|
|
3180
|
-
sendEvent.toString = function () {
|
|
3181
|
-
return _sendEvent.toString();
|
|
3182
|
-
};
|
|
3183
|
-
return sendEvent;
|
|
3184
|
-
}(function (params) {
|
|
3440
|
+
sendEvent: function sendEvent$1(params) {
|
|
3185
3441
|
return sendRequestAction$1(sendEvent(params));
|
|
3186
|
-
}
|
|
3442
|
+
},
|
|
3443
|
+
sendGreetingButtonClicked: function sendGreetingButtonClicked$1(options) {
|
|
3444
|
+
return sendGreetingButtonClicked({
|
|
3445
|
+
auth: auth,
|
|
3446
|
+
store: store
|
|
3447
|
+
}, options);
|
|
3448
|
+
},
|
|
3449
|
+
sendCustomerActions: function sendCustomerActions$1(options) {
|
|
3450
|
+
return sendCustomerActions({
|
|
3451
|
+
auth: auth,
|
|
3452
|
+
store: store
|
|
3453
|
+
}, options);
|
|
3454
|
+
},
|
|
3187
3455
|
sendRichMessagePostback: function sendRichMessagePostback(_ref15) {
|
|
3188
3456
|
var chatId = _ref15.chatId,
|
|
3189
3457
|
threadId = _ref15.threadId,
|
|
3190
3458
|
eventId = _ref15.eventId,
|
|
3191
3459
|
postback = _ref15.postback;
|
|
3192
|
-
return sendRequestAction$1(sendRequest(SEND_RICH_MESSAGE_POSTBACK, {
|
|
3460
|
+
return sendRequestAction$1(sendRequest$1(SEND_RICH_MESSAGE_POSTBACK, {
|
|
3193
3461
|
chat_id: chatId,
|
|
3194
3462
|
event_id: eventId,
|
|
3195
3463
|
thread_id: threadId,
|
|
@@ -3198,8 +3466,8 @@ var init = function init(config, env, licenseId) {
|
|
|
3198
3466
|
},
|
|
3199
3467
|
setCustomerSessionFields: function setCustomerSessionFields(_ref16) {
|
|
3200
3468
|
var sessionFields = _ref16.sessionFields;
|
|
3201
|
-
return sendRequestAction$1(sendRequest(SET_CUSTOMER_SESSION_FIELDS, {
|
|
3202
|
-
session_fields: parseCustomerSessionFields(sessionFields)
|
|
3469
|
+
return sendRequestAction$1(sendRequest$1(SET_CUSTOMER_SESSION_FIELDS, {
|
|
3470
|
+
session_fields: parseCustomerSessionFields$1(sessionFields)
|
|
3203
3471
|
}));
|
|
3204
3472
|
},
|
|
3205
3473
|
setSneakPeek: function setSneakPeek(_ref17) {
|
|
@@ -3209,7 +3477,7 @@ var init = function init(config, env, licenseId) {
|
|
|
3209
3477
|
if (!isChatActive(state, chatId) || !isConnected(state)) {
|
|
3210
3478
|
return;
|
|
3211
3479
|
}
|
|
3212
|
-
sendRequestAction$1(sendRequest(SEND_SNEAK_PEEK, {
|
|
3480
|
+
sendRequestAction$1(sendRequest$1(SEND_SNEAK_PEEK, {
|
|
3213
3481
|
chat_id: chatId,
|
|
3214
3482
|
sneak_peek_text: sneakPeekText
|
|
3215
3483
|
}))["catch"](noop);
|
|
@@ -3223,22 +3491,22 @@ var init = function init(config, env, licenseId) {
|
|
|
3223
3491
|
organizationId: config.organizationId,
|
|
3224
3492
|
eventName: 'chat_started'
|
|
3225
3493
|
});
|
|
3226
|
-
return sendRequestAction$1(sendRequest(START_CHAT, parseStartChatData(data)));
|
|
3494
|
+
return sendRequestAction$1(sendRequest$1(START_CHAT, parseStartChatData(data)));
|
|
3227
3495
|
},
|
|
3228
3496
|
updateChatProperties: function updateChatProperties(_ref18) {
|
|
3229
3497
|
var id = _ref18.id,
|
|
3230
3498
|
properties = _ref18.properties;
|
|
3231
|
-
return sendRequestAction$1(sendRequest(UPDATE_CHAT_PROPERTIES, {
|
|
3499
|
+
return sendRequestAction$1(sendRequest$1(UPDATE_CHAT_PROPERTIES, {
|
|
3232
3500
|
id: id,
|
|
3233
3501
|
properties: properties
|
|
3234
3502
|
}));
|
|
3235
3503
|
},
|
|
3236
3504
|
updateCustomer: function updateCustomer(update) {
|
|
3237
|
-
return sendRequestAction$1(sendRequest(UPDATE_CUSTOMER, parseCustomerUpdate(update)));
|
|
3505
|
+
return sendRequestAction$1(sendRequest$1(UPDATE_CUSTOMER, parseCustomerUpdate(update)));
|
|
3238
3506
|
},
|
|
3239
3507
|
updateCustomerPage: function updateCustomerPage(page) {
|
|
3240
3508
|
store.dispatch({
|
|
3241
|
-
type: UPDATE_CUSTOMER_PAGE,
|
|
3509
|
+
type: UPDATE_CUSTOMER_PAGE$1,
|
|
3242
3510
|
payload: pickOwn(['title', 'url'], page)
|
|
3243
3511
|
});
|
|
3244
3512
|
},
|
|
@@ -3247,7 +3515,7 @@ var init = function init(config, env, licenseId) {
|
|
|
3247
3515
|
threadId = _ref19.threadId,
|
|
3248
3516
|
eventId = _ref19.eventId,
|
|
3249
3517
|
properties = _ref19.properties;
|
|
3250
|
-
return sendRequestAction$1(sendRequest(UPDATE_EVENT_PROPERTIES, {
|
|
3518
|
+
return sendRequestAction$1(sendRequest$1(UPDATE_EVENT_PROPERTIES, {
|
|
3251
3519
|
chat_id: chatId,
|
|
3252
3520
|
event_id: eventId,
|
|
3253
3521
|
thread_id: threadId,
|
|
@@ -3258,7 +3526,7 @@ var init = function init(config, env, licenseId) {
|
|
|
3258
3526
|
var chatId = _ref20.chatId,
|
|
3259
3527
|
threadId = _ref20.threadId,
|
|
3260
3528
|
properties = _ref20.properties;
|
|
3261
|
-
return sendRequestAction$1(sendRequest(UPDATE_THREAD_PROPERTIES, {
|
|
3529
|
+
return sendRequestAction$1(sendRequest$1(UPDATE_THREAD_PROPERTIES, {
|
|
3262
3530
|
chat_id: chatId,
|
|
3263
3531
|
thread_id: threadId,
|
|
3264
3532
|
properties: properties
|
|
@@ -3275,7 +3543,7 @@ var init = function init(config, env, licenseId) {
|
|
|
3275
3543
|
startConnection();
|
|
3276
3544
|
} else {
|
|
3277
3545
|
store.dispatch({
|
|
3278
|
-
type: CHECK_GOALS,
|
|
3546
|
+
type: CHECK_GOALS$1,
|
|
3279
3547
|
payload: {
|
|
3280
3548
|
sessionFields: typeof customerDataProvider === 'function' ? customerDataProvider().sessionFields : {}
|
|
3281
3549
|
}
|
|
@@ -3284,4 +3552,4 @@ var init = function init(config, env, licenseId) {
|
|
|
3284
3552
|
return api;
|
|
3285
3553
|
};
|
|
3286
3554
|
|
|
3287
|
-
export { connectionStatuses, debug, eventTypes, init, parseCustomEvent, parseEvent
|
|
3555
|
+
export { connectionStatuses, debug, eventTypes, init, parseCustomEvent, parseEvent, parseFile, parseFilledForm, parseForm, parseGreeting, parseMessage, parseRichMessage, parseSystemMessage, serverDisconnectionReasons, serverErrorCodes, serverPushActions, sortOrders, userTypes };
|