@bigbinary/neeto-integrations-frontend 2.1.1 → 2.2.0-beta1

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.
@@ -0,0 +1,425 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var neetoCist = require('@bigbinary/neeto-cist');
5
+ var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
6
+ var FormikFormWrapper = require('@bigbinary/neetoui/formik/Form');
7
+ var ramda = require('ramda');
8
+ var reactI18next = require('react-i18next');
9
+ var Input = require('@bigbinary/neetoui/formik/Input');
10
+ var Select = require('@bigbinary/neetoui/formik/Select');
11
+ var jsxRuntime = require('react/jsx-runtime');
12
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
13
+ var reactQuery = require('@tanstack/react-query');
14
+ var axios = require('axios');
15
+ var i18next = require('i18next');
16
+ var yup = require('yup');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ function _interopNamespace(e) {
21
+ if (e && e.__esModule) return e;
22
+ var n = Object.create(null);
23
+ if (e) {
24
+ Object.keys(e).forEach(function (k) {
25
+ if (k !== 'default') {
26
+ var d = Object.getOwnPropertyDescriptor(e, k);
27
+ Object.defineProperty(n, k, d.get ? d : {
28
+ enumerable: true,
29
+ get: function () { return e[k]; }
30
+ });
31
+ }
32
+ });
33
+ }
34
+ n["default"] = e;
35
+ return Object.freeze(n);
36
+ }
37
+
38
+ var ActionBlock__default = /*#__PURE__*/_interopDefaultLegacy(ActionBlock);
39
+ var FormikFormWrapper__default = /*#__PURE__*/_interopDefaultLegacy(FormikFormWrapper);
40
+ var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
41
+ var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
42
+ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
43
+ var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
44
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
45
+
46
+ function _typeof(o) {
47
+ "@babel/helpers - typeof";
48
+
49
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
50
+ return typeof o;
51
+ } : function (o) {
52
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
53
+ }, _typeof(o);
54
+ }
55
+
56
+ function _toPrimitive(input, hint) {
57
+ if (_typeof(input) !== "object" || input === null) return input;
58
+ var prim = input[Symbol.toPrimitive];
59
+ if (prim !== undefined) {
60
+ var res = prim.call(input, hint || "default");
61
+ if (_typeof(res) !== "object") return res;
62
+ throw new TypeError("@@toPrimitive must return a primitive value.");
63
+ }
64
+ return (hint === "string" ? String : Number)(input);
65
+ }
66
+
67
+ function _toPropertyKey(arg) {
68
+ var key = _toPrimitive(arg, "string");
69
+ return _typeof(key) === "symbol" ? key : String(key);
70
+ }
71
+
72
+ function _defineProperty(obj, key, value) {
73
+ key = _toPropertyKey(key);
74
+ if (key in obj) {
75
+ Object.defineProperty(obj, key, {
76
+ value: value,
77
+ enumerable: true,
78
+ configurable: true,
79
+ writable: true
80
+ });
81
+ } else {
82
+ obj[key] = value;
83
+ }
84
+ return obj;
85
+ }
86
+
87
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
88
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
89
+ var ConfigurationForm = function ConfigurationForm(_ref) {
90
+ var _errors$twilioPhoneNu;
91
+ var phoneNumberOptions = _ref.phoneNumberOptions,
92
+ _ref$selectedPhoneNum = _ref.selectedPhoneNumber,
93
+ selectedPhoneNumber = _ref$selectedPhoneNum === void 0 ? null : _ref$selectedPhoneNum,
94
+ _ref$initialFocusRef = _ref.initialFocusRef,
95
+ initialFocusRef = _ref$initialFocusRef === void 0 ? null : _ref$initialFocusRef,
96
+ _ref$isUsingOverlay = _ref.isUsingOverlay,
97
+ isUsingOverlay = _ref$isUsingOverlay === void 0 ? false : _ref$isUsingOverlay,
98
+ _ref$formikProps = _ref.formikProps,
99
+ formikProps = _ref$formikProps === void 0 ? {} : _ref$formikProps;
100
+ var _useTranslation = reactI18next.useTranslation(),
101
+ t = _useTranslation.t;
102
+ var setFieldValue = formikProps.setFieldValue,
103
+ setValues = formikProps.setValues,
104
+ errors = formikProps.errors,
105
+ values = formikProps.values,
106
+ initialValues = formikProps.initialValues;
107
+ react.useEffect(function () {
108
+ selectedPhoneNumber && setFieldValue("twilioPhoneNumber", selectedPhoneNumber);
109
+ }, [selectedPhoneNumber, initialValues]);
110
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
111
+ className: "flex w-full flex-col gap-y-4",
112
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
113
+ className: "flex w-full",
114
+ children: /*#__PURE__*/jsxRuntime.jsx(Input__default["default"], {
115
+ required: true,
116
+ autoFocus: !isUsingOverlay,
117
+ "data-testid": "integrations-twilio-sid",
118
+ label: t("neetoIntegrations.twilio.sid"),
119
+ name: "twilioSid",
120
+ ref: initialFocusRef
121
+ })
122
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
123
+ className: "flex w-full",
124
+ children: /*#__PURE__*/jsxRuntime.jsx(Input__default["default"], {
125
+ required: true,
126
+ "data-testid": "integrations-twilio-auth-token",
127
+ label: t("neetoIntegrations.twilio.authToken"),
128
+ name: "twilioAuthToken"
129
+ })
130
+ }), phoneNumberOptions && /*#__PURE__*/jsxRuntime.jsx("div", {
131
+ className: "flex w-full",
132
+ children: /*#__PURE__*/jsxRuntime.jsx(Select__default["default"], {
133
+ error: (_errors$twilioPhoneNu = errors.twilioPhoneNumber) === null || _errors$twilioPhoneNu === void 0 ? void 0 : _errors$twilioPhoneNu.value,
134
+ label: t("neetoIntegrations.common.phNo"),
135
+ name: "twilioPhoneNumber",
136
+ options: phoneNumberOptions,
137
+ size: "large",
138
+ onChange: function onChange(selected) {
139
+ return setValues(_objectSpread$2(_objectSpread$2({}, values), {}, {
140
+ twilioPhoneNumber: selected
141
+ }));
142
+ }
143
+ })
144
+ })]
145
+ });
146
+ };
147
+
148
+ function _arrayWithHoles(arr) {
149
+ if (Array.isArray(arr)) return arr;
150
+ }
151
+
152
+ function _iterableToArrayLimit(r, l) {
153
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
154
+ if (null != t) {
155
+ var e,
156
+ n,
157
+ i,
158
+ u,
159
+ a = [],
160
+ f = !0,
161
+ o = !1;
162
+ try {
163
+ if (i = (t = t.call(r)).next, 0 === l) {
164
+ if (Object(t) !== t) return;
165
+ f = !1;
166
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
167
+ } catch (r) {
168
+ o = !0, n = r;
169
+ } finally {
170
+ try {
171
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
172
+ } finally {
173
+ if (o) throw n;
174
+ }
175
+ }
176
+ return a;
177
+ }
178
+ }
179
+
180
+ function _arrayLikeToArray(arr, len) {
181
+ if (len == null || len > arr.length) len = arr.length;
182
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
183
+ return arr2;
184
+ }
185
+
186
+ function _unsupportedIterableToArray(o, minLen) {
187
+ if (!o) return;
188
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
189
+ var n = Object.prototype.toString.call(o).slice(8, -1);
190
+ if (n === "Object" && o.constructor) n = o.constructor.name;
191
+ if (n === "Map" || n === "Set") return Array.from(o);
192
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
193
+ }
194
+
195
+ function _nonIterableRest() {
196
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
197
+ }
198
+
199
+ function _slicedToArray(arr, i) {
200
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
201
+ }
202
+
203
+ var INTEGRATIONS_ENGINE_BASE_URL = "/neeto_integrations";
204
+ var TWILIO_CONFIGURATION_BASE_URL = "".concat(INTEGRATIONS_ENGINE_BASE_URL, "/twilio/sms_configurations");
205
+
206
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
207
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
208
+ var fetchTwilioSmsConfiguration = function fetchTwilioSmsConfiguration(integrable) {
209
+ return axios__default["default"].get(TWILIO_CONFIGURATION_BASE_URL, {
210
+ params: integrable
211
+ });
212
+ };
213
+ var removeTwilioConfiguration = function removeTwilioConfiguration() {
214
+ return axios__default["default"]["delete"](TWILIO_CONFIGURATION_BASE_URL);
215
+ };
216
+ var getTwilioPhoneNumbers = function getTwilioPhoneNumbers(data) {
217
+ return axios__default["default"].get("".concat(TWILIO_CONFIGURATION_BASE_URL, "/new"), {
218
+ params: data
219
+ });
220
+ };
221
+ var createTwilioConfiguration = function createTwilioConfiguration(payload, integrable) {
222
+ return axios__default["default"].post(TWILIO_CONFIGURATION_BASE_URL, _objectSpread$1(_objectSpread$1({}, payload), integrable));
223
+ };
224
+ var twilioApi = {
225
+ fetchTwilioSmsConfiguration: fetchTwilioSmsConfiguration,
226
+ removeTwilioConfiguration: removeTwilioConfiguration,
227
+ getTwilioPhoneNumbers: getTwilioPhoneNumbers,
228
+ createTwilioConfiguration: createTwilioConfiguration
229
+ };
230
+
231
+ var QUERY_KEYS = {
232
+ TWILIO_SMS_CONFIGURATION: "twilio-sms-configuration",
233
+ TWILIO_PHONE_NUMBERS: "twilio-phone-numbers",
234
+ DAILY_CO_DETAILS: "daily-co-details",
235
+ ZOOM_DETAILS: "zoom-details"
236
+ };
237
+
238
+ var useFetchTwilioSmsConfiguration = function useFetchTwilioSmsConfiguration(_ref) {
239
+ var integrable = _ref.integrable;
240
+ return reactQuery.useQuery({
241
+ queryKey: [QUERY_KEYS.TWILIO_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId],
242
+ queryFn: function queryFn() {
243
+ return twilioApi.fetchTwilioSmsConfiguration(integrable);
244
+ },
245
+ select: function select(response) {
246
+ var _smsConfiguration$twi, _smsConfiguration$twi2, _smsConfiguration$twi3;
247
+ var smsConfiguration = response.smsConfiguration;
248
+ return {
249
+ twilioSid: (_smsConfiguration$twi = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioSid) !== null && _smsConfiguration$twi !== void 0 ? _smsConfiguration$twi : "",
250
+ twilioAuthToken: (_smsConfiguration$twi2 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioAuthToken) !== null && _smsConfiguration$twi2 !== void 0 ? _smsConfiguration$twi2 : "",
251
+ twilioPhoneNumber: (_smsConfiguration$twi3 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioPhoneNumber) !== null && _smsConfiguration$twi3 !== void 0 ? _smsConfiguration$twi3 : ""
252
+ };
253
+ }
254
+ });
255
+ };
256
+ var useFetchTwilioPhoneNumbers = function useFetchTwilioPhoneNumbers(_ref2) {
257
+ var _formRef$current, _formRef$current2;
258
+ var credentials = _ref2.credentials,
259
+ formRef = _ref2.formRef;
260
+ return reactQuery.useQuery({
261
+ queryKey: [QUERY_KEYS.TWILIO_PHONE_NUMBERS, {
262
+ credentials: credentials
263
+ }],
264
+ queryFn: function queryFn() {
265
+ return twilioApi.getTwilioPhoneNumbers(neetoCist.keysToSnakeCase(credentials));
266
+ },
267
+ enabled: !!(credentials !== null && credentials !== void 0 && credentials.twilio_sid) || !!(credentials !== null && credentials !== void 0 && credentials.twilioSid) || !!(formRef !== null && formRef !== void 0 && (_formRef$current = formRef.current) !== null && _formRef$current !== void 0 && (_formRef$current = _formRef$current.values) !== null && _formRef$current !== void 0 && _formRef$current.twilioSid) || !!(formRef !== null && formRef !== void 0 && (_formRef$current2 = formRef.current) !== null && _formRef$current2 !== void 0 && (_formRef$current2 = _formRef$current2.values) !== null && _formRef$current2 !== void 0 && _formRef$current2.twilioAuthToken),
268
+ select: ramda.prop("phoneNumbers"),
269
+ retry: false
270
+ });
271
+ };
272
+ var useCreateTwilioConfiguration = function useCreateTwilioConfiguration(_ref3) {
273
+ var integrable = _ref3.integrable;
274
+ return reactUtils.useMutationWithInvalidation(function (payload) {
275
+ return twilioApi.createTwilioConfiguration(payload, integrable);
276
+ }, {
277
+ keysToInvalidate: [QUERY_KEYS.TWILIO_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId]
278
+ });
279
+ };
280
+
281
+ var useTwilio = function useTwilio(_ref) {
282
+ var _ref$onConnect = _ref.onConnect,
283
+ onConnect = _ref$onConnect === void 0 ? neetoCist.noop : _ref$onConnect,
284
+ _ref$formRef = _ref.formRef,
285
+ formRef = _ref$formRef === void 0 ? null : _ref$formRef,
286
+ _ref$integrable = _ref.integrable,
287
+ integrable = _ref$integrable === void 0 ? null : _ref$integrable;
288
+ var _useFetchTwilioSmsCon = useFetchTwilioSmsConfiguration({
289
+ integrable: integrable
290
+ }),
291
+ _useFetchTwilioSmsCon2 = _useFetchTwilioSmsCon.data,
292
+ configuration = _useFetchTwilioSmsCon2 === void 0 ? {} : _useFetchTwilioSmsCon2,
293
+ isConfigurationLoading = _useFetchTwilioSmsCon.isLoading;
294
+ var _useStateWithDependen = reactUtils.useStateWithDependency(configuration),
295
+ _useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
296
+ credentials = _useStateWithDependen2[0],
297
+ setCredentials = _useStateWithDependen2[1];
298
+ var _useFetchTwilioPhoneN = useFetchTwilioPhoneNumbers({
299
+ credentials: credentials,
300
+ formRef: formRef
301
+ }),
302
+ phoneNumbers = _useFetchTwilioPhoneN.data,
303
+ isPhoneNumbersLoading = _useFetchTwilioPhoneN.isLoading;
304
+ var _useCreateTwilioConfi = useCreateTwilioConfiguration({
305
+ integrable: integrable
306
+ }),
307
+ saveConfiguration = _useCreateTwilioConfi.mutate,
308
+ isSubmitting = _useCreateTwilioConfi.isPending;
309
+ var handleSubmit = function handleSubmit(values) {
310
+ var _values$twilioPhoneNu;
311
+ var payload = {
312
+ twilio_sid: values.twilioSid,
313
+ twilio_auth_token: values.twilioAuthToken,
314
+ twilio_phone_number_sid: (_values$twilioPhoneNu = values.twilioPhoneNumber) === null || _values$twilioPhoneNu === void 0 ? void 0 : _values$twilioPhoneNu.value
315
+ };
316
+ if (!phoneNumbers && !(configuration !== null && configuration !== void 0 && configuration.twilioPhoneNumber)) {
317
+ setCredentials(payload);
318
+ return;
319
+ }
320
+ saveConfiguration(payload, {
321
+ onSuccess: onConnect
322
+ });
323
+ };
324
+ return {
325
+ handleSubmit: handleSubmit,
326
+ phoneNumbers: phoneNumbers,
327
+ isConfigurationLoading: isConfigurationLoading,
328
+ isPhoneNumbersLoading: isPhoneNumbersLoading,
329
+ isSubmitting: isSubmitting,
330
+ configuration: configuration
331
+ };
332
+ };
333
+
334
+ var buildTwilioConfigurationValidationSchema = function buildTwilioConfigurationValidationSchema(isTwilioPhoneRequired) {
335
+ return yup__namespace.object().shape({
336
+ twilioSid: yup__namespace.string().required(i18next__default["default"].t("neetoIntegrations.twilio.validations.sidReq")),
337
+ twilioAuthToken: yup__namespace.string().required(i18next__default["default"].t("neetoIntegrations.twilio.validations.authTokenReq")),
338
+ twilioPhoneNumber: isTwilioPhoneRequired ? yup__namespace.object().shape({
339
+ label: yup__namespace.string(),
340
+ value: yup__namespace.string().required(i18next__default["default"].t("neetoIntegrations.twilio.validations.phNumReq"))
341
+ }) : null
342
+ });
343
+ };
344
+ var buildPhoneNumberOptions = function buildPhoneNumberOptions(phoneNumbers) {
345
+ return phoneNumbers === null || phoneNumbers === void 0 ? void 0 : phoneNumbers.map(function (_ref) {
346
+ var phoneNumber = _ref.phoneNumber,
347
+ sid = _ref.sid;
348
+ return {
349
+ label: phoneNumber,
350
+ value: sid
351
+ };
352
+ });
353
+ };
354
+
355
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
356
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
357
+ var Twilio = function Twilio(_ref) {
358
+ var _ref$integrable = _ref.integrable,
359
+ integrable = _ref$integrable === void 0 ? null : _ref$integrable,
360
+ _ref$onClose = _ref.onClose,
361
+ onClose = _ref$onClose === void 0 ? neetoCist.noop : _ref$onClose,
362
+ _ref$onConnect = _ref.onConnect,
363
+ onConnect = _ref$onConnect === void 0 ? neetoCist.noop : _ref$onConnect;
364
+ var _useTranslation = reactI18next.useTranslation(),
365
+ t = _useTranslation.t;
366
+ var initialFocusRef = react.useRef();
367
+ var formRef = react.useRef();
368
+ var _useTwilio = useTwilio({
369
+ onConnect: onConnect,
370
+ formRef: formRef,
371
+ integrable: integrable
372
+ }),
373
+ handleSubmit = _useTwilio.handleSubmit,
374
+ phoneNumbers = _useTwilio.phoneNumbers,
375
+ isConfigurationLoading = _useTwilio.isConfigurationLoading,
376
+ isPhoneNumbersLoading = _useTwilio.isPhoneNumbersLoading,
377
+ isSubmitting = _useTwilio.isSubmitting,
378
+ configuration = _useTwilio.configuration;
379
+ var phoneNumberOptions = buildPhoneNumberOptions(phoneNumbers);
380
+ var selectedPhoneNumber = neetoCist._findBy({
381
+ label: configuration === null || configuration === void 0 ? void 0 : configuration.twilioPhoneNumber
382
+ }, phoneNumberOptions);
383
+ var isLoading = isPhoneNumbersLoading || isConfigurationLoading;
384
+ var isSubmitDisabled = function isSubmitDisabled(values) {
385
+ return ramda.equals(_objectSpread(_objectSpread({}, configuration), {}, {
386
+ twilioPhoneNumber: selectedPhoneNumber
387
+ }), values) || isLoading;
388
+ };
389
+ return /*#__PURE__*/jsxRuntime.jsx(FormikFormWrapper__default["default"], {
390
+ className: "mx-auto flex w-full max-w-md flex-col p-5",
391
+ formikProps: {
392
+ enableReinitialize: true,
393
+ validationSchema: buildTwilioConfigurationValidationSchema(!!phoneNumbers),
394
+ initialValues: configuration,
395
+ innerRef: formRef,
396
+ onSubmit: handleSubmit
397
+ },
398
+ children: function children(formikProps) {
399
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
400
+ children: [/*#__PURE__*/jsxRuntime.jsx(ConfigurationForm, {
401
+ formikProps: formikProps,
402
+ initialFocusRef: initialFocusRef,
403
+ phoneNumberOptions: phoneNumberOptions,
404
+ selectedPhoneNumber: selectedPhoneNumber
405
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
406
+ className: "mt-8",
407
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
408
+ isSubmitting: isSubmitting,
409
+ cancelButtonProps: {
410
+ onClick: onClose
411
+ },
412
+ submitButtonProps: {
413
+ label: phoneNumberOptions ? t("neetoIntegrations.common.saveChanges") : t("neetoIntegrations.common.verify"),
414
+ disabled: isSubmitDisabled(formikProps.values) || isSubmitting,
415
+ loading: isSubmitting || isPhoneNumbersLoading && !(configuration !== null && configuration !== void 0 && configuration.twilioAuthToken)
416
+ }
417
+ })
418
+ })]
419
+ });
420
+ }
421
+ });
422
+ };
423
+
424
+ module.exports = Twilio;
425
+ //# sourceMappingURL=Twilio.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Twilio.cjs.js","sources":["../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","../app/javascript/src/components/Integrations/Twilio/Form.jsx","../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","../app/javascript/src/constants/urls.js","../app/javascript/src/apis/twilio.js","../app/javascript/src/constants/query.js","../app/javascript/src/hooks/reactQuery/useTwilioApi.js","../app/javascript/src/components/Integrations/Twilio/hooks/useTwilio.js","../app/javascript/src/components/Integrations/Twilio/utils.js","../app/javascript/src/components/Integrations/Twilio/index.jsx"],"sourcesContent":["export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\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-y-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","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\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}","export const INTEGRATIONS_ENGINE_BASE_URL = \"/neeto_integrations\";\nexport const TWILIO_CONFIGURATION_BASE_URL = `${INTEGRATIONS_ENGINE_BASE_URL}/twilio/sms_configurations`;\nexport const INTEGRATIONS_ENGINE_DAILY_URL = `${INTEGRATIONS_ENGINE_BASE_URL}/daily`;\nexport const INTEGRATIONS_ENGINE_ZOOM_URL = `${INTEGRATIONS_ENGINE_BASE_URL}/zoom`;\nexport const INTEGRATION_DETAILS_URL = `${INTEGRATIONS_ENGINE_BASE_URL}/status`;\n","import axios from \"axios\";\n\nimport { TWILIO_CONFIGURATION_BASE_URL } from \"src/constants/urls\";\n\nconst fetchTwilioSmsConfiguration = integrable =>\n axios.get(TWILIO_CONFIGURATION_BASE_URL, { params: integrable });\n\nconst removeTwilioConfiguration = () =>\n axios.delete(TWILIO_CONFIGURATION_BASE_URL);\n\nconst getTwilioPhoneNumbers = data =>\n axios.get(`${TWILIO_CONFIGURATION_BASE_URL}/new`, {\n params: data,\n });\n\nconst createTwilioConfiguration = (payload, integrable) =>\n axios.post(TWILIO_CONFIGURATION_BASE_URL, { ...payload, ...integrable });\n\nconst twilioApi = {\n fetchTwilioSmsConfiguration,\n removeTwilioConfiguration,\n getTwilioPhoneNumbers,\n createTwilioConfiguration,\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 DAILY_CO_DETAILS: \"daily-co-details\",\n ZOOM_DETAILS: \"zoom-details\",\n};\n","import { useQuery } from \"@tanstack/react-query\";\nimport { keysToSnakeCase } from \"neetocist\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\nimport { prop } from \"ramda\";\n\nimport twilioApi from \"apis/twilio\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst useFetchTwilioSmsConfiguration = ({ integrable }) =>\n useQuery({\n queryKey: [\n QUERY_KEYS.TWILIO_SMS_CONFIGURATION,\n integrable?.integrableType,\n integrable?.integrableId,\n ],\n queryFn: () => twilioApi.fetchTwilioSmsConfiguration(integrable),\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\nconst useFetchTwilioPhoneNumbers = ({ credentials, formRef }) =>\n useQuery({\n queryKey: [QUERY_KEYS.TWILIO_PHONE_NUMBERS, { credentials }],\n queryFn: () =>\n twilioApi.getTwilioPhoneNumbers(keysToSnakeCase(credentials)),\n enabled:\n !!credentials?.twilio_sid ||\n !!credentials?.twilioSid ||\n !!formRef?.current?.values?.twilioSid ||\n !!formRef?.current?.values?.twilioAuthToken,\n select: prop(\"phoneNumbers\"),\n retry: false,\n });\n\nconst useCreateTwilioConfiguration = ({ integrable }) =>\n useMutationWithInvalidation(\n payload => twilioApi.createTwilioConfiguration(payload, integrable),\n {\n keysToInvalidate: [\n QUERY_KEYS.TWILIO_SMS_CONFIGURATION,\n integrable?.integrableType,\n integrable?.integrableId,\n ],\n }\n );\n\nexport {\n useCreateTwilioConfiguration,\n useFetchTwilioPhoneNumbers,\n useFetchTwilioSmsConfiguration,\n};\n","import { noop } from \"neetocist\";\nimport { useStateWithDependency } from \"neetocommons/react-utils\";\n\nimport {\n useFetchTwilioPhoneNumbers,\n useCreateTwilioConfiguration,\n useFetchTwilioSmsConfiguration,\n} from \"hooks/reactQuery/useTwilioApi\";\n\nconst useTwilio = ({ onConnect = noop, formRef = null, integrable = null }) => {\n const { data: configuration = {}, isLoading: isConfigurationLoading } =\n useFetchTwilioSmsConfiguration({ integrable });\n const [credentials, setCredentials] = useStateWithDependency(configuration);\n const { data: phoneNumbers, isLoading: isPhoneNumbersLoading } =\n useFetchTwilioPhoneNumbers({ credentials, formRef });\n\n const { mutate: saveConfiguration, isPending: isSubmitting } =\n useCreateTwilioConfiguration({ integrable });\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, { onSuccess: onConnect });\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\nexport const buildPhoneNumberOptions = phoneNumbers =>\n phoneNumbers?.map(({ phoneNumber, sid }) => ({\n label: phoneNumber,\n value: sid,\n }));\n","import React, { useRef } from \"react\";\n\nimport { noop, _findBy } from \"neetocist\";\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 {\n buildPhoneNumberOptions,\n buildTwilioConfigurationValidationSchema,\n} from \"./utils\";\n\nconst Twilio = ({ integrable = null, onClose = noop, onConnect = noop }) => {\n const { t } = useTranslation();\n const initialFocusRef = useRef();\n const formRef = useRef();\n\n const {\n handleSubmit,\n phoneNumbers,\n isConfigurationLoading,\n isPhoneNumbersLoading,\n isSubmitting,\n configuration,\n } = useTwilio({ onConnect, formRef, integrable });\n\n const phoneNumberOptions = buildPhoneNumberOptions(phoneNumbers);\n\n const selectedPhoneNumber = _findBy(\n { label: configuration?.twilioPhoneNumber },\n phoneNumberOptions\n );\n\n const isLoading = isPhoneNumbersLoading || isConfigurationLoading;\n\n const isSubmitDisabled = values =>\n equals(\n { ...configuration, twilioPhoneNumber: selectedPhoneNumber },\n values\n ) || isLoading;\n\n return (\n <FormikFormWrapper\n className=\"mx-auto flex w-full max-w-md flex-col p-5\"\n formikProps={{\n enableReinitialize: true,\n validationSchema: buildTwilioConfigurationValidationSchema(\n !!phoneNumbers\n ),\n initialValues: configuration,\n innerRef: formRef,\n onSubmit: handleSubmit,\n }}\n >\n {formikProps => (\n <>\n <Form\n {...{\n formikProps,\n initialFocusRef,\n phoneNumberOptions,\n selectedPhoneNumber,\n }}\n />\n <div className=\"mt-8\">\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{ onClick: onClose }}\n submitButtonProps={{\n label: phoneNumberOptions\n ? t(\"neetoIntegrations.common.saveChanges\")\n : t(\"neetoIntegrations.common.verify\"),\n disabled: isSubmitDisabled(formikProps.values) || isSubmitting,\n loading:\n isSubmitting ||\n (isPhoneNumbersLoading && !configuration?.twilioAuthToken),\n }}\n />\n </div>\n </>\n )}\n </FormikFormWrapper>\n );\n};\n\nexport default Twilio;\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_toPrimitive","input","hint","prim","toPrimitive","undefined","res","call","TypeError","String","Number","_toPropertyKey","arg","key","_defineProperty","obj","value","toPropertyKey","Object","defineProperty","enumerable","configurable","writable","ConfigurationForm","_ref","_errors$twilioPhoneNu","phoneNumberOptions","_ref$selectedPhoneNum","selectedPhoneNumber","_ref$initialFocusRef","initialFocusRef","_ref$isUsingOverlay","isUsingOverlay","_ref$formikProps","formikProps","_useTranslation","useTranslation","t","setFieldValue","setValues","errors","values","initialValues","useEffect","_jsxs","className","children","_jsx","Input","required","autoFocus","label","name","ref","Select","error","twilioPhoneNumber","options","size","onChange","selected","_objectSpread","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","r","l","e","n","i","u","a","f","next","done","push","length","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","arrayLikeToArray","toString","slice","from","test","_nonIterableRest","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","INTEGRATIONS_ENGINE_BASE_URL","TWILIO_CONFIGURATION_BASE_URL","concat","fetchTwilioSmsConfiguration","integrable","axios","get","params","removeTwilioConfiguration","getTwilioPhoneNumbers","data","createTwilioConfiguration","payload","post","twilioApi","QUERY_KEYS","TWILIO_SMS_CONFIGURATION","TWILIO_PHONE_NUMBERS","DAILY_CO_DETAILS","ZOOM_DETAILS","useFetchTwilioSmsConfiguration","useQuery","queryKey","integrableType","integrableId","queryFn","select","response","_smsConfiguration$twi","_smsConfiguration$twi2","_smsConfiguration$twi3","smsConfiguration","twilioSid","twilioAuthToken","useFetchTwilioPhoneNumbers","_ref2","_formRef$current","_formRef$current2","credentials","formRef","keysToSnakeCase","enabled","twilio_sid","current","prop","retry","useCreateTwilioConfiguration","_ref3","useMutationWithInvalidation","keysToInvalidate","useTwilio","_ref$onConnect","onConnect","noop","_ref$formRef","_ref$integrable","_useFetchTwilioSmsCon","_useFetchTwilioSmsCon2","configuration","isConfigurationLoading","isLoading","_useStateWithDependen","useStateWithDependency","_useStateWithDependen2","setCredentials","_useFetchTwilioPhoneN","phoneNumbers","isPhoneNumbersLoading","_useCreateTwilioConfi","saveConfiguration","mutate","isSubmitting","isPending","handleSubmit","_values$twilioPhoneNu","twilio_auth_token","twilio_phone_number_sid","onSuccess","buildTwilioConfigurationValidationSchema","isTwilioPhoneRequired","yup","object","shape","string","i18next","buildPhoneNumberOptions","map","phoneNumber","sid","Twilio","_ref$onClose","onClose","useRef","_useTwilio","_findBy","isSubmitDisabled","equals","FormikFormWrapper","enableReinitialize","validationSchema","innerRef","onSubmit","_Fragment","Form","ActionBlock","cancelButtonProps","onClick","submitButtonProps","disabled","loading"],"mappings":"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"}