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