@bigbinary/neeto-integrations-frontend 2.3.1 → 2.4.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/dist/Twilio.cjs.js +540 -0
- package/dist/Twilio.cjs.js.map +1 -0
- package/dist/Twilio.js +512 -0
- package/dist/Twilio.js.map +1 -0
- package/dist/index.cjs.js +441 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +441 -4
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/translations/en.json +22 -1
- package/types.d.ts +10 -5
package/dist/Twilio.js
ADDED
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { keysToSnakeCase, noop, _findBy } from '@bigbinary/neeto-commons-frontend/pure';
|
|
3
|
+
import i18next from 'i18next';
|
|
4
|
+
import { Modal as Modal$1, Typography } from '@bigbinary/neetoui';
|
|
5
|
+
import { Input, Select, Form, ActionBlock } from '@bigbinary/neetoui/formik';
|
|
6
|
+
import { prop, equals } from 'ramda';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
8
|
+
import { useStateWithDependency } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
9
|
+
import { DEFAULT_STALE_TIME } from '@bigbinary/neeto-commons-frontend/constants';
|
|
10
|
+
import { QueryClient, QueryCache, useQuery, useMutation } from 'react-query';
|
|
11
|
+
import axios from 'axios';
|
|
12
|
+
import * as yup from 'yup';
|
|
13
|
+
import classnames from 'classnames';
|
|
14
|
+
|
|
15
|
+
function _arrayWithHoles(arr) {
|
|
16
|
+
if (Array.isArray(arr)) return arr;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function _iterableToArrayLimit(arr, i) {
|
|
20
|
+
var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
|
|
21
|
+
if (null != _i) {
|
|
22
|
+
var _s,
|
|
23
|
+
_e,
|
|
24
|
+
_x,
|
|
25
|
+
_r,
|
|
26
|
+
_arr = [],
|
|
27
|
+
_n = !0,
|
|
28
|
+
_d = !1;
|
|
29
|
+
try {
|
|
30
|
+
if (_x = (_i = _i.call(arr)).next, 0 === i) {
|
|
31
|
+
if (Object(_i) !== _i) return;
|
|
32
|
+
_n = !1;
|
|
33
|
+
} else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
|
|
34
|
+
} catch (err) {
|
|
35
|
+
_d = !0, _e = err;
|
|
36
|
+
} finally {
|
|
37
|
+
try {
|
|
38
|
+
if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
|
|
39
|
+
} finally {
|
|
40
|
+
if (_d) throw _e;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return _arr;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function _arrayLikeToArray(arr, len) {
|
|
48
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
49
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
50
|
+
return arr2;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
54
|
+
if (!o) return;
|
|
55
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
56
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
57
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
58
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
59
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _nonIterableRest() {
|
|
63
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function _slicedToArray(arr, i) {
|
|
67
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
var TWILIO_INTEGRATION_STEPS = [{
|
|
71
|
+
step: "1",
|
|
72
|
+
label: i18next.t("neetoIntegrations.steps.configure"),
|
|
73
|
+
isActive: true,
|
|
74
|
+
isCompleted: false
|
|
75
|
+
}];
|
|
76
|
+
|
|
77
|
+
function _typeof(obj) {
|
|
78
|
+
"@babel/helpers - typeof";
|
|
79
|
+
|
|
80
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
81
|
+
return typeof obj;
|
|
82
|
+
} : function (obj) {
|
|
83
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
84
|
+
}, _typeof(obj);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function _toPrimitive(input, hint) {
|
|
88
|
+
if (_typeof(input) !== "object" || input === null) return input;
|
|
89
|
+
var prim = input[Symbol.toPrimitive];
|
|
90
|
+
if (prim !== undefined) {
|
|
91
|
+
var res = prim.call(input, hint || "default");
|
|
92
|
+
if (_typeof(res) !== "object") return res;
|
|
93
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
94
|
+
}
|
|
95
|
+
return (hint === "string" ? String : Number)(input);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function _toPropertyKey(arg) {
|
|
99
|
+
var key = _toPrimitive(arg, "string");
|
|
100
|
+
return _typeof(key) === "symbol" ? key : String(key);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function _defineProperty(obj, key, value) {
|
|
104
|
+
key = _toPropertyKey(key);
|
|
105
|
+
if (key in obj) {
|
|
106
|
+
Object.defineProperty(obj, key, {
|
|
107
|
+
value: value,
|
|
108
|
+
enumerable: true,
|
|
109
|
+
configurable: true,
|
|
110
|
+
writable: true
|
|
111
|
+
});
|
|
112
|
+
} else {
|
|
113
|
+
obj[key] = value;
|
|
114
|
+
}
|
|
115
|
+
return obj;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
119
|
+
function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
120
|
+
var ConfigurationForm = function ConfigurationForm(_ref) {
|
|
121
|
+
var _errors$twilioPhoneNu;
|
|
122
|
+
var phoneNumberOptions = _ref.phoneNumberOptions,
|
|
123
|
+
_ref$selectedPhoneNum = _ref.selectedPhoneNumber,
|
|
124
|
+
selectedPhoneNumber = _ref$selectedPhoneNum === void 0 ? null : _ref$selectedPhoneNum,
|
|
125
|
+
_ref$initialFocusRef = _ref.initialFocusRef,
|
|
126
|
+
initialFocusRef = _ref$initialFocusRef === void 0 ? null : _ref$initialFocusRef,
|
|
127
|
+
_ref$isUsingOverlay = _ref.isUsingOverlay,
|
|
128
|
+
isUsingOverlay = _ref$isUsingOverlay === void 0 ? false : _ref$isUsingOverlay,
|
|
129
|
+
_ref$formikProps = _ref.formikProps,
|
|
130
|
+
formikProps = _ref$formikProps === void 0 ? {} : _ref$formikProps;
|
|
131
|
+
var _useTranslation = useTranslation(),
|
|
132
|
+
t = _useTranslation.t;
|
|
133
|
+
var setFieldValue = formikProps.setFieldValue,
|
|
134
|
+
setValues = formikProps.setValues,
|
|
135
|
+
errors = formikProps.errors,
|
|
136
|
+
values = formikProps.values,
|
|
137
|
+
initialValues = formikProps.initialValues;
|
|
138
|
+
useEffect(function () {
|
|
139
|
+
selectedPhoneNumber && setFieldValue("twilioPhoneNumber", selectedPhoneNumber);
|
|
140
|
+
}, [selectedPhoneNumber, initialValues]);
|
|
141
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
142
|
+
className: "flex w-full flex-col gap-4"
|
|
143
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
144
|
+
className: "flex w-full"
|
|
145
|
+
}, /*#__PURE__*/React.createElement(Input, {
|
|
146
|
+
required: true,
|
|
147
|
+
autoFocus: !isUsingOverlay,
|
|
148
|
+
"data-testid": "integrations-twilio-sid",
|
|
149
|
+
label: t("neetoIntegrations.twilio.sid"),
|
|
150
|
+
name: "twilioSid",
|
|
151
|
+
ref: initialFocusRef
|
|
152
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
153
|
+
className: "flex w-full"
|
|
154
|
+
}, /*#__PURE__*/React.createElement(Input, {
|
|
155
|
+
required: true,
|
|
156
|
+
"data-testid": "integrations-twilio-auth-token",
|
|
157
|
+
label: t("neetoIntegrations.twilio.authToken"),
|
|
158
|
+
name: "twilioAuthToken"
|
|
159
|
+
})), phoneNumberOptions && /*#__PURE__*/React.createElement("div", {
|
|
160
|
+
className: "flex w-full"
|
|
161
|
+
}, /*#__PURE__*/React.createElement(Select, {
|
|
162
|
+
error: (_errors$twilioPhoneNu = errors.twilioPhoneNumber) === null || _errors$twilioPhoneNu === void 0 ? void 0 : _errors$twilioPhoneNu.value,
|
|
163
|
+
label: t("neetoIntegrations.common.phNo"),
|
|
164
|
+
name: "twilioPhoneNumber",
|
|
165
|
+
options: phoneNumberOptions,
|
|
166
|
+
size: "large",
|
|
167
|
+
onChange: function onChange(selected) {
|
|
168
|
+
return setValues(_objectSpread$2(_objectSpread$2({}, values), {}, {
|
|
169
|
+
twilioPhoneNumber: selected
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
})));
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
function _arrayWithoutHoles(arr) {
|
|
176
|
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function _iterableToArray(iter) {
|
|
180
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function _nonIterableSpread() {
|
|
184
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function _toConsumableArray(arr) {
|
|
188
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
var queryClient = new QueryClient({
|
|
192
|
+
queryCache: new QueryCache()
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
var TWILIO_CONFIGURATION_BASE_URL = "/neeto_integrations/twilio/sms_configurations";
|
|
196
|
+
|
|
197
|
+
var twilioApi = {
|
|
198
|
+
fetchTwilioSmsConfiguration: function fetchTwilioSmsConfiguration() {
|
|
199
|
+
return axios.get(TWILIO_CONFIGURATION_BASE_URL);
|
|
200
|
+
},
|
|
201
|
+
removeTwilioConfiguration: function removeTwilioConfiguration() {
|
|
202
|
+
return axios["delete"](TWILIO_CONFIGURATION_BASE_URL);
|
|
203
|
+
},
|
|
204
|
+
getTwilioPhoneNumbers: function getTwilioPhoneNumbers(data) {
|
|
205
|
+
return axios.get("".concat(TWILIO_CONFIGURATION_BASE_URL, "/new"), {
|
|
206
|
+
params: data
|
|
207
|
+
});
|
|
208
|
+
},
|
|
209
|
+
createTwilioConfiguration: function createTwilioConfiguration(payload) {
|
|
210
|
+
return axios.post(TWILIO_CONFIGURATION_BASE_URL, payload);
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
var QUERY_KEYS = {
|
|
215
|
+
TWILIO_SMS_CONFIGURATION: "twilio-sms-configuration",
|
|
216
|
+
TWILIO_PHONE_NUMBERS: "twilio-phone-numbers"
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
var useFetchTwilioSmsConfiguration = function useFetchTwilioSmsConfiguration() {
|
|
220
|
+
return useQuery(QUERY_KEYS.TWILIO_SMS_CONFIGURATION, twilioApi.fetchTwilioSmsConfiguration, {
|
|
221
|
+
staleTime: DEFAULT_STALE_TIME,
|
|
222
|
+
select: function select(response) {
|
|
223
|
+
var _smsConfiguration$twi, _smsConfiguration$twi2, _smsConfiguration$twi3;
|
|
224
|
+
var smsConfiguration = response.smsConfiguration;
|
|
225
|
+
return {
|
|
226
|
+
twilioSid: (_smsConfiguration$twi = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioSid) !== null && _smsConfiguration$twi !== void 0 ? _smsConfiguration$twi : "",
|
|
227
|
+
twilioAuthToken: (_smsConfiguration$twi2 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioAuthToken) !== null && _smsConfiguration$twi2 !== void 0 ? _smsConfiguration$twi2 : "",
|
|
228
|
+
twilioPhoneNumber: (_smsConfiguration$twi3 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioPhoneNumber) !== null && _smsConfiguration$twi3 !== void 0 ? _smsConfiguration$twi3 : ""
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
var useFetchTwilioPhoneNumbers = function useFetchTwilioPhoneNumbers(_ref) {
|
|
234
|
+
var credentials = _ref.credentials;
|
|
235
|
+
return useQuery([QUERY_KEYS.TWILIO_PHONE_NUMBERS, {
|
|
236
|
+
credentials: credentials
|
|
237
|
+
}], function () {
|
|
238
|
+
return twilioApi.getTwilioPhoneNumbers(keysToSnakeCase(credentials));
|
|
239
|
+
}, {
|
|
240
|
+
staleTime: DEFAULT_STALE_TIME,
|
|
241
|
+
enabled: !!(credentials !== null && credentials !== void 0 && credentials.twilio_sid) || !!(credentials !== null && credentials !== void 0 && credentials.twilioSid),
|
|
242
|
+
select: prop("phoneNumbers"),
|
|
243
|
+
retry: false
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
var useCreateTwilioConfiguration = function useCreateTwilioConfiguration() {
|
|
247
|
+
return useMutation(twilioApi.createTwilioConfiguration, {
|
|
248
|
+
onSuccess: function onSuccess() {
|
|
249
|
+
return queryClient.invalidateQueries(QUERY_KEYS.TWILIO_SMS_CONFIGURATION);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
255
|
+
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
256
|
+
var useTwilio = function useTwilio(_ref) {
|
|
257
|
+
var _ref$onSave = _ref.onSave,
|
|
258
|
+
onSave = _ref$onSave === void 0 ? noop : _ref$onSave,
|
|
259
|
+
_ref$setSteps = _ref.setSteps,
|
|
260
|
+
setSteps = _ref$setSteps === void 0 ? noop : _ref$setSteps,
|
|
261
|
+
_ref$useConnect = _ref.useConnect,
|
|
262
|
+
useConnect = _ref$useConnect === void 0 ? noop : _ref$useConnect;
|
|
263
|
+
var _useFetchTwilioSmsCon = useFetchTwilioSmsConfiguration(),
|
|
264
|
+
configuration = _useFetchTwilioSmsCon.data,
|
|
265
|
+
isConfigurationLoading = _useFetchTwilioSmsCon.isLoading,
|
|
266
|
+
refetchTwilioSmsConfiguration = _useFetchTwilioSmsCon.refetch;
|
|
267
|
+
var _useStateWithDependen = useStateWithDependency(configuration),
|
|
268
|
+
_useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
|
|
269
|
+
credentials = _useStateWithDependen2[0],
|
|
270
|
+
setCredentials = _useStateWithDependen2[1];
|
|
271
|
+
var _useFetchTwilioPhoneN = useFetchTwilioPhoneNumbers({
|
|
272
|
+
credentials: credentials
|
|
273
|
+
}),
|
|
274
|
+
phoneNumbers = _useFetchTwilioPhoneN.data,
|
|
275
|
+
isPhoneNumbersLoading = _useFetchTwilioPhoneN.isLoading;
|
|
276
|
+
var _useCreateTwilioConfi = useCreateTwilioConfiguration(),
|
|
277
|
+
saveConfiguration = _useCreateTwilioConfi.mutate,
|
|
278
|
+
isSubmitting = _useCreateTwilioConfi.isLoading;
|
|
279
|
+
var _useConnect = useConnect(),
|
|
280
|
+
installIntegration = _useConnect.mutate;
|
|
281
|
+
var connectTwilioApp = function connectTwilioApp() {
|
|
282
|
+
return installIntegration({
|
|
283
|
+
id: "twilio"
|
|
284
|
+
}, {});
|
|
285
|
+
};
|
|
286
|
+
useEffect(function () {
|
|
287
|
+
if (!(configuration !== null && configuration !== void 0 && configuration.twilioPhoneNumber)) return;
|
|
288
|
+
setSteps(function (steps) {
|
|
289
|
+
var stepsClone = _toConsumableArray(steps);
|
|
290
|
+
stepsClone[0] = _objectSpread$1(_objectSpread$1({}, steps[0]), {}, {
|
|
291
|
+
isCompleted: true
|
|
292
|
+
});
|
|
293
|
+
return stepsClone;
|
|
294
|
+
});
|
|
295
|
+
}, [configuration]);
|
|
296
|
+
var handleSubmit = function handleSubmit(values) {
|
|
297
|
+
var _values$twilioPhoneNu;
|
|
298
|
+
var payload = {
|
|
299
|
+
twilio_sid: values.twilioSid,
|
|
300
|
+
twilio_auth_token: values.twilioAuthToken,
|
|
301
|
+
twilio_phone_number_sid: (_values$twilioPhoneNu = values.twilioPhoneNumber) === null || _values$twilioPhoneNu === void 0 ? void 0 : _values$twilioPhoneNu.value
|
|
302
|
+
};
|
|
303
|
+
if (!phoneNumbers && !(configuration !== null && configuration !== void 0 && configuration.twilioPhoneNumber)) {
|
|
304
|
+
setCredentials(payload);
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
saveConfiguration(payload, {
|
|
308
|
+
onSuccess: function onSuccess() {
|
|
309
|
+
onSave();
|
|
310
|
+
connectTwilioApp();
|
|
311
|
+
refetchTwilioSmsConfiguration();
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
};
|
|
315
|
+
return {
|
|
316
|
+
handleSubmit: handleSubmit,
|
|
317
|
+
phoneNumbers: phoneNumbers,
|
|
318
|
+
isConfigurationLoading: isConfigurationLoading,
|
|
319
|
+
isPhoneNumbersLoading: isPhoneNumbersLoading,
|
|
320
|
+
isSubmitting: isSubmitting,
|
|
321
|
+
configuration: configuration
|
|
322
|
+
};
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
var buildTwilioConfigurationValidationSchema = function buildTwilioConfigurationValidationSchema(isTwilioPhoneRequired) {
|
|
326
|
+
return yup.object().shape({
|
|
327
|
+
twilioSid: yup.string().required(i18next.t("neetoIntegrations.twilio.validations.sidReq")),
|
|
328
|
+
twilioAuthToken: yup.string().required(i18next.t("neetoIntegrations.twilio.validations.authTokenReq")),
|
|
329
|
+
twilioPhoneNumber: isTwilioPhoneRequired ? yup.object().shape({
|
|
330
|
+
label: yup.string(),
|
|
331
|
+
value: yup.string().required(i18next.t("neetoIntegrations.twilio.validations.phNumReq"))
|
|
332
|
+
}) : null
|
|
333
|
+
});
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
337
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
338
|
+
var TwilioConfiguration = function TwilioConfiguration(_ref) {
|
|
339
|
+
var _ref$onCancel = _ref.onCancel,
|
|
340
|
+
onCancel = _ref$onCancel === void 0 ? noop : _ref$onCancel,
|
|
341
|
+
_ref$onSave = _ref.onSave,
|
|
342
|
+
onSave = _ref$onSave === void 0 ? noop : _ref$onSave,
|
|
343
|
+
_ref$setSteps = _ref.setSteps,
|
|
344
|
+
setSteps = _ref$setSteps === void 0 ? noop : _ref$setSteps,
|
|
345
|
+
_ref$useConnect = _ref.useConnect,
|
|
346
|
+
useConnect = _ref$useConnect === void 0 ? noop : _ref$useConnect,
|
|
347
|
+
_ref$isModal = _ref.isModal,
|
|
348
|
+
isModal = _ref$isModal === void 0 ? false : _ref$isModal;
|
|
349
|
+
var _useTranslation = useTranslation(),
|
|
350
|
+
t = _useTranslation.t;
|
|
351
|
+
var initialFocusRef = useRef();
|
|
352
|
+
var _useTwilio = useTwilio({
|
|
353
|
+
onSave: onSave,
|
|
354
|
+
setSteps: setSteps,
|
|
355
|
+
useConnect: useConnect
|
|
356
|
+
}),
|
|
357
|
+
handleSubmit = _useTwilio.handleSubmit,
|
|
358
|
+
phoneNumbers = _useTwilio.phoneNumbers,
|
|
359
|
+
isConfigurationLoading = _useTwilio.isConfigurationLoading,
|
|
360
|
+
isPhoneNumbersLoading = _useTwilio.isPhoneNumbersLoading,
|
|
361
|
+
isSubmitting = _useTwilio.isSubmitting,
|
|
362
|
+
configuration = _useTwilio.configuration;
|
|
363
|
+
var phoneNumberOptions = phoneNumbers === null || phoneNumbers === void 0 ? void 0 : phoneNumbers.map(function (_ref2) {
|
|
364
|
+
var phoneNumber = _ref2.phoneNumber,
|
|
365
|
+
sid = _ref2.sid;
|
|
366
|
+
return {
|
|
367
|
+
label: phoneNumber,
|
|
368
|
+
value: sid
|
|
369
|
+
};
|
|
370
|
+
});
|
|
371
|
+
var selectedPhoneNumber = _findBy({
|
|
372
|
+
label: configuration === null || configuration === void 0 ? void 0 : configuration.twilioPhoneNumber
|
|
373
|
+
}, phoneNumberOptions);
|
|
374
|
+
var wrapInModalBody = function wrapInModalBody(children) {
|
|
375
|
+
return /*#__PURE__*/React.createElement(Modal$1.Body, null, children);
|
|
376
|
+
};
|
|
377
|
+
var wrapInModalFooter = function wrapInModalFooter(children) {
|
|
378
|
+
return /*#__PURE__*/React.createElement(Modal$1.Footer, null, children);
|
|
379
|
+
};
|
|
380
|
+
var isLoading = isPhoneNumbersLoading || isConfigurationLoading;
|
|
381
|
+
var isSubmitDisabled = function isSubmitDisabled(values) {
|
|
382
|
+
return equals(_objectSpread(_objectSpread({}, configuration), {}, {
|
|
383
|
+
twilioPhoneNumber: selectedPhoneNumber
|
|
384
|
+
}), values) || isLoading;
|
|
385
|
+
};
|
|
386
|
+
var renderActionBlock = function renderActionBlock(values) {
|
|
387
|
+
return /*#__PURE__*/React.createElement(ActionBlock, {
|
|
388
|
+
cancelButtonProps: {
|
|
389
|
+
onClick: onCancel,
|
|
390
|
+
disabled: false
|
|
391
|
+
},
|
|
392
|
+
className: "space-x-3",
|
|
393
|
+
submitButtonProps: {
|
|
394
|
+
label: phoneNumberOptions ? t("neetoIntegrations.common.saveChanges") : t("neetoIntegrations.common.verify"),
|
|
395
|
+
disabled: isSubmitDisabled(values),
|
|
396
|
+
loading: isSubmitting || isPhoneNumbersLoading && !configuration.twilioAuthToken
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
};
|
|
400
|
+
var renderForm = function renderForm(formikProps) {
|
|
401
|
+
return /*#__PURE__*/React.createElement(ConfigurationForm, {
|
|
402
|
+
formikProps: formikProps,
|
|
403
|
+
initialFocusRef: initialFocusRef,
|
|
404
|
+
isUsingOverlay: isModal,
|
|
405
|
+
phoneNumberOptions: phoneNumberOptions,
|
|
406
|
+
selectedPhoneNumber: selectedPhoneNumber
|
|
407
|
+
});
|
|
408
|
+
};
|
|
409
|
+
return /*#__PURE__*/React.createElement(Form, {
|
|
410
|
+
className: "mx-auto flex w-full max-w-md flex-col",
|
|
411
|
+
formikProps: {
|
|
412
|
+
enableReinitialize: true,
|
|
413
|
+
validationSchema: buildTwilioConfigurationValidationSchema(!!phoneNumbers),
|
|
414
|
+
initialValues: configuration,
|
|
415
|
+
onSubmit: handleSubmit
|
|
416
|
+
}
|
|
417
|
+
}, function (formikProps) {
|
|
418
|
+
return isModal ? /*#__PURE__*/React.createElement(React.Fragment, null, wrapInModalBody(renderForm(formikProps)), wrapInModalFooter(renderActionBlock(formikProps.values))) : /*#__PURE__*/React.createElement(React.Fragment, null, "renderForm(formikProps)", /*#__PURE__*/React.createElement("div", {
|
|
419
|
+
className: "mt-4 flex items-center gap-x-2"
|
|
420
|
+
}, renderActionBlock(formikProps.values)));
|
|
421
|
+
});
|
|
422
|
+
};
|
|
423
|
+
|
|
424
|
+
var Stepper = function Stepper(_ref) {
|
|
425
|
+
var _ref$steps = _ref.steps,
|
|
426
|
+
steps = _ref$steps === void 0 ? {} : _ref$steps;
|
|
427
|
+
var isActiveOrCompleted = function isActiveOrCompleted(activeStatus, completedStatus) {
|
|
428
|
+
return activeStatus || completedStatus;
|
|
429
|
+
};
|
|
430
|
+
return /*#__PURE__*/React.createElement("ul", {
|
|
431
|
+
className: "flex gap-4"
|
|
432
|
+
}, steps === null || steps === void 0 ? void 0 : steps.map(function (_ref2) {
|
|
433
|
+
var step = _ref2.step,
|
|
434
|
+
label = _ref2.label,
|
|
435
|
+
isActive = _ref2.isActive,
|
|
436
|
+
isCompleted = _ref2.isCompleted;
|
|
437
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
438
|
+
className: "flex items-center gap-4",
|
|
439
|
+
key: step
|
|
440
|
+
}, step !== "1" && /*#__PURE__*/React.createElement("div", {
|
|
441
|
+
className: classnames("w-10 border-b", {
|
|
442
|
+
"neeto-ui-border-gray-800": isActiveOrCompleted(isActive, isCompleted),
|
|
443
|
+
"neeto-ui-border-gray-400": !isActiveOrCompleted(isActive, isCompleted)
|
|
444
|
+
})
|
|
445
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
446
|
+
className: "flex items-center gap-2"
|
|
447
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
448
|
+
className: classnames("neeto-ui-rounded-full neeto-ui-gray-600 flex h-6 w-6 items-center justify-center border", {
|
|
449
|
+
"neeto-ui-bg-success-600 neeto-ui-border-success-600 neeto-ui-text-white": isActive,
|
|
450
|
+
"neeto-ui-bg-primary-600 neeto-ui-border-primary-600 neeto-ui-text-white": isCompleted,
|
|
451
|
+
"neeto-ui-border-gray-400": !isActiveOrCompleted(isActive, isCompleted)
|
|
452
|
+
})
|
|
453
|
+
}, /*#__PURE__*/React.createElement(Typography, {
|
|
454
|
+
component: "span",
|
|
455
|
+
style: "body2",
|
|
456
|
+
weight: "normal"
|
|
457
|
+
}, step)), /*#__PURE__*/React.createElement(Typography, {
|
|
458
|
+
style: "body2",
|
|
459
|
+
weight: "normal",
|
|
460
|
+
className: classnames({
|
|
461
|
+
"neeto-ui-text-gray-800": isActiveOrCompleted(isActive, isCompleted),
|
|
462
|
+
"neeto-ui-text-gray-600": !isActiveOrCompleted(isActive, isCompleted)
|
|
463
|
+
})
|
|
464
|
+
}, label)));
|
|
465
|
+
}));
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
var Modal = function Modal(_ref) {
|
|
469
|
+
var _ref$isOpen = _ref.isOpen,
|
|
470
|
+
isOpen = _ref$isOpen === void 0 ? noop : _ref$isOpen,
|
|
471
|
+
_ref$onClose = _ref.onClose,
|
|
472
|
+
onClose = _ref$onClose === void 0 ? noop : _ref$onClose,
|
|
473
|
+
_ref$steps = _ref.steps,
|
|
474
|
+
steps = _ref$steps === void 0 ? {} : _ref$steps,
|
|
475
|
+
children = _ref.children;
|
|
476
|
+
return /*#__PURE__*/React.createElement(Modal$1, {
|
|
477
|
+
className: "neeto-ui-flex neeto-ui-flex-col neeto-ui-transform-none w-screen overflow-y-auto",
|
|
478
|
+
isOpen: isOpen,
|
|
479
|
+
size: "fullScreen",
|
|
480
|
+
onClose: onClose
|
|
481
|
+
}, /*#__PURE__*/React.createElement(Modal$1.Header, null, /*#__PURE__*/React.createElement(Stepper, {
|
|
482
|
+
steps: steps
|
|
483
|
+
})), /*#__PURE__*/React.createElement(Modal$1.Body, {
|
|
484
|
+
className: "neeto-ui-flex neeto-ui-justify-center neeto-ui-items-center neeto-ui-flex-grow"
|
|
485
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
486
|
+
className: "neeto-ui-w-full py-10"
|
|
487
|
+
}, children)));
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
var Twilio = function Twilio(_ref) {
|
|
491
|
+
var _ref$onClose = _ref.onClose,
|
|
492
|
+
onClose = _ref$onClose === void 0 ? noop : _ref$onClose,
|
|
493
|
+
_ref$useConnect = _ref.useConnect,
|
|
494
|
+
useConnect = _ref$useConnect === void 0 ? noop : _ref$useConnect;
|
|
495
|
+
var _useState = useState(TWILIO_INTEGRATION_STEPS),
|
|
496
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
497
|
+
steps = _useState2[0],
|
|
498
|
+
setSteps = _useState2[1];
|
|
499
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
500
|
+
isOpen: true,
|
|
501
|
+
steps: steps,
|
|
502
|
+
onClose: onClose
|
|
503
|
+
}, /*#__PURE__*/React.createElement(TwilioConfiguration, {
|
|
504
|
+
isModal: true,
|
|
505
|
+
setSteps: setSteps,
|
|
506
|
+
useConnect: useConnect,
|
|
507
|
+
onCancel: onClose
|
|
508
|
+
}));
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
export { Twilio as default };
|
|
512
|
+
//# sourceMappingURL=Twilio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Twilio.js","sources":["../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../src/components/Integrations/Twilio/constants.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../src/components/Integrations/Twilio/TwilioConfiguration/Form.jsx","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../src/apis/queryClient.js","../src/constants/urls.js","../src/apis/twilio.js","../src/constants/query.js","../src/hooks/reactQuery/useTwilioApi.js","../src/components/Integrations/Twilio/TwilioConfiguration/hooks/useTwilio.js","../src/components/Integrations/Twilio/TwilioConfiguration/utils.js","../src/components/Integrations/Twilio/TwilioConfiguration/index.jsx","../src/components/Modal/Stepper.jsx","../src/components/Modal/index.jsx","../src/components/Integrations/Twilio/index.jsx"],"sourcesContent":["export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","import i18next from \"i18next\";\n\nexport const TWILIO_INTEGRATION_STEPS = [\n {\n step: \"1\",\n label: i18next.t(\"neetoIntegrations.steps.configure\"),\n isActive: true,\n isCompleted: false,\n },\n];\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import React, { useEffect } from \"react\";\n\nimport { Input, Select } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ConfigurationForm = ({\n phoneNumberOptions,\n selectedPhoneNumber = null,\n initialFocusRef = null,\n isUsingOverlay = false,\n formikProps = {},\n}) => {\n const { t } = useTranslation();\n const { setFieldValue, setValues, errors, values, initialValues } =\n formikProps;\n\n useEffect(() => {\n selectedPhoneNumber &&\n setFieldValue(\"twilioPhoneNumber\", selectedPhoneNumber);\n }, [selectedPhoneNumber, initialValues]);\n\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div className=\"flex w-full\">\n <Input\n required\n autoFocus={!isUsingOverlay}\n data-testid=\"integrations-twilio-sid\"\n label={t(\"neetoIntegrations.twilio.sid\")}\n name=\"twilioSid\"\n ref={initialFocusRef}\n />\n </div>\n <div className=\"flex w-full\">\n <Input\n required\n data-testid=\"integrations-twilio-auth-token\"\n label={t(\"neetoIntegrations.twilio.authToken\")}\n name=\"twilioAuthToken\"\n />\n </div>\n {phoneNumberOptions && (\n <div className=\"flex w-full\">\n <Select\n error={errors.twilioPhoneNumber?.value}\n label={t(\"neetoIntegrations.common.phNo\")}\n name=\"twilioPhoneNumber\"\n options={phoneNumberOptions}\n size=\"large\"\n onChange={selected =>\n setValues({ ...values, twilioPhoneNumber: selected })\n }\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default ConfigurationForm;\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import { QueryCache, QueryClient } from \"react-query\";\n\nconst queryClient = new QueryClient({ queryCache: new QueryCache() });\n\nexport default queryClient;\n","export const TWILIO_CONFIGURATION_BASE_URL =\n \"/neeto_integrations/twilio/sms_configurations\";\n","import axios from \"axios\";\n\nimport { TWILIO_CONFIGURATION_BASE_URL } from \"src/constants/urls\";\n\nconst twilioApi = {\n fetchTwilioSmsConfiguration: () => axios.get(TWILIO_CONFIGURATION_BASE_URL),\n removeTwilioConfiguration: () => axios.delete(TWILIO_CONFIGURATION_BASE_URL),\n getTwilioPhoneNumbers: data =>\n axios.get(`${TWILIO_CONFIGURATION_BASE_URL}/new`, {\n params: data,\n }),\n createTwilioConfiguration: payload =>\n axios.post(TWILIO_CONFIGURATION_BASE_URL, payload),\n};\n\nexport default twilioApi;\n","export const QUERY_KEYS = {\n TWILIO_SMS_CONFIGURATION: \"twilio-sms-configuration\",\n TWILIO_PHONE_NUMBERS: \"twilio-phone-numbers\",\n};\n","import { DEFAULT_STALE_TIME } from \"neetocommons/constants\";\nimport { keysToSnakeCase } from \"neetocommons/pure\";\nimport { prop } from \"ramda\";\nimport { useMutation, useQuery } from \"react-query\";\n\nimport queryClient from \"apis/queryClient\";\nimport twilioApi from \"apis/twilio\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst useFetchTwilioSmsConfiguration = () =>\n useQuery(\n QUERY_KEYS.TWILIO_SMS_CONFIGURATION,\n twilioApi.fetchTwilioSmsConfiguration,\n {\n staleTime: DEFAULT_STALE_TIME,\n select: response => {\n const smsConfiguration = response.smsConfiguration;\n\n return {\n twilioSid: smsConfiguration?.twilioSid ?? \"\",\n twilioAuthToken: smsConfiguration?.twilioAuthToken ?? \"\",\n twilioPhoneNumber: smsConfiguration?.twilioPhoneNumber ?? \"\",\n };\n },\n }\n );\n\nconst useFetchTwilioPhoneNumbers = ({ credentials }) =>\n useQuery(\n [QUERY_KEYS.TWILIO_PHONE_NUMBERS, { credentials }],\n () => twilioApi.getTwilioPhoneNumbers(keysToSnakeCase(credentials)),\n {\n staleTime: DEFAULT_STALE_TIME,\n enabled: !!credentials?.twilio_sid || !!credentials?.twilioSid,\n select: prop(\"phoneNumbers\"),\n retry: false,\n }\n );\n\nconst useCreateTwilioConfiguration = () =>\n useMutation(twilioApi.createTwilioConfiguration, {\n onSuccess: () =>\n queryClient.invalidateQueries(QUERY_KEYS.TWILIO_SMS_CONFIGURATION),\n });\n\nexport {\n useCreateTwilioConfiguration,\n useFetchTwilioPhoneNumbers,\n useFetchTwilioSmsConfiguration,\n};\n","import { useEffect } from \"react\";\n\nimport { noop } from \"neetocommons/pure\";\nimport { useStateWithDependency } from \"neetocommons/react-utils\";\n\nimport {\n useFetchTwilioPhoneNumbers,\n useCreateTwilioConfiguration,\n useFetchTwilioSmsConfiguration,\n} from \"hooks/reactQuery/useTwilioApi\";\n\nconst useTwilio = ({ onSave = noop, setSteps = noop, useConnect = noop }) => {\n const {\n data: configuration,\n isLoading: isConfigurationLoading,\n refetch: refetchTwilioSmsConfiguration,\n } = useFetchTwilioSmsConfiguration();\n const [credentials, setCredentials] = useStateWithDependency(configuration);\n const { data: phoneNumbers, isLoading: isPhoneNumbersLoading } =\n useFetchTwilioPhoneNumbers({ credentials });\n\n const { mutate: saveConfiguration, isLoading: isSubmitting } =\n useCreateTwilioConfiguration();\n\n const { mutate: installIntegration } = useConnect();\n const connectTwilioApp = () => installIntegration({ id: \"twilio\" }, {});\n\n useEffect(() => {\n if (!configuration?.twilioPhoneNumber) return;\n setSteps(steps => {\n const stepsClone = [...steps];\n stepsClone[0] = { ...steps[0], isCompleted: true };\n\n return stepsClone;\n });\n }, [configuration]);\n\n const handleSubmit = values => {\n const payload = {\n twilio_sid: values.twilioSid,\n twilio_auth_token: values.twilioAuthToken,\n twilio_phone_number_sid: values.twilioPhoneNumber?.value,\n };\n\n if (!phoneNumbers && !configuration?.twilioPhoneNumber) {\n setCredentials(payload);\n\n return;\n }\n\n saveConfiguration(payload, {\n onSuccess: () => {\n onSave();\n connectTwilioApp();\n refetchTwilioSmsConfiguration();\n },\n });\n };\n\n return {\n handleSubmit,\n phoneNumbers,\n isConfigurationLoading,\n isPhoneNumbersLoading,\n isSubmitting,\n configuration,\n };\n};\n\nexport default useTwilio;\n","import i18next from \"i18next\";\nimport * as yup from \"yup\";\n\nexport const buildTwilioConfigurationValidationSchema = isTwilioPhoneRequired =>\n yup.object().shape({\n twilioSid: yup\n .string()\n .required(i18next.t(\"neetoIntegrations.twilio.validations.sidReq\")),\n twilioAuthToken: yup\n .string()\n .required(i18next.t(\"neetoIntegrations.twilio.validations.authTokenReq\")),\n twilioPhoneNumber: isTwilioPhoneRequired\n ? yup.object().shape({\n label: yup.string(),\n value: yup\n .string()\n .required(\n i18next.t(\"neetoIntegrations.twilio.validations.phNumReq\")\n ),\n })\n : null,\n });\n","import React, { useRef } from \"react\";\n\nimport { noop, _findBy } from \"neetocommons/pure\";\nimport { Modal } from \"neetoui\";\nimport { ActionBlock, Form as FormikFormWrapper } from \"neetoui/formik\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Form from \"./Form\";\nimport useTwilio from \"./hooks/useTwilio\";\nimport { buildTwilioConfigurationValidationSchema } from \"./utils\";\n\nconst TwilioConfiguration = ({\n onCancel = noop,\n onSave = noop,\n setSteps = noop,\n useConnect = noop,\n isModal = false,\n}) => {\n const { t } = useTranslation();\n const initialFocusRef = useRef();\n const {\n handleSubmit,\n phoneNumbers,\n isConfigurationLoading,\n isPhoneNumbersLoading,\n isSubmitting,\n configuration,\n } = useTwilio({ onSave, setSteps, useConnect });\n\n const phoneNumberOptions = phoneNumbers?.map(({ phoneNumber, sid }) => ({\n label: phoneNumber,\n value: sid,\n }));\n\n const selectedPhoneNumber = _findBy(\n { label: configuration?.twilioPhoneNumber },\n phoneNumberOptions\n );\n\n const wrapInModalBody = children => <Modal.Body>{children}</Modal.Body>;\n const wrapInModalFooter = children => <Modal.Footer>{children}</Modal.Footer>;\n const isLoading = isPhoneNumbersLoading || isConfigurationLoading;\n\n const isSubmitDisabled = values =>\n equals(\n { ...configuration, twilioPhoneNumber: selectedPhoneNumber },\n values\n ) || isLoading;\n\n const renderActionBlock = values => (\n <ActionBlock\n cancelButtonProps={{ onClick: onCancel, disabled: false }}\n className=\"space-x-3\"\n submitButtonProps={{\n label: phoneNumberOptions\n ? t(\"neetoIntegrations.common.saveChanges\")\n : t(\"neetoIntegrations.common.verify\"),\n disabled: isSubmitDisabled(values),\n loading:\n isSubmitting ||\n (isPhoneNumbersLoading && !configuration.twilioAuthToken),\n }}\n />\n );\n\n const renderForm = formikProps => (\n <Form\n formikProps={formikProps}\n initialFocusRef={initialFocusRef}\n isUsingOverlay={isModal}\n phoneNumberOptions={phoneNumberOptions}\n selectedPhoneNumber={selectedPhoneNumber}\n />\n );\n\n return (\n <FormikFormWrapper\n className=\"mx-auto flex w-full max-w-md flex-col\"\n formikProps={{\n enableReinitialize: true,\n validationSchema: buildTwilioConfigurationValidationSchema(\n !!phoneNumbers\n ),\n initialValues: configuration,\n onSubmit: handleSubmit,\n }}\n >\n {formikProps =>\n isModal ? (\n <>\n {wrapInModalBody(renderForm(formikProps))}\n {wrapInModalFooter(renderActionBlock(formikProps.values))}\n </>\n ) : (\n <>\n renderForm(formikProps)\n <div className=\"mt-4 flex items-center gap-x-2\">\n {renderActionBlock(formikProps.values)}\n </div>\n </>\n )\n }\n </FormikFormWrapper>\n );\n};\n\nexport default TwilioConfiguration;\n","import React from \"react\";\n\nimport classnames from \"classnames\";\nimport { Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nconst Stepper = ({ steps = {} }) => {\n const isActiveOrCompleted = (activeStatus, completedStatus) =>\n activeStatus || completedStatus;\n\n return (\n <ul className=\"flex gap-4\">\n {steps?.map(({ step, label, isActive, isCompleted }) => (\n <li className=\"flex items-center gap-4\" key={step}>\n {step !== \"1\" && (\n <div\n className={classnames(\"w-10 border-b\", {\n \"neeto-ui-border-gray-800\": isActiveOrCompleted(\n isActive,\n isCompleted\n ),\n \"neeto-ui-border-gray-400\": !isActiveOrCompleted(\n isActive,\n isCompleted\n ),\n })}\n />\n )}\n <div className=\"flex items-center gap-2\">\n <div\n className={classnames(\n \"neeto-ui-rounded-full neeto-ui-gray-600 flex h-6 w-6 items-center justify-center border\",\n {\n \"neeto-ui-bg-success-600 neeto-ui-border-success-600 neeto-ui-text-white\":\n isActive,\n \"neeto-ui-bg-primary-600 neeto-ui-border-primary-600 neeto-ui-text-white\":\n isCompleted,\n \"neeto-ui-border-gray-400\": !isActiveOrCompleted(\n isActive,\n isCompleted\n ),\n }\n )}\n >\n <Typography component=\"span\" style=\"body2\" weight=\"normal\">\n {step}\n </Typography>\n </div>\n <Typography\n style=\"body2\"\n weight=\"normal\"\n className={classnames({\n \"neeto-ui-text-gray-800\": isActiveOrCompleted(\n isActive,\n isCompleted\n ),\n \"neeto-ui-text-gray-600\": !isActiveOrCompleted(\n isActive,\n isCompleted\n ),\n })}\n >\n {label}\n </Typography>\n </div>\n </li>\n ))}\n </ul>\n );\n};\n\nStepper.propTypes = { steps: PropTypes.array };\n\nexport default Stepper;\n","import React from \"react\";\n\nimport { noop } from \"neetocommons/pure\";\nimport { Modal as NeetoUIModal } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nimport Stepper from \"./Stepper\";\n\nconst Modal = ({ isOpen = noop, onClose = noop, steps = {}, children }) => (\n <NeetoUIModal\n className=\"neeto-ui-flex neeto-ui-flex-col neeto-ui-transform-none w-screen overflow-y-auto\"\n isOpen={isOpen}\n size=\"fullScreen\"\n onClose={onClose}\n >\n <NeetoUIModal.Header>\n <Stepper steps={steps} />\n </NeetoUIModal.Header>\n <NeetoUIModal.Body className=\"neeto-ui-flex neeto-ui-justify-center neeto-ui-items-center neeto-ui-flex-grow\">\n <div className=\"neeto-ui-w-full py-10\">{children}</div>\n </NeetoUIModal.Body>\n </NeetoUIModal>\n);\n\nModal.propTypes = {\n /**\n * Handler function that is used to open the Modal\n */\n isOpen: PropTypes.bool,\n /**\n * Handler function that is triggered when the Modal's close button is invoked\n */\n onClose: PropTypes.func,\n /**\n * Denote the number of steps\n */\n steps: PropTypes.arrayOf(\n PropTypes.shape({\n step: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n isActive: PropTypes.bool.isRequired,\n isCompleted: PropTypes.bool.isRequired,\n })\n ),\n};\n\nexport default Modal;\n","import React, { useState } from \"react\";\n\nimport { noop } from \"neetocommons/pure\";\n\nimport { TWILIO_INTEGRATION_STEPS } from \"./constants\";\nimport TwilioConfiguration from \"./TwilioConfiguration\";\n\nimport Modal from \"../../Modal\";\n\nconst Twilio = ({ onClose = noop, useConnect = noop }) => {\n const [steps, setSteps] = useState(TWILIO_INTEGRATION_STEPS);\n\n return (\n <Modal isOpen steps={steps} onClose={onClose}>\n <TwilioConfiguration\n isModal\n setSteps={setSteps}\n useConnect={useConnect}\n onCancel={onClose}\n />\n </Modal>\n );\n};\n\nexport default Twilio;\n"],"names":["_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","i","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","call","next","Object","done","push","value","length","err","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","prototype","toString","slice","constructor","name","from","test","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","TWILIO_INTEGRATION_STEPS","step","label","i18next","t","isActive","isCompleted","_typeof","obj","_toPrimitive","input","hint","prim","toPrimitive","undefined","res","String","Number","_toPropertyKey","arg","key","_defineProperty","toPropertyKey","defineProperty","enumerable","configurable","writable","ConfigurationForm","_ref","_errors$twilioPhoneNu","phoneNumberOptions","_ref$selectedPhoneNum","selectedPhoneNumber","_ref$initialFocusRef","initialFocusRef","_ref$isUsingOverlay","isUsingOverlay","_ref$formikProps","formikProps","_useTranslation","useTranslation","setFieldValue","setValues","errors","values","initialValues","useEffect","React","createElement","className","Input","required","autoFocus","ref","Select","error","twilioPhoneNumber","options","size","onChange","selected","_objectSpread","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","queryClient","QueryClient","queryCache","QueryCache","TWILIO_CONFIGURATION_BASE_URL","twilioApi","fetchTwilioSmsConfiguration","axios","get","removeTwilioConfiguration","getTwilioPhoneNumbers","data","concat","params","createTwilioConfiguration","payload","post","QUERY_KEYS","TWILIO_SMS_CONFIGURATION","TWILIO_PHONE_NUMBERS","useFetchTwilioSmsConfiguration","useQuery","staleTime","DEFAULT_STALE_TIME","select","response","_smsConfiguration$twi","_smsConfiguration$twi2","_smsConfiguration$twi3","smsConfiguration","twilioSid","twilioAuthToken","useFetchTwilioPhoneNumbers","credentials","keysToSnakeCase","enabled","twilio_sid","prop","retry","useCreateTwilioConfiguration","useMutation","onSuccess","invalidateQueries","useTwilio","_ref$onSave","onSave","noop","_ref$setSteps","setSteps","_ref$useConnect","useConnect","_useFetchTwilioSmsCon","configuration","isConfigurationLoading","isLoading","refetchTwilioSmsConfiguration","refetch","_useStateWithDependen","useStateWithDependency","_useStateWithDependen2","setCredentials","_useFetchTwilioPhoneN","phoneNumbers","isPhoneNumbersLoading","_useCreateTwilioConfi","saveConfiguration","mutate","isSubmitting","_useConnect","installIntegration","connectTwilioApp","id","steps","stepsClone","handleSubmit","_values$twilioPhoneNu","twilio_auth_token","twilio_phone_number_sid","buildTwilioConfigurationValidationSchema","isTwilioPhoneRequired","yup","object","shape","string","TwilioConfiguration","_ref$onCancel","onCancel","_ref$isModal","isModal","useRef","_useTwilio","map","_ref2","phoneNumber","sid","_findBy","wrapInModalBody","children","Modal","Body","wrapInModalFooter","Footer","isSubmitDisabled","equals","renderActionBlock","ActionBlock","cancelButtonProps","onClick","disabled","submitButtonProps","loading","renderForm","Form","FormikFormWrapper","enableReinitialize","validationSchema","onSubmit","Fragment","Stepper","_ref$steps","isActiveOrCompleted","activeStatus","completedStatus","classnames","Typography","component","style","weight","_ref$isOpen","isOpen","_ref$onClose","onClose","NeetoUIModal","Header","Twilio","_useState","useState","_useState2"],"mappings":"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"}
|