@bigbinary/neeto-integrations-frontend 4.0.24 → 4.0.25
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/.ready +1 -1
- package/dist/Form-Bm37EVs6.js +189 -0
- package/dist/Form-Bm37EVs6.js.map +1 -0
- package/dist/Form-DbbEVp56.js +166 -0
- package/dist/Form-DbbEVp56.js.map +1 -0
- package/dist/cjs/v2/Connect.js +86 -0
- package/dist/cjs/v2/Connect.js.map +1 -0
- package/dist/cjs/v2/Daily.js +144 -0
- package/dist/cjs/v2/Daily.js.map +1 -0
- package/dist/cjs/v2/DailyForm.js +29 -0
- package/dist/cjs/v2/DailyForm.js.map +1 -0
- package/dist/cjs/v2/Demo.js +76 -0
- package/dist/cjs/v2/Demo.js.map +1 -0
- package/dist/cjs/v2/DisconnectAlert.js +40 -0
- package/dist/cjs/v2/DisconnectAlert.js.map +1 -0
- package/dist/cjs/v2/DisconnectedIntegrationsRibbon.js +109 -0
- package/dist/cjs/v2/DisconnectedIntegrationsRibbon.js.map +1 -0
- package/dist/cjs/v2/Finish.js +96 -0
- package/dist/cjs/v2/Finish.js.map +1 -0
- package/dist/cjs/v2/GoogleCalendar.js +112 -0
- package/dist/cjs/v2/GoogleCalendar.js.map +1 -0
- package/dist/cjs/v2/Manage.js +170 -0
- package/dist/cjs/v2/Manage.js.map +1 -0
- package/dist/cjs/v2/Modal.js +87 -0
- package/dist/cjs/v2/Modal.js.map +1 -0
- package/dist/cjs/v2/Telnyx.js +237 -0
- package/dist/cjs/v2/Telnyx.js.map +1 -0
- package/dist/cjs/v2/Twilio.js +309 -0
- package/dist/cjs/v2/Twilio.js.map +1 -0
- package/dist/cjs/v2/WalkthroughModal.js +51 -0
- package/dist/cjs/v2/WalkthroughModal.js.map +1 -0
- package/dist/cjs/v2/ZapierForm.js +316 -0
- package/dist/cjs/v2/ZapierForm.js.map +1 -0
- package/dist/cjs/v2/Zoom.js +125 -0
- package/dist/cjs/v2/Zoom.js.map +1 -0
- package/dist/query-BADHOzBP.js +21 -0
- package/dist/query-BADHOzBP.js.map +1 -0
- package/dist/query-BijkeV_r.js +31 -0
- package/dist/query-BijkeV_r.js.map +1 -0
- package/dist/v2/Connect.js +84 -0
- package/dist/v2/Connect.js.map +1 -0
- package/dist/v2/Daily.js +142 -0
- package/dist/v2/Daily.js.map +1 -0
- package/dist/v2/DailyForm.js +23 -0
- package/dist/v2/DailyForm.js.map +1 -0
- package/dist/v2/Demo.js +74 -0
- package/dist/v2/Demo.js.map +1 -0
- package/dist/v2/DisconnectAlert.js +38 -0
- package/dist/v2/DisconnectAlert.js.map +1 -0
- package/dist/v2/DisconnectedIntegrationsRibbon.js +107 -0
- package/dist/v2/DisconnectedIntegrationsRibbon.js.map +1 -0
- package/dist/v2/Finish.js +75 -0
- package/dist/v2/Finish.js.map +1 -0
- package/dist/v2/GoogleCalendar.js +110 -0
- package/dist/v2/GoogleCalendar.js.map +1 -0
- package/dist/v2/Manage.js +168 -0
- package/dist/v2/Manage.js.map +1 -0
- package/dist/v2/Modal.js +85 -0
- package/dist/v2/Modal.js.map +1 -0
- package/dist/v2/Telnyx.js +216 -0
- package/dist/v2/Telnyx.js.map +1 -0
- package/dist/v2/Twilio.js +288 -0
- package/dist/v2/Twilio.js.map +1 -0
- package/dist/v2/WalkthroughModal.js +49 -0
- package/dist/v2/WalkthroughModal.js.map +1 -0
- package/dist/v2/ZapierForm.js +295 -0
- package/dist/v2/ZapierForm.js.map +1 -0
- package/dist/v2/Zoom.js +123 -0
- package/dist/v2/Zoom.js.map +1 -0
- package/package.json +19 -9
- package/typeTemplates-v2/index.d.ts +180 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../app/javascript/src/components/v2/Modal/Stepper.jsx","../../app/javascript/src/components/v2/Modal/index.jsx"],"sourcesContent":["import { Typography } from \"@bigbinary/neeto-atoms\";\nimport classnames from \"classnames\";\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 \"border-foreground\": isActiveOrCompleted(isActive, isCompleted),\n \"border-border\": !isActiveOrCompleted(isActive, isCompleted),\n })}\n />\n )}\n <div className=\"flex items-center gap-2\">\n <div\n className={classnames(\n \"neeto-ui-rounded-full flex h-6 w-6 items-center justify-center border\",\n {\n \"bg-green-600 border-green-600 neeto-ui-text-white\": isActive,\n \"bg-primary border-primary neeto-ui-text-white\": isCompleted,\n \"border-border text-muted-foreground\": !isActiveOrCompleted(\n isActive,\n isCompleted\n ),\n }\n )}\n >\n <Typography asChild variant=\"body2\" weight=\"normal\">\n <span>{step}</span>\n </Typography>\n </div>\n <Typography\n variant=\"body2\"\n weight=\"normal\"\n className={classnames({\n \"text-foreground\": isActiveOrCompleted(isActive, isCompleted),\n \"text-muted-foreground\": !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 { Dialog } from \"@bigbinary/neeto-atoms\";\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport Stepper from \"./Stepper\";\n\nconst Modal = ({ isOpen = noop, onClose = noop, steps = {}, children }) => (\n <Dialog\n {...{ isOpen, onClose }}\n className=\"flex flex-col transform-none w-screen overflow-y-auto\"\n size=\"fullScreen\"\n >\n <Dialog.Header>\n <Stepper {...{ steps }} />\n </Dialog.Header>\n <Dialog.Body className=\"flex justify-center grow\">\n <div className=\"w-full py-10\">{children}</div>\n </Dialog.Body>\n </Dialog>\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"],"names":["Stepper","_ref","_ref$steps","steps","isActiveOrCompleted","activeStatus","completedStatus","_jsx","className","children","map","_ref2","step","label","isActive","isCompleted","_jsxs","classnames","Typography","asChild","variant","weight","Modal","_ref$isOpen","isOpen","noop","_ref$onClose","onClose","Dialog","size","Header","Body"],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { useState, useRef } from 'react';
|
|
2
|
+
import { Form, Input, Select, ActionBlock } from '@bigbinary/neeto-atoms/formik';
|
|
3
|
+
import { findBy, isNotEmpty, noop } from '@bigbinary/neeto-cist';
|
|
4
|
+
import CardLayout from '@bigbinary/neeto-molecules/v2/CardLayout';
|
|
5
|
+
import PageLoader from '@bigbinary/neeto-molecules/v2/PageLoader';
|
|
6
|
+
import { useTranslation } from 'react-i18next';
|
|
7
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
8
|
+
import { prop, isEmpty } from 'ramda';
|
|
9
|
+
import { useQuery, useMutation } from '@tanstack/react-query';
|
|
10
|
+
import { useMutationWithInvalidation } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
11
|
+
import axios from 'axios';
|
|
12
|
+
import { a as TELNYX_SMS_CONFIGURATION_URL, b as TELNYX_PHONE_NUMBERS_URL, Q as QUERY_KEYS } from '../query-BADHOzBP.js';
|
|
13
|
+
import { t } from 'i18next';
|
|
14
|
+
import * as yup from 'yup';
|
|
15
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
16
|
+
|
|
17
|
+
// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis
|
|
18
|
+
var fetchTelnyxSmsConfiguration = function fetchTelnyxSmsConfiguration(integrable) {
|
|
19
|
+
return axios.get(TELNYX_SMS_CONFIGURATION_URL, {
|
|
20
|
+
params: integrable
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var fetchTelnyxPhoneNumbers = function fetchTelnyxPhoneNumbers(_ref) {
|
|
24
|
+
var apiKey = _ref.apiKey,
|
|
25
|
+
messagingProfileId = _ref.messagingProfileId;
|
|
26
|
+
return axios.get(TELNYX_PHONE_NUMBERS_URL, {
|
|
27
|
+
params: {
|
|
28
|
+
telnyx: {
|
|
29
|
+
apiKey: apiKey,
|
|
30
|
+
messagingProfileId: messagingProfileId
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
var createTelnyxSmsConfiguration = function createTelnyxSmsConfiguration(payload) {
|
|
36
|
+
return axios.post(TELNYX_SMS_CONFIGURATION_URL, {
|
|
37
|
+
telnyx: payload
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
var telnyxApi = {
|
|
41
|
+
fetchTelnyxPhoneNumbers: fetchTelnyxPhoneNumbers,
|
|
42
|
+
fetchTelnyxSmsConfiguration: fetchTelnyxSmsConfiguration,
|
|
43
|
+
createTelnyxSmsConfiguration: createTelnyxSmsConfiguration
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var useFetchTelnyxSmsConfiguration = function useFetchTelnyxSmsConfiguration(_ref) {
|
|
47
|
+
var integrable = _ref.integrable;
|
|
48
|
+
return useQuery({
|
|
49
|
+
queryKey: [QUERY_KEYS.TELNYX_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId],
|
|
50
|
+
queryFn: function queryFn() {
|
|
51
|
+
return telnyxApi.fetchTelnyxSmsConfiguration(integrable);
|
|
52
|
+
},
|
|
53
|
+
select: prop("smsConfiguration")
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
var useFetchTelnyxPhoneNumbers = function useFetchTelnyxPhoneNumbers() {
|
|
57
|
+
return useMutation({
|
|
58
|
+
mutationFn: telnyxApi.fetchTelnyxPhoneNumbers
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
var useCreateTelnyxSmsConfiguration = function useCreateTelnyxSmsConfiguration(_ref2) {
|
|
62
|
+
var integrable = _ref2.integrable;
|
|
63
|
+
return useMutationWithInvalidation(telnyxApi.createTelnyxSmsConfiguration, {
|
|
64
|
+
keysToInvalidate: [[QUERY_KEYS.TELNYX_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId]]
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
var buildPhoneNumberOptions = function buildPhoneNumberOptions(phoneNumbers) {
|
|
69
|
+
return phoneNumbers ? phoneNumbers.map(function (_ref) {
|
|
70
|
+
var id = _ref.id,
|
|
71
|
+
phoneNumber = _ref.phoneNumber;
|
|
72
|
+
return {
|
|
73
|
+
value: id,
|
|
74
|
+
label: phoneNumber
|
|
75
|
+
};
|
|
76
|
+
}) : [];
|
|
77
|
+
};
|
|
78
|
+
var buildTelnyxConfigurationValidationSchema = function buildTelnyxConfigurationValidationSchema(isPhoneNumberRequired) {
|
|
79
|
+
return yup.object().shape({
|
|
80
|
+
apiKey: yup.string().required(t("neetoIntegrations.telnyx.validations.apiKeyRequired")),
|
|
81
|
+
messagingProfileId: yup.string().required(t("neetoIntegrations.telnyx.validations.messagingProfileIdRequired")),
|
|
82
|
+
phoneNumber: isPhoneNumberRequired ? yup.object().shape({
|
|
83
|
+
label: yup.string(),
|
|
84
|
+
value: yup.string()
|
|
85
|
+
}).nullable().required(t("neetoIntegrations.telnyx.validations.phoneNumberRequired")) : yup.mixed().nullable()
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
var useTelnyxForm = function useTelnyxForm(_ref) {
|
|
90
|
+
var integrable = _ref.integrable,
|
|
91
|
+
onConnect = _ref.onConnect;
|
|
92
|
+
var _useState = useState([]),
|
|
93
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
94
|
+
phoneNumbers = _useState2[0],
|
|
95
|
+
setPhoneNumbers = _useState2[1];
|
|
96
|
+
var _useFetchTelnyxSmsCon = useFetchTelnyxSmsConfiguration({
|
|
97
|
+
integrable: integrable
|
|
98
|
+
}),
|
|
99
|
+
configuration = _useFetchTelnyxSmsCon.data,
|
|
100
|
+
isLoading = _useFetchTelnyxSmsCon.isLoading;
|
|
101
|
+
var _useFetchTelnyxPhoneN = useFetchTelnyxPhoneNumbers(),
|
|
102
|
+
fetchTelnyxPhoneNumbers = _useFetchTelnyxPhoneN.mutate,
|
|
103
|
+
isFetchPhoneNumbersLoading = _useFetchTelnyxPhoneN.isPending;
|
|
104
|
+
var _useCreateTelnyxSmsCo = useCreateTelnyxSmsConfiguration({
|
|
105
|
+
integrable: integrable
|
|
106
|
+
}),
|
|
107
|
+
createTelnyxSmsConfiguration = _useCreateTelnyxSmsCo.mutate,
|
|
108
|
+
isCreateSmsConfigurationLoading = _useCreateTelnyxSmsCo.isPending;
|
|
109
|
+
var handleSubmit = function handleSubmit(values) {
|
|
110
|
+
if (isEmpty(phoneNumbers)) {
|
|
111
|
+
var params = {
|
|
112
|
+
apiKey: values.apiKey,
|
|
113
|
+
messagingProfileId: values.messagingProfileId
|
|
114
|
+
};
|
|
115
|
+
fetchTelnyxPhoneNumbers(params, {
|
|
116
|
+
onSuccess: function onSuccess(_ref2) {
|
|
117
|
+
var phoneNumbers = _ref2.phoneNumbers;
|
|
118
|
+
return setPhoneNumbers(phoneNumbers);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
var payload = {
|
|
124
|
+
apiKey: values.apiKey,
|
|
125
|
+
messagingProfileId: values.messagingProfileId,
|
|
126
|
+
phoneNumberId: values.phoneNumber.value
|
|
127
|
+
};
|
|
128
|
+
createTelnyxSmsConfiguration(payload, {
|
|
129
|
+
onSuccess: onConnect
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
var isSubmitting = isFetchPhoneNumbersLoading || isCreateSmsConfigurationLoading;
|
|
133
|
+
var phoneNumberOptions = buildPhoneNumberOptions(phoneNumbers);
|
|
134
|
+
var initialValues = {
|
|
135
|
+
apiKey: (configuration === null || configuration === void 0 ? void 0 : configuration.apiKey) || "",
|
|
136
|
+
messagingProfileId: (configuration === null || configuration === void 0 ? void 0 : configuration.messagingProfileId) || "",
|
|
137
|
+
phoneNumber: findBy({
|
|
138
|
+
label: configuration === null || configuration === void 0 ? void 0 : configuration.phoneNumber
|
|
139
|
+
}, phoneNumberOptions) || null
|
|
140
|
+
};
|
|
141
|
+
return {
|
|
142
|
+
initialValues: initialValues,
|
|
143
|
+
phoneNumberOptions: phoneNumberOptions,
|
|
144
|
+
isSubmitting: isSubmitting,
|
|
145
|
+
isLoading: isLoading,
|
|
146
|
+
handleSubmit: handleSubmit
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
var Telnyx = function Telnyx(_ref) {
|
|
151
|
+
var _ref$integrable = _ref.integrable,
|
|
152
|
+
integrable = _ref$integrable === void 0 ? null : _ref$integrable,
|
|
153
|
+
_ref$onClose = _ref.onClose,
|
|
154
|
+
onClose = _ref$onClose === void 0 ? noop : _ref$onClose,
|
|
155
|
+
_ref$onConnect = _ref.onConnect,
|
|
156
|
+
onConnect = _ref$onConnect === void 0 ? noop : _ref$onConnect;
|
|
157
|
+
var formRef = useRef(null);
|
|
158
|
+
var _useTranslation = useTranslation(),
|
|
159
|
+
t = _useTranslation.t;
|
|
160
|
+
var _useTelnyxForm = useTelnyxForm({
|
|
161
|
+
integrable: integrable,
|
|
162
|
+
onConnect: onConnect
|
|
163
|
+
}),
|
|
164
|
+
initialValues = _useTelnyxForm.initialValues,
|
|
165
|
+
handleSubmit = _useTelnyxForm.handleSubmit,
|
|
166
|
+
phoneNumberOptions = _useTelnyxForm.phoneNumberOptions,
|
|
167
|
+
isSubmitting = _useTelnyxForm.isSubmitting,
|
|
168
|
+
isLoading = _useTelnyxForm.isLoading;
|
|
169
|
+
var hasPhoneNumbers = isNotEmpty(phoneNumberOptions);
|
|
170
|
+
var submitButtonLabel = hasPhoneNumbers ? t("neetoIntegrations.common.saveChanges") : t("neetoIntegrations.common.verify");
|
|
171
|
+
if (isLoading) return /*#__PURE__*/jsx(PageLoader, {});
|
|
172
|
+
return /*#__PURE__*/jsx(Form, {
|
|
173
|
+
className: "w-full",
|
|
174
|
+
formikProps: {
|
|
175
|
+
enableReinitialize: true,
|
|
176
|
+
initialValues: initialValues,
|
|
177
|
+
validationSchema: buildTelnyxConfigurationValidationSchema(hasPhoneNumbers),
|
|
178
|
+
innerRef: formRef,
|
|
179
|
+
onSubmit: handleSubmit
|
|
180
|
+
},
|
|
181
|
+
children: function children(_ref2) {
|
|
182
|
+
var dirty = _ref2.dirty;
|
|
183
|
+
return /*#__PURE__*/jsx(CardLayout, {
|
|
184
|
+
actionBlock: /*#__PURE__*/jsx(ActionBlock, {
|
|
185
|
+
isSubmitting: isSubmitting,
|
|
186
|
+
cancelButtonProps: {
|
|
187
|
+
onClick: onClose
|
|
188
|
+
},
|
|
189
|
+
submitButtonProps: {
|
|
190
|
+
label: submitButtonLabel,
|
|
191
|
+
disabled: !hasPhoneNumbers ? !initialValues.apiKey && !dirty : !dirty
|
|
192
|
+
}
|
|
193
|
+
}),
|
|
194
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
195
|
+
className: "space-y-4",
|
|
196
|
+
children: [/*#__PURE__*/jsx(Input, {
|
|
197
|
+
disabled: hasPhoneNumbers,
|
|
198
|
+
label: t("neetoIntegrations.telnyx.apiKey"),
|
|
199
|
+
name: "apiKey"
|
|
200
|
+
}), /*#__PURE__*/jsx(Input, {
|
|
201
|
+
disabled: hasPhoneNumbers,
|
|
202
|
+
label: t("neetoIntegrations.telnyx.messagingProfileId"),
|
|
203
|
+
name: "messagingProfileId"
|
|
204
|
+
}), hasPhoneNumbers && /*#__PURE__*/jsx(Select, {
|
|
205
|
+
label: t("neetoIntegrations.telnyx.phoneNumber"),
|
|
206
|
+
name: "phoneNumber",
|
|
207
|
+
options: phoneNumberOptions
|
|
208
|
+
})]
|
|
209
|
+
})
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
export { Telnyx as default };
|
|
216
|
+
//# sourceMappingURL=Telnyx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Telnyx.js","sources":["../../app/javascript/src/components/v2/apis/telnyx.js","../../app/javascript/src/components/v2/hooks/reactQuery/useTelnyxApi.js","../../app/javascript/src/components/v2/Integrations/Telnyx/utils.js","../../app/javascript/src/components/v2/Integrations/Telnyx/hooks/useTelnyxForm.js","../../app/javascript/src/components/v2/Integrations/Telnyx/index.jsx"],"sourcesContent":["// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis\nimport axios from \"axios\";\n\nimport {\n TELNYX_PHONE_NUMBERS_URL,\n TELNYX_SMS_CONFIGURATION_URL,\n} from \"../constants/urls\";\n\nconst fetchTelnyxSmsConfiguration = integrable =>\n axios.get(TELNYX_SMS_CONFIGURATION_URL, { params: integrable });\n\nconst fetchTelnyxPhoneNumbers = ({ apiKey, messagingProfileId }) =>\n axios.get(TELNYX_PHONE_NUMBERS_URL, {\n params: { telnyx: { apiKey, messagingProfileId } },\n });\n\nconst createTelnyxSmsConfiguration = payload =>\n axios.post(TELNYX_SMS_CONFIGURATION_URL, { telnyx: payload });\n\nconst telnyxApi = {\n fetchTelnyxPhoneNumbers,\n fetchTelnyxSmsConfiguration,\n createTelnyxSmsConfiguration,\n};\n\nexport default telnyxApi;\n","import { useQuery, useMutation } from \"@tanstack/react-query\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\nimport { prop } from \"ramda\";\n\nimport telnyxApi from \"../../apis/telnyx\";\nimport { QUERY_KEYS } from \"../../constants/query\";\n\nconst useFetchTelnyxSmsConfiguration = ({ integrable }) =>\n useQuery({\n queryKey: [\n QUERY_KEYS.TELNYX_SMS_CONFIGURATION,\n integrable?.integrableType,\n integrable?.integrableId,\n ],\n queryFn: () => telnyxApi.fetchTelnyxSmsConfiguration(integrable),\n select: prop(\"smsConfiguration\"),\n });\n\nconst useFetchTelnyxPhoneNumbers = () =>\n useMutation({ mutationFn: telnyxApi.fetchTelnyxPhoneNumbers });\n\nconst useCreateTelnyxSmsConfiguration = ({ integrable }) =>\n useMutationWithInvalidation(telnyxApi.createTelnyxSmsConfiguration, {\n keysToInvalidate: [\n [\n QUERY_KEYS.TELNYX_SMS_CONFIGURATION,\n integrable?.integrableType,\n integrable?.integrableId,\n ],\n ],\n });\n\nexport {\n useFetchTelnyxPhoneNumbers,\n useFetchTelnyxSmsConfiguration,\n useCreateTelnyxSmsConfiguration,\n};\n","import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nexport const buildPhoneNumberOptions = phoneNumbers =>\n phoneNumbers\n ? phoneNumbers.map(({ id, phoneNumber }) => ({\n value: id,\n label: phoneNumber,\n }))\n : [];\n\nexport const buildTelnyxConfigurationValidationSchema = isPhoneNumberRequired =>\n yup.object().shape({\n apiKey: yup\n .string()\n .required(t(\"neetoIntegrations.telnyx.validations.apiKeyRequired\")),\n messagingProfileId: yup\n .string()\n .required(\n t(\"neetoIntegrations.telnyx.validations.messagingProfileIdRequired\")\n ),\n phoneNumber: isPhoneNumberRequired\n ? yup\n .object()\n .shape({ label: yup.string(), value: yup.string() })\n .nullable()\n .required(\n t(\"neetoIntegrations.telnyx.validations.phoneNumberRequired\")\n )\n : yup.mixed().nullable(),\n });\n","import { useState } from \"react\";\n\nimport { findBy } from \"neetocist\";\nimport { isEmpty } from \"ramda\";\n\nimport {\n useCreateTelnyxSmsConfiguration,\n useFetchTelnyxPhoneNumbers,\n useFetchTelnyxSmsConfiguration,\n} from \"../../../hooks/reactQuery/useTelnyxApi\";\nimport { buildPhoneNumberOptions } from \"../utils\";\n\nconst useTelnyxForm = ({ integrable, onConnect }) => {\n const [phoneNumbers, setPhoneNumbers] = useState([]);\n\n const { data: configuration, isLoading } = useFetchTelnyxSmsConfiguration({\n integrable,\n });\n\n const {\n mutate: fetchTelnyxPhoneNumbers,\n isPending: isFetchPhoneNumbersLoading,\n } = useFetchTelnyxPhoneNumbers();\n\n const {\n mutate: createTelnyxSmsConfiguration,\n isPending: isCreateSmsConfigurationLoading,\n } = useCreateTelnyxSmsConfiguration({ integrable });\n\n const handleSubmit = values => {\n if (isEmpty(phoneNumbers)) {\n const params = {\n apiKey: values.apiKey,\n messagingProfileId: values.messagingProfileId,\n };\n\n fetchTelnyxPhoneNumbers(params, {\n onSuccess: ({ phoneNumbers }) => setPhoneNumbers(phoneNumbers),\n });\n\n return;\n }\n\n const payload = {\n apiKey: values.apiKey,\n messagingProfileId: values.messagingProfileId,\n phoneNumberId: values.phoneNumber.value,\n };\n\n createTelnyxSmsConfiguration(payload, { onSuccess: onConnect });\n };\n\n const isSubmitting =\n isFetchPhoneNumbersLoading || isCreateSmsConfigurationLoading;\n\n const phoneNumberOptions = buildPhoneNumberOptions(phoneNumbers);\n\n const initialValues = {\n apiKey: configuration?.apiKey || \"\",\n messagingProfileId: configuration?.messagingProfileId || \"\",\n phoneNumber:\n findBy({ label: configuration?.phoneNumber }, phoneNumberOptions) || null,\n };\n\n return {\n initialValues,\n phoneNumberOptions,\n isSubmitting,\n isLoading,\n handleSubmit,\n };\n};\n\nexport default useTelnyxForm;\n","import { useRef } from \"react\";\n\nimport {\n ActionBlock,\n Form,\n Input,\n Select,\n} from \"@bigbinary/neeto-atoms/formik\";\nimport { isNotEmpty, noop } from \"neetocist\";\nimport CardLayout from \"neetomolecules/v2/CardLayout\";\nimport PageLoader from \"neetomolecules/v2/PageLoader\";\nimport { useTranslation } from \"react-i18next\";\n\nimport useTelnyxForm from \"./hooks/useTelnyxForm\";\nimport { buildTelnyxConfigurationValidationSchema } from \"./utils\";\n\nconst Telnyx = ({ integrable = null, onClose = noop, onConnect = noop }) => {\n const formRef = useRef(null);\n\n const { t } = useTranslation();\n\n const {\n initialValues,\n handleSubmit,\n phoneNumberOptions,\n isSubmitting,\n isLoading,\n } = useTelnyxForm({ integrable, onConnect });\n\n const hasPhoneNumbers = isNotEmpty(phoneNumberOptions);\n\n const submitButtonLabel = hasPhoneNumbers\n ? t(\"neetoIntegrations.common.saveChanges\")\n : t(\"neetoIntegrations.common.verify\");\n\n if (isLoading) return <PageLoader />;\n\n return (\n <Form\n className=\"w-full\"\n formikProps={{\n enableReinitialize: true,\n initialValues,\n validationSchema:\n buildTelnyxConfigurationValidationSchema(hasPhoneNumbers),\n innerRef: formRef,\n onSubmit: handleSubmit,\n }}\n >\n {({ dirty }) => (\n <CardLayout\n actionBlock={\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{ onClick: onClose }}\n submitButtonProps={{\n label: submitButtonLabel,\n disabled: !hasPhoneNumbers\n ? !initialValues.apiKey && !dirty\n : !dirty,\n }}\n />\n }\n >\n <div className=\"space-y-4\">\n <Input\n disabled={hasPhoneNumbers}\n label={t(\"neetoIntegrations.telnyx.apiKey\")}\n name=\"apiKey\"\n />\n <Input\n disabled={hasPhoneNumbers}\n label={t(\"neetoIntegrations.telnyx.messagingProfileId\")}\n name=\"messagingProfileId\"\n />\n {hasPhoneNumbers && (\n <Select\n label={t(\"neetoIntegrations.telnyx.phoneNumber\")}\n name=\"phoneNumber\"\n options={phoneNumberOptions}\n />\n )}\n </div>\n </CardLayout>\n )}\n </Form>\n );\n};\n\nexport default Telnyx;\n"],"names":["fetchTelnyxSmsConfiguration","integrable","axios","get","TELNYX_SMS_CONFIGURATION_URL","params","fetchTelnyxPhoneNumbers","_ref","apiKey","messagingProfileId","TELNYX_PHONE_NUMBERS_URL","telnyx","createTelnyxSmsConfiguration","payload","post","telnyxApi","useFetchTelnyxSmsConfiguration","useQuery","queryKey","QUERY_KEYS","TELNYX_SMS_CONFIGURATION","integrableType","integrableId","queryFn","select","prop","useFetchTelnyxPhoneNumbers","useMutation","mutationFn","useCreateTelnyxSmsConfiguration","_ref2","useMutationWithInvalidation","keysToInvalidate","buildPhoneNumberOptions","phoneNumbers","map","id","phoneNumber","value","label","buildTelnyxConfigurationValidationSchema","isPhoneNumberRequired","yup","object","shape","string","required","t","nullable","mixed","useTelnyxForm","onConnect","_useState","useState","_useState2","_slicedToArray","setPhoneNumbers","_useFetchTelnyxSmsCon","configuration","data","isLoading","_useFetchTelnyxPhoneN","mutate","isFetchPhoneNumbersLoading","isPending","_useCreateTelnyxSmsCo","isCreateSmsConfigurationLoading","handleSubmit","values","isEmpty","onSuccess","phoneNumberId","isSubmitting","phoneNumberOptions","initialValues","findBy","Telnyx","_ref$integrable","_ref$onClose","onClose","noop","_ref$onConnect","formRef","useRef","_useTranslation","useTranslation","_useTelnyxForm","hasPhoneNumbers","isNotEmpty","submitButtonLabel","_jsx","PageLoader","Form","className","formikProps","enableReinitialize","validationSchema","innerRef","onSubmit","children","dirty","CardLayout","actionBlock","ActionBlock","cancelButtonProps","onClick","submitButtonProps","disabled","_jsxs","Input","name","Select","options"],"mappings":"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"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { Input, Select, Form, ActionBlock } from '@bigbinary/neeto-atoms/formik';
|
|
4
|
+
import { keysToSnakeCase, noop, _findBy } from '@bigbinary/neeto-cist';
|
|
5
|
+
import CardLayout from '@bigbinary/neeto-molecules/v2/CardLayout';
|
|
6
|
+
import { prop, equals } from 'ramda';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
8
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
9
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
10
|
+
import { useMutationWithInvalidation, useStateWithDependency } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
11
|
+
import { useQuery } from '@tanstack/react-query';
|
|
12
|
+
import axios from 'axios';
|
|
13
|
+
import { T as TWILIO_CONFIGURATION_BASE_URL, Q as QUERY_KEYS } from '../query-BADHOzBP.js';
|
|
14
|
+
import i18next from 'i18next';
|
|
15
|
+
import * as yup from 'yup';
|
|
16
|
+
|
|
17
|
+
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; }
|
|
18
|
+
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), true).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; }
|
|
19
|
+
var ConfigurationForm = function ConfigurationForm(_ref) {
|
|
20
|
+
var _errors$twilioPhoneNu;
|
|
21
|
+
var phoneNumberOptions = _ref.phoneNumberOptions,
|
|
22
|
+
_ref$selectedPhoneNum = _ref.selectedPhoneNumber,
|
|
23
|
+
selectedPhoneNumber = _ref$selectedPhoneNum === void 0 ? null : _ref$selectedPhoneNum,
|
|
24
|
+
_ref$initialFocusRef = _ref.initialFocusRef,
|
|
25
|
+
initialFocusRef = _ref$initialFocusRef === void 0 ? null : _ref$initialFocusRef,
|
|
26
|
+
_ref$isUsingOverlay = _ref.isUsingOverlay,
|
|
27
|
+
isUsingOverlay = _ref$isUsingOverlay === void 0 ? false : _ref$isUsingOverlay,
|
|
28
|
+
_ref$formikProps = _ref.formikProps,
|
|
29
|
+
formikProps = _ref$formikProps === void 0 ? {} : _ref$formikProps;
|
|
30
|
+
var _useTranslation = useTranslation(),
|
|
31
|
+
t = _useTranslation.t;
|
|
32
|
+
var setFieldValue = formikProps.setFieldValue,
|
|
33
|
+
setValues = formikProps.setValues,
|
|
34
|
+
errors = formikProps.errors,
|
|
35
|
+
values = formikProps.values,
|
|
36
|
+
initialValues = formikProps.initialValues;
|
|
37
|
+
useEffect(function () {
|
|
38
|
+
selectedPhoneNumber && setFieldValue("twilioPhoneNumber", selectedPhoneNumber);
|
|
39
|
+
}, [selectedPhoneNumber, initialValues]);
|
|
40
|
+
return /*#__PURE__*/jsxs("div", {
|
|
41
|
+
className: "flex w-full flex-col gap-y-4",
|
|
42
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
43
|
+
className: "flex w-full",
|
|
44
|
+
children: /*#__PURE__*/jsx(Input, {
|
|
45
|
+
required: true,
|
|
46
|
+
autoFocus: !isUsingOverlay,
|
|
47
|
+
"data-testid": "integrations-twilio-sid",
|
|
48
|
+
label: t("neetoIntegrations.twilio.sid"),
|
|
49
|
+
name: "twilioSid",
|
|
50
|
+
ref: initialFocusRef
|
|
51
|
+
})
|
|
52
|
+
}), /*#__PURE__*/jsx("div", {
|
|
53
|
+
className: "flex w-full",
|
|
54
|
+
children: /*#__PURE__*/jsx(Input, {
|
|
55
|
+
required: true,
|
|
56
|
+
"data-testid": "integrations-twilio-auth-token",
|
|
57
|
+
label: t("neetoIntegrations.twilio.authToken"),
|
|
58
|
+
name: "twilioAuthToken"
|
|
59
|
+
})
|
|
60
|
+
}), phoneNumberOptions && /*#__PURE__*/jsx("div", {
|
|
61
|
+
className: "flex w-full",
|
|
62
|
+
children: /*#__PURE__*/jsx(Select, {
|
|
63
|
+
error: (_errors$twilioPhoneNu = errors.twilioPhoneNumber) === null || _errors$twilioPhoneNu === void 0 ? void 0 : _errors$twilioPhoneNu.value,
|
|
64
|
+
label: t("neetoIntegrations.common.phNo"),
|
|
65
|
+
name: "twilioPhoneNumber",
|
|
66
|
+
options: phoneNumberOptions,
|
|
67
|
+
size: "large",
|
|
68
|
+
onChange: function onChange(selected) {
|
|
69
|
+
return setValues(_objectSpread$2(_objectSpread$2({}, values), {}, {
|
|
70
|
+
twilioPhoneNumber: selected
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
})]
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
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; }
|
|
79
|
+
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), true).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; }
|
|
80
|
+
var fetchTwilioSmsConfiguration = function fetchTwilioSmsConfiguration(integrable) {
|
|
81
|
+
return axios.get(TWILIO_CONFIGURATION_BASE_URL, {
|
|
82
|
+
params: integrable
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
var removeTwilioConfiguration = function removeTwilioConfiguration() {
|
|
86
|
+
return axios["delete"](TWILIO_CONFIGURATION_BASE_URL);
|
|
87
|
+
};
|
|
88
|
+
var getTwilioPhoneNumbers = function getTwilioPhoneNumbers(data) {
|
|
89
|
+
return axios.get("".concat(TWILIO_CONFIGURATION_BASE_URL, "/new"), {
|
|
90
|
+
params: data
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
var createTwilioConfiguration = function createTwilioConfiguration(payload, integrable) {
|
|
94
|
+
return axios.post(TWILIO_CONFIGURATION_BASE_URL, _objectSpread$1(_objectSpread$1({}, payload), integrable));
|
|
95
|
+
};
|
|
96
|
+
var twilioApi = {
|
|
97
|
+
fetchTwilioSmsConfiguration: fetchTwilioSmsConfiguration,
|
|
98
|
+
removeTwilioConfiguration: removeTwilioConfiguration,
|
|
99
|
+
getTwilioPhoneNumbers: getTwilioPhoneNumbers,
|
|
100
|
+
createTwilioConfiguration: createTwilioConfiguration
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
var useFetchTwilioSmsConfiguration = function useFetchTwilioSmsConfiguration(_ref) {
|
|
104
|
+
var integrable = _ref.integrable;
|
|
105
|
+
return useQuery({
|
|
106
|
+
queryKey: [QUERY_KEYS.TWILIO_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId],
|
|
107
|
+
queryFn: function queryFn() {
|
|
108
|
+
return twilioApi.fetchTwilioSmsConfiguration(integrable);
|
|
109
|
+
},
|
|
110
|
+
select: function select(response) {
|
|
111
|
+
var _smsConfiguration$twi, _smsConfiguration$twi2, _smsConfiguration$twi3;
|
|
112
|
+
var smsConfiguration = response.smsConfiguration;
|
|
113
|
+
return {
|
|
114
|
+
twilioSid: (_smsConfiguration$twi = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioSid) !== null && _smsConfiguration$twi !== void 0 ? _smsConfiguration$twi : "",
|
|
115
|
+
twilioAuthToken: (_smsConfiguration$twi2 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioAuthToken) !== null && _smsConfiguration$twi2 !== void 0 ? _smsConfiguration$twi2 : "",
|
|
116
|
+
twilioPhoneNumber: (_smsConfiguration$twi3 = smsConfiguration === null || smsConfiguration === void 0 ? void 0 : smsConfiguration.twilioPhoneNumber) !== null && _smsConfiguration$twi3 !== void 0 ? _smsConfiguration$twi3 : ""
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
var useFetchTwilioPhoneNumbers = function useFetchTwilioPhoneNumbers(_ref2) {
|
|
122
|
+
var _formRef$current, _formRef$current2;
|
|
123
|
+
var credentials = _ref2.credentials,
|
|
124
|
+
formRef = _ref2.formRef;
|
|
125
|
+
return useQuery({
|
|
126
|
+
queryKey: [QUERY_KEYS.TWILIO_PHONE_NUMBERS, {
|
|
127
|
+
credentials: credentials
|
|
128
|
+
}],
|
|
129
|
+
queryFn: function queryFn() {
|
|
130
|
+
return twilioApi.getTwilioPhoneNumbers(keysToSnakeCase(credentials));
|
|
131
|
+
},
|
|
132
|
+
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),
|
|
133
|
+
select: prop("phoneNumbers"),
|
|
134
|
+
retry: false
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
var useCreateTwilioConfiguration = function useCreateTwilioConfiguration(_ref3) {
|
|
138
|
+
var integrable = _ref3.integrable;
|
|
139
|
+
return useMutationWithInvalidation(function (payload) {
|
|
140
|
+
return twilioApi.createTwilioConfiguration(payload, integrable);
|
|
141
|
+
}, {
|
|
142
|
+
keysToInvalidate: [[QUERY_KEYS.TWILIO_SMS_CONFIGURATION, integrable === null || integrable === void 0 ? void 0 : integrable.integrableType, integrable === null || integrable === void 0 ? void 0 : integrable.integrableId]]
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
var useTwilio = function useTwilio(_ref) {
|
|
147
|
+
var _ref$onConnect = _ref.onConnect,
|
|
148
|
+
onConnect = _ref$onConnect === void 0 ? noop : _ref$onConnect,
|
|
149
|
+
_ref$formRef = _ref.formRef,
|
|
150
|
+
formRef = _ref$formRef === void 0 ? null : _ref$formRef,
|
|
151
|
+
_ref$integrable = _ref.integrable,
|
|
152
|
+
integrable = _ref$integrable === void 0 ? null : _ref$integrable;
|
|
153
|
+
var _useFetchTwilioSmsCon = useFetchTwilioSmsConfiguration({
|
|
154
|
+
integrable: integrable
|
|
155
|
+
}),
|
|
156
|
+
_useFetchTwilioSmsCon2 = _useFetchTwilioSmsCon.data,
|
|
157
|
+
configuration = _useFetchTwilioSmsCon2 === void 0 ? {} : _useFetchTwilioSmsCon2,
|
|
158
|
+
isConfigurationLoading = _useFetchTwilioSmsCon.isLoading;
|
|
159
|
+
var _useStateWithDependen = useStateWithDependency(configuration),
|
|
160
|
+
_useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
|
|
161
|
+
credentials = _useStateWithDependen2[0],
|
|
162
|
+
setCredentials = _useStateWithDependen2[1];
|
|
163
|
+
var _useFetchTwilioPhoneN = useFetchTwilioPhoneNumbers({
|
|
164
|
+
credentials: credentials,
|
|
165
|
+
formRef: formRef
|
|
166
|
+
}),
|
|
167
|
+
phoneNumbers = _useFetchTwilioPhoneN.data,
|
|
168
|
+
isPhoneNumbersLoading = _useFetchTwilioPhoneN.isLoading;
|
|
169
|
+
var _useCreateTwilioConfi = useCreateTwilioConfiguration({
|
|
170
|
+
integrable: integrable
|
|
171
|
+
}),
|
|
172
|
+
saveConfiguration = _useCreateTwilioConfi.mutate,
|
|
173
|
+
isSubmitting = _useCreateTwilioConfi.isPending;
|
|
174
|
+
var handleSubmit = function handleSubmit(values) {
|
|
175
|
+
var _values$twilioPhoneNu;
|
|
176
|
+
var payload = {
|
|
177
|
+
twilio_sid: values.twilioSid,
|
|
178
|
+
twilio_auth_token: values.twilioAuthToken,
|
|
179
|
+
twilio_phone_number_sid: (_values$twilioPhoneNu = values.twilioPhoneNumber) === null || _values$twilioPhoneNu === void 0 ? void 0 : _values$twilioPhoneNu.value
|
|
180
|
+
};
|
|
181
|
+
if (!phoneNumbers && !(configuration !== null && configuration !== void 0 && configuration.twilioPhoneNumber)) {
|
|
182
|
+
setCredentials(payload);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
saveConfiguration(payload, {
|
|
186
|
+
onSuccess: onConnect
|
|
187
|
+
});
|
|
188
|
+
};
|
|
189
|
+
return {
|
|
190
|
+
handleSubmit: handleSubmit,
|
|
191
|
+
phoneNumbers: phoneNumbers,
|
|
192
|
+
isConfigurationLoading: isConfigurationLoading,
|
|
193
|
+
isPhoneNumbersLoading: isPhoneNumbersLoading,
|
|
194
|
+
isSubmitting: isSubmitting,
|
|
195
|
+
configuration: configuration
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
var buildTwilioConfigurationValidationSchema = function buildTwilioConfigurationValidationSchema(isTwilioPhoneRequired) {
|
|
200
|
+
return yup.object().shape({
|
|
201
|
+
twilioSid: yup.string().required(i18next.t("neetoIntegrations.twilio.validations.sidReq")),
|
|
202
|
+
twilioAuthToken: yup.string().required(i18next.t("neetoIntegrations.twilio.validations.authTokenReq")),
|
|
203
|
+
twilioPhoneNumber: isTwilioPhoneRequired ? yup.object().shape({
|
|
204
|
+
label: yup.string(),
|
|
205
|
+
value: yup.string().required(i18next.t("neetoIntegrations.twilio.validations.phNumReq"))
|
|
206
|
+
}) : null
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
var buildPhoneNumberOptions = function buildPhoneNumberOptions(phoneNumbers) {
|
|
210
|
+
return phoneNumbers === null || phoneNumbers === void 0 ? void 0 : phoneNumbers.map(function (_ref) {
|
|
211
|
+
var phoneNumber = _ref.phoneNumber,
|
|
212
|
+
sid = _ref.sid;
|
|
213
|
+
return {
|
|
214
|
+
label: phoneNumber,
|
|
215
|
+
value: sid
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
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; }
|
|
221
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).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; }
|
|
222
|
+
var Twilio = function Twilio(_ref) {
|
|
223
|
+
var _ref$integrable = _ref.integrable,
|
|
224
|
+
integrable = _ref$integrable === void 0 ? null : _ref$integrable,
|
|
225
|
+
_ref$onClose = _ref.onClose,
|
|
226
|
+
onClose = _ref$onClose === void 0 ? noop : _ref$onClose,
|
|
227
|
+
_ref$onConnect = _ref.onConnect,
|
|
228
|
+
onConnect = _ref$onConnect === void 0 ? noop : _ref$onConnect;
|
|
229
|
+
var _useTranslation = useTranslation(),
|
|
230
|
+
t = _useTranslation.t;
|
|
231
|
+
var initialFocusRef = useRef();
|
|
232
|
+
var formRef = useRef();
|
|
233
|
+
var _useTwilio = useTwilio({
|
|
234
|
+
onConnect: onConnect,
|
|
235
|
+
formRef: formRef,
|
|
236
|
+
integrable: integrable
|
|
237
|
+
}),
|
|
238
|
+
handleSubmit = _useTwilio.handleSubmit,
|
|
239
|
+
phoneNumbers = _useTwilio.phoneNumbers,
|
|
240
|
+
isConfigurationLoading = _useTwilio.isConfigurationLoading,
|
|
241
|
+
isPhoneNumbersLoading = _useTwilio.isPhoneNumbersLoading,
|
|
242
|
+
isSubmitting = _useTwilio.isSubmitting,
|
|
243
|
+
configuration = _useTwilio.configuration;
|
|
244
|
+
var phoneNumberOptions = buildPhoneNumberOptions(phoneNumbers);
|
|
245
|
+
var selectedPhoneNumber = _findBy({
|
|
246
|
+
label: configuration === null || configuration === void 0 ? void 0 : configuration.twilioPhoneNumber
|
|
247
|
+
}, phoneNumberOptions);
|
|
248
|
+
var isLoading = isPhoneNumbersLoading || isConfigurationLoading;
|
|
249
|
+
var isSubmitDisabled = function isSubmitDisabled(values) {
|
|
250
|
+
return equals(_objectSpread(_objectSpread({}, configuration), {}, {
|
|
251
|
+
twilioPhoneNumber: selectedPhoneNumber
|
|
252
|
+
}), values) || isLoading;
|
|
253
|
+
};
|
|
254
|
+
return /*#__PURE__*/jsx(Form, {
|
|
255
|
+
className: "w-full",
|
|
256
|
+
formikProps: {
|
|
257
|
+
enableReinitialize: true,
|
|
258
|
+
validationSchema: buildTwilioConfigurationValidationSchema(!!phoneNumbers),
|
|
259
|
+
initialValues: configuration,
|
|
260
|
+
innerRef: formRef,
|
|
261
|
+
onSubmit: handleSubmit
|
|
262
|
+
},
|
|
263
|
+
children: function children(formikProps) {
|
|
264
|
+
return /*#__PURE__*/jsx(CardLayout, {
|
|
265
|
+
actionBlock: /*#__PURE__*/jsx(ActionBlock, {
|
|
266
|
+
isSubmitting: isSubmitting,
|
|
267
|
+
cancelButtonProps: {
|
|
268
|
+
onClick: onClose
|
|
269
|
+
},
|
|
270
|
+
submitButtonProps: {
|
|
271
|
+
label: phoneNumberOptions ? t("neetoIntegrations.common.saveChanges") : t("neetoIntegrations.common.verify"),
|
|
272
|
+
disabled: isSubmitDisabled(formikProps.values) || isSubmitting,
|
|
273
|
+
loading: isSubmitting || isPhoneNumbersLoading && !(configuration !== null && configuration !== void 0 && configuration.twilioAuthToken)
|
|
274
|
+
}
|
|
275
|
+
}),
|
|
276
|
+
children: /*#__PURE__*/jsx(ConfigurationForm, {
|
|
277
|
+
formikProps: formikProps,
|
|
278
|
+
initialFocusRef: initialFocusRef,
|
|
279
|
+
phoneNumberOptions: phoneNumberOptions,
|
|
280
|
+
selectedPhoneNumber: selectedPhoneNumber
|
|
281
|
+
})
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
export { Twilio as default };
|
|
288
|
+
//# sourceMappingURL=Twilio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Twilio.js","sources":["../../app/javascript/src/components/v2/Integrations/Twilio/Form.jsx","../../app/javascript/src/components/v2/apis/twilio.js","../../app/javascript/src/components/v2/hooks/reactQuery/useTwilioApi.js","../../app/javascript/src/components/v2/Integrations/Twilio/hooks/useTwilio.js","../../app/javascript/src/components/v2/Integrations/Twilio/utils.js","../../app/javascript/src/components/v2/Integrations/Twilio/index.jsx"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { Input, Select } from \"@bigbinary/neeto-atoms/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","// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis\nimport axios from \"axios\";\n\nimport { TWILIO_CONFIGURATION_BASE_URL } from \"../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`, { params: data });\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","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 \"../../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 [\n QUERY_KEYS.TWILIO_SMS_CONFIGURATION,\n integrable?.integrableType,\n integrable?.integrableId,\n ],\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 { useRef } from \"react\";\n\nimport {\n ActionBlock,\n Form as FormikFormWrapper,\n} from \"@bigbinary/neeto-atoms/formik\";\nimport { noop, _findBy } from \"neetocist\";\nimport CardLayout from \"neetomolecules/v2/CardLayout\";\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=\"w-full\"\n formikProps={{\n enableReinitialize: true,\n validationSchema:\n buildTwilioConfigurationValidationSchema(!!phoneNumbers),\n initialValues: configuration,\n innerRef: formRef,\n onSubmit: handleSubmit,\n }}\n >\n {formikProps => (\n <CardLayout\n actionBlock={\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 }\n >\n <Form\n {...{\n formikProps,\n initialFocusRef,\n phoneNumberOptions,\n selectedPhoneNumber,\n }}\n />\n </CardLayout>\n )}\n </FormikFormWrapper>\n );\n};\n\nexport default Twilio;\n"],"names":["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","value","options","size","onChange","selected","_objectSpread","fetchTwilioSmsConfiguration","integrable","axios","get","TWILIO_CONFIGURATION_BASE_URL","params","removeTwilioConfiguration","getTwilioPhoneNumbers","data","concat","createTwilioConfiguration","payload","post","twilioApi","useFetchTwilioSmsConfiguration","useQuery","queryKey","QUERY_KEYS","TWILIO_SMS_CONFIGURATION","integrableType","integrableId","queryFn","select","response","_smsConfiguration$twi","_smsConfiguration$twi2","_smsConfiguration$twi3","smsConfiguration","twilioSid","twilioAuthToken","useFetchTwilioPhoneNumbers","_ref2","_formRef$current","_formRef$current2","credentials","formRef","TWILIO_PHONE_NUMBERS","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","_slicedToArray","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","CardLayout","actionBlock","ActionBlock","cancelButtonProps","onClick","submitButtonProps","disabled","loading","Form"],"mappings":"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"}
|