@bigbinary/neeto-email-delivery-frontend 1.0.8 → 1.0.10

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.
Files changed (53) hide show
  1. package/README.md +39 -0
  2. package/app/javascript/src/translations/ar.json +4 -1
  3. package/app/javascript/src/translations/bg.json +4 -1
  4. package/app/javascript/src/translations/ca.json +4 -1
  5. package/app/javascript/src/translations/cs.json +4 -1
  6. package/app/javascript/src/translations/da.json +4 -1
  7. package/app/javascript/src/translations/de.json +4 -1
  8. package/app/javascript/src/translations/en.json +4 -1
  9. package/app/javascript/src/translations/es-MX.json +4 -1
  10. package/app/javascript/src/translations/es.json +4 -1
  11. package/app/javascript/src/translations/et.json +4 -1
  12. package/app/javascript/src/translations/fi.json +4 -1
  13. package/app/javascript/src/translations/fil.json +4 -1
  14. package/app/javascript/src/translations/fr.json +4 -1
  15. package/app/javascript/src/translations/he.json +4 -1
  16. package/app/javascript/src/translations/hi.json +4 -1
  17. package/app/javascript/src/translations/hr.json +4 -1
  18. package/app/javascript/src/translations/id.json +4 -1
  19. package/app/javascript/src/translations/it.json +4 -1
  20. package/app/javascript/src/translations/ja.json +4 -1
  21. package/app/javascript/src/translations/ko.json +4 -1
  22. package/app/javascript/src/translations/nl.json +4 -1
  23. package/app/javascript/src/translations/pl.json +4 -1
  24. package/app/javascript/src/translations/pt-BR.json +4 -1
  25. package/app/javascript/src/translations/pt.json +4 -1
  26. package/app/javascript/src/translations/ro.json +4 -1
  27. package/app/javascript/src/translations/ru.json +4 -1
  28. package/app/javascript/src/translations/sk.json +4 -1
  29. package/app/javascript/src/translations/sl.json +4 -1
  30. package/app/javascript/src/translations/sv.json +4 -1
  31. package/app/javascript/src/translations/th.json +4 -1
  32. package/app/javascript/src/translations/tr.json +4 -1
  33. package/app/javascript/src/translations/uk.json +4 -1
  34. package/app/javascript/src/translations/vi.json +4 -1
  35. package/app/javascript/src/translations/zh-CN.json +4 -1
  36. package/app/javascript/src/translations/zh-TW.json +4 -1
  37. package/dist/EmailDeliveryScreen.js +46 -17
  38. package/dist/EmailDeliveryScreen.js.map +1 -1
  39. package/dist/SparkpostDomainSetup.js +1 -1
  40. package/dist/SparkpostDomainVerify.js +1 -1
  41. package/dist/cjs/EmailDeliveryScreen.js +45 -16
  42. package/dist/cjs/EmailDeliveryScreen.js.map +1 -1
  43. package/dist/cjs/SparkpostDomainSetup.js +1 -1
  44. package/dist/cjs/SparkpostDomainVerify.js +1 -1
  45. package/dist/cjs/index.js +1 -1
  46. package/dist/index.js +1 -1
  47. package/dist/{useSparkpostDomain-DNDqvZtR.js → useSparkpostDomain-DO4bG1HD.js} +2 -1
  48. package/dist/useSparkpostDomain-DO4bG1HD.js.map +1 -0
  49. package/dist/{useSparkpostDomain-yQjcPe0y.js → useSparkpostDomain-wsENCoto.js} +2 -1
  50. package/dist/useSparkpostDomain-wsENCoto.js.map +1 -0
  51. package/package.json +5 -5
  52. package/dist/useSparkpostDomain-DNDqvZtR.js.map +0 -1
  53. package/dist/useSparkpostDomain-yQjcPe0y.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { isPresent, humanize } from '@bigbinary/neeto-cist';
2
- import { withT, useQueryParams } from '@bigbinary/neeto-commons-frontend/react-utils';
2
+ import { useQueryParams } from '@bigbinary/neeto-commons-frontend/react-utils';
3
3
  import { showThumbsUpToastr, buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
4
4
  import MailSend from '@bigbinary/neeto-icons/MailSend';
5
5
  import GmailIcon from '@bigbinary/neeto-icons/misc/Gmail';
@@ -15,7 +15,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
15
15
  import { useState, useEffect } from 'react';
16
16
  import { useQueryClient } from '@tanstack/react-query';
17
17
  import { u as useFetchGmail, b as useDestroyGmail, a as useFetchOutlook, c as useDestroyOutlook } from './useOutlookIntegrationApi-ZgRWrUQN.js';
18
- import { u as useSparkpostDomain } from './useSparkpostDomain-DNDqvZtR.js';
18
+ import { u as useSparkpostDomain } from './useSparkpostDomain-DO4bG1HD.js';
19
19
  import { t } from 'i18next';
20
20
  import Button from '@bigbinary/neetoui/Button';
21
21
  import Tag from '@bigbinary/neetoui/Tag';
@@ -74,6 +74,7 @@ var useGmail = function useGmail(_ref) {
74
74
  data: data,
75
75
  isLoading: isLoading,
76
76
  isDestroying: isDestroying,
77
+ exists: data === null || data === void 0 ? void 0 : data.exists,
77
78
  isConnected: data === null || data === void 0 ? void 0 : data.connected,
78
79
  isDisconnectAlertOpen: isDisconnectAlertOpen,
79
80
  setIsDisconnectAlertOpen: setIsDisconnectAlertOpen,
@@ -132,6 +133,10 @@ var useOutlook = function useOutlook(_ref) {
132
133
  return {
133
134
  data: data,
134
135
  isLoading: isLoading,
136
+ exists: data === null || data === void 0 ? void 0 : data.exists,
137
+ status: data === null || data === void 0 ? void 0 : data.status,
138
+ shadowAccount: data === null || data === void 0 ? void 0 : data.shadowAccount,
139
+ isWaitingForTestEmail: (data === null || data === void 0 ? void 0 : data.status) === "inactive" && !(data !== null && data !== void 0 && data.connected),
135
140
  isDestroying: isDestroying,
136
141
  isConnected: data === null || data === void 0 ? void 0 : data.connected,
137
142
  isDisconnectAlertOpen: isDisconnectAlertOpen,
@@ -149,9 +154,8 @@ var ERROR_MESSAGES = {
149
154
  outlook_nil_json_web_token: t("neetoEmailDelivery.outlook.nilJsonWebToken")
150
155
  };
151
156
 
152
- var IntegrationCard = withT(function (_ref) {
153
- var t = _ref.t,
154
- Icon = _ref.icon,
157
+ var IntegrationCard = function IntegrationCard(_ref) {
158
+ var Icon = _ref.icon,
155
159
  title = _ref.title,
156
160
  description = _ref.description,
157
161
  isConnected = _ref.isConnected,
@@ -162,7 +166,12 @@ var IntegrationCard = withT(function (_ref) {
162
166
  _ref$disconnectButton = _ref.disconnectButtonText,
163
167
  disconnectButtonText = _ref$disconnectButton === void 0 ? "neetoEmailDelivery.sparkpost.emailDelivery.disconnect" : _ref$disconnectButton,
164
168
  _ref$connectedTagText = _ref.connectedTagText,
165
- connectedTagText = _ref$connectedTagText === void 0 ? "neetoEmailDelivery.sparkpost.emailDelivery.connected" : _ref$connectedTagText;
169
+ connectedTagText = _ref$connectedTagText === void 0 ? "neetoEmailDelivery.sparkpost.emailDelivery.connected" : _ref$connectedTagText,
170
+ _ref$showDisconnect = _ref.showDisconnect,
171
+ showDisconnect = _ref$showDisconnect === void 0 ? false : _ref$showDisconnect;
172
+ var _useTranslation = useTranslation(),
173
+ t = _useTranslation.t;
174
+ var shouldShowDisconnect = isConnected || showDisconnect;
166
175
  return /*#__PURE__*/jsx("div", {
167
176
  className: "neeto-ui-rounded-lg neeto-ui-shadow-xs neeto-ui-border-gray-300 translate flex flex-col gap-y-4 border p-6 no-underline transition-transform duration-300 ease-in-out outline-none hover:-translate-y-1",
168
177
  children: /*#__PURE__*/jsxs("div", {
@@ -190,7 +199,7 @@ var IntegrationCard = withT(function (_ref) {
190
199
  children: description
191
200
  }), connectButtonText && /*#__PURE__*/jsx("div", {
192
201
  className: "flex gap-2",
193
- children: isConnected ? /*#__PURE__*/jsx(Button, {
202
+ children: shouldShowDisconnect ? /*#__PURE__*/jsx(Button, {
194
203
  "data-cy": "disconnect-button",
195
204
  label: t(disconnectButtonText),
196
205
  loading: isDisconnecting,
@@ -207,7 +216,7 @@ var IntegrationCard = withT(function (_ref) {
207
216
  })]
208
217
  })
209
218
  });
210
- });
219
+ };
211
220
 
212
221
  var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
213
222
  var indexRoute = _ref.indexRoute,
@@ -248,21 +257,29 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
248
257
  isGmailConnected = gmailIntegration.isConnected,
249
258
  isGmailLoading = gmailIntegration.isLoading,
250
259
  isGmailDisconnecting = gmailIntegration.isDestroying,
251
- onGmailDisconnect = gmailIntegration.onDisconnect;
260
+ onGmailDisconnect = gmailIntegration.onDisconnect,
261
+ isGmailExists = gmailIntegration.exists;
252
262
  var _outlookIntegration$d = outlookIntegration.data,
253
263
  outlookData = _outlookIntegration$d === void 0 ? {} : _outlookIntegration$d,
254
264
  isOutlookConnected = outlookIntegration.isConnected,
255
265
  isOutlookLoading = outlookIntegration.isLoading,
256
266
  isOutlookDisconnecting = outlookIntegration.isDestroying,
257
- onOutlookDisconnect = outlookIntegration.onDisconnect;
267
+ isOutlookWaitingForTestEmail = outlookIntegration.isWaitingForTestEmail,
268
+ isOutlookShadowAccount = outlookIntegration.shadowAccount,
269
+ onOutlookDisconnect = outlookIntegration.onDisconnect,
270
+ isOutlookExists = outlookIntegration.exists;
258
271
  var _sparkpostIntegration = sparkpostIntegration.data,
259
272
  sparkpostData = _sparkpostIntegration === void 0 ? {} : _sparkpostIntegration,
260
273
  isSparkpostConnected = sparkpostIntegration.isConnected,
261
274
  isSparkpostLoading = sparkpostIntegration.isLoading,
262
275
  onSparkpostDisconnect = sparkpostIntegration.onDisconnect,
263
- isSparkpostDisconnecting = sparkpostIntegration.isDestroying;
276
+ isSparkpostDisconnecting = sparkpostIntegration.isDestroying,
277
+ isSparkpostExists = sparkpostIntegration.exists;
264
278
  var isLoading = isGmailLoading || isOutlookLoading || isSparkpostLoading;
265
- var hasActiveIntegration = isGmailConnected || isOutlookConnected || isSparkpostConnected;
279
+ var noneExists = !isGmailExists && !isOutlookExists && !isSparkpostExists;
280
+ var showGmail = noneExists || isGmailExists;
281
+ var showOutlook = noneExists || isOutlookExists;
282
+ var showSparkpost = noneExists || isSparkpostExists;
266
283
  var handleGmailConnect = function handleGmailConnect() {
267
284
  window.location.href = buildUrl(GMAIL_OAUTH_CONNECT_URL, {
268
285
  ownerId: ownerId
@@ -297,13 +314,14 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
297
314
  children: /*#__PURE__*/jsx(Spinner, {})
298
315
  });
299
316
  }
317
+ var activeMessage = isGmailConnected && t("neetoEmailDelivery.gmail.gmailConfigured") || isOutlookConnected && t("neetoEmailDelivery.outlook.outlookConfigured") || isSparkpostConnected && t("neetoEmailDelivery.sparkpost.ownDomainConfigured");
300
318
  return /*#__PURE__*/jsx("div", {
301
319
  className: "min-h-0 w-full grow",
302
320
  children: /*#__PURE__*/jsxs("div", {
303
321
  className: "@container mx-auto space-y-6",
304
322
  children: [/*#__PURE__*/jsxs("div", {
305
323
  className: "grid grid-cols-1 gap-3 py-1 @lg:grid-cols-2 @lg:gap-6 @3xl:grid-cols-3 @7xl:grid-cols-4",
306
- children: [(!hasActiveIntegration || isGmailConnected) && /*#__PURE__*/jsx(IntegrationCard, {
324
+ children: [showGmail && /*#__PURE__*/jsx(IntegrationCard, {
307
325
  connectButtonText: "neetoEmailDelivery.gmail.connectGmail",
308
326
  description: gmailDescription,
309
327
  icon: GmailIcon,
@@ -312,16 +330,17 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
312
330
  title: gmailTitle,
313
331
  onConnect: handleGmailConnect,
314
332
  onDisconnect: onGmailDisconnect
315
- }), (!hasActiveIntegration || isOutlookConnected) && /*#__PURE__*/jsx(IntegrationCard, {
333
+ }), showOutlook && /*#__PURE__*/jsx(IntegrationCard, {
316
334
  connectButtonText: "neetoEmailDelivery.outlook.connectOutlook",
317
335
  description: outlookDescription,
318
336
  icon: OutlookIcon,
319
337
  isConnected: isOutlookConnected,
320
338
  isDisconnecting: isOutlookDisconnecting,
321
339
  title: outlookTitle,
340
+ showDisconnect: isOutlookWaitingForTestEmail || isOutlookShadowAccount,
322
341
  onConnect: handleOutlookConnect,
323
342
  onDisconnect: onOutlookDisconnect
324
- }), (!hasActiveIntegration || isSparkpostConnected) && /*#__PURE__*/jsx(IntegrationCard, {
343
+ }), showSparkpost && /*#__PURE__*/jsx(IntegrationCard, {
325
344
  connectButtonText: "neetoEmailDelivery.sparkpost.emailDelivery.setupDomain",
326
345
  description: ownDomainDescription,
327
346
  icon: MailSend,
@@ -331,9 +350,19 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
331
350
  onConnect: handleOwnDomainConnect,
332
351
  onDisconnect: onSparkpostDisconnect
333
352
  })]
334
- }), hasActiveIntegration && /*#__PURE__*/jsx(Callout, {
353
+ }), activeMessage && /*#__PURE__*/jsx(Callout, {
335
354
  style: "success",
336
- children: isGmailConnected ? t("neetoEmailDelivery.gmail.gmailConfigured") : isOutlookConnected ? t("neetoEmailDelivery.outlook.outlookConfigured") : t("neetoEmailDelivery.sparkpost.ownDomainConfigured")
355
+ children: activeMessage
356
+ }), isOutlookWaitingForTestEmail && /*#__PURE__*/jsx(Callout, {
357
+ style: "warning",
358
+ children: t("neetoEmailDelivery.outlook.waitingForTestEmail", {
359
+ email: outlookEmail
360
+ })
361
+ }), isOutlookShadowAccount && /*#__PURE__*/jsx(Callout, {
362
+ style: "warning",
363
+ children: t("neetoEmailDelivery.outlook.shadowAccountMessage", {
364
+ email: outlookEmail
365
+ })
337
366
  })]
338
367
  })
339
368
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EmailDeliveryScreen.js","sources":["../app/javascript/src/hooks/integrations/useGmail.js","../app/javascript/src/hooks/integrations/useOutlook.js","../app/javascript/src/components/EmailDeliveryScreen/constants.js","../app/javascript/src/components/EmailDeliveryScreen/IntegrationCard.jsx","../app/javascript/src/components/EmailDeliveryScreen/index.jsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { showThumbsUpToastr } from \"neetocommons/utils\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n useFetchGmail,\n useDestroyGmail,\n} from \"hooks/reactQuery/integrations/useGmailIntegrationApi\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst useGmail = ({ ownerId, indexRoute, canManageIntegrations }) => {\n const [isDisconnectAlertOpen, setIsDisconnectAlertOpen] = useState(false);\n\n const history = useHistory();\n\n const queryClient = useQueryClient();\n\n const {\n isLoading,\n data = {},\n isSuccess: isGmailFetched,\n } = useFetchGmail(ownerId, { enabled: canManageIntegrations });\n\n const { isPending: isDestroying, mutate: destroyIntegration } =\n useDestroyGmail({ ownerId });\n\n const onClose = () => history.replace(indexRoute);\n\n const onDisconnect = () => {\n destroyIntegration(false, {\n onSuccess: () => {\n showThumbsUpToastr();\n setIsDisconnectAlertOpen(false);\n history.replace(indexRoute);\n },\n });\n };\n\n useEffect(() => {\n if (isGmailFetched) {\n queryClient.invalidateQueries({\n predicate: query => {\n const [key, id] = query.queryKey;\n\n return key === QUERY_KEYS.INTEGRATION_GMAIL && id !== ownerId;\n },\n });\n }\n }, [isGmailFetched, queryClient, ownerId]);\n\n return {\n data,\n isLoading,\n isDestroying,\n isConnected: data?.connected,\n isDisconnectAlertOpen,\n setIsDisconnectAlertOpen,\n onDisconnect,\n onClose,\n errorMessage: data?.error,\n };\n};\n\nexport default useGmail;\n","import { useEffect, useState } from \"react\";\n\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { showThumbsUpToastr } from \"neetocommons/utils\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n useFetchOutlook,\n useDestroyOutlook,\n} from \"hooks/reactQuery/integrations/useOutlookIntegrationApi\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst useOutlook = ({ ownerId, indexRoute, canManageIntegrations }) => {\n const [isDisconnectAlertOpen, setIsDisconnectAlertOpen] = useState(false);\n\n const history = useHistory();\n\n const queryClient = useQueryClient();\n\n const {\n isLoading,\n data = {},\n isSuccess: isOutlookFetched,\n } = useFetchOutlook(ownerId, { enabled: canManageIntegrations });\n\n const { isPending: isDestroying, mutate: destroyIntegration } =\n useDestroyOutlook({ ownerId });\n\n const onClose = () => history.replace(indexRoute);\n\n const onDisconnect = () => {\n destroyIntegration(false, {\n onSuccess: () => {\n showThumbsUpToastr();\n setIsDisconnectAlertOpen(false);\n history.replace(indexRoute);\n },\n });\n };\n\n useEffect(() => {\n if (isOutlookFetched) {\n queryClient.invalidateQueries({\n predicate: query => {\n const [key, id] = query.queryKey;\n\n return key === QUERY_KEYS.INTEGRATION_OUTLOOK && id !== ownerId;\n },\n });\n }\n }, [isOutlookFetched, queryClient, ownerId]);\n\n return {\n data,\n isLoading,\n isDestroying,\n isConnected: data?.connected,\n isDisconnectAlertOpen,\n setIsDisconnectAlertOpen,\n onDisconnect,\n onClose,\n errorMessage: data?.error,\n };\n};\n\nexport default useOutlook;\n","import { t } from \"i18next\";\n\nexport const ERROR_MESSAGES = {\n gmail_permission_not_given: t(\"neetoEmailDelivery.gmail.permissionNotGiven\"),\n outlook_permission_not_given: t(\n \"neetoEmailDelivery.outlook.permissionNotGiven\"\n ),\n outlook_invalid_client: t(\"neetoEmailDelivery.outlook.invalidClient\"),\n outlook_nil_json_web_token: t(\"neetoEmailDelivery.outlook.nilJsonWebToken\"),\n};\n","import { withT } from \"neetocommons/react-utils\";\nimport { Button, Tag, Typography } from \"neetoui\";\n\nconst IntegrationCard = withT(\n ({\n t,\n icon: Icon,\n title,\n description,\n isConnected,\n isDisconnecting,\n onConnect,\n onDisconnect,\n connectButtonText,\n disconnectButtonText = \"neetoEmailDelivery.sparkpost.emailDelivery.disconnect\",\n connectedTagText = \"neetoEmailDelivery.sparkpost.emailDelivery.connected\",\n }) => (\n <div className=\"neeto-ui-rounded-lg neeto-ui-shadow-xs neeto-ui-border-gray-300 translate flex flex-col gap-y-4 border p-6 no-underline transition-transform duration-300 ease-in-out outline-none hover:-translate-y-1\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex items-center gap-3\">\n <Icon className=\"shrink-0\" size={32} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <Typography style=\"h4\" weight=\"semibold\">\n {title}\n </Typography>\n {isConnected && <Tag label={t(connectedTagText)} />}\n </div>\n </div>\n </div>\n <Typography style=\"body2\">{description}</Typography>\n {connectButtonText && (\n <div className=\"flex gap-2\">\n {isConnected ? (\n <Button\n data-cy=\"disconnect-button\"\n label={t(disconnectButtonText)}\n loading={isDisconnecting}\n size=\"small\"\n style=\"danger\"\n onClick={onDisconnect}\n />\n ) : (\n <Button\n data-cy=\"connect-button\"\n label={t(connectButtonText)}\n size=\"small\"\n style=\"primary\"\n onClick={onConnect}\n />\n )}\n </div>\n )}\n </div>\n </div>\n )\n);\n\nexport default IntegrationCard;\n","import { humanize, isPresent } from \"neetocist\";\nimport { useQueryParams } from \"neetocommons/react-utils\";\nimport { buildUrl } from \"neetocommons/utils\";\nimport { MailSend } from \"neetoicons\";\nimport { Gmail as GmailIcon, Outlook as OutlookIcon } from \"neetoicons/misc\";\nimport { Spinner, Callout, Toastr } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n GMAIL_OAUTH_CONNECT_URL,\n OUTLOOK_OAUTH_CONNECT_URL,\n} from \"apis/integrations/constants\";\nimport useGmail from \"hooks/integrations/useGmail\";\nimport useOutlook from \"hooks/integrations/useOutlook\";\nimport useSparkpostDomain from \"hooks/integrations/useSparkpostDomain\";\n\nimport { ERROR_MESSAGES } from \"./constants\";\nimport IntegrationCard from \"./IntegrationCard\";\n\nconst EmailDeliveryScreen = ({\n indexRoute,\n ownerId,\n ownDomainSetupRoute,\n canManageIntegrations,\n}) => {\n const { t } = useTranslation();\n const history = useHistory();\n const { error, errorDescription } = useQueryParams();\n\n if (isPresent(error)) {\n let errorMessage = ERROR_MESSAGES[error];\n if (errorDescription) {\n errorMessage = `${errorMessage} ${errorDescription}`;\n }\n Toastr.error(errorMessage ?? humanize(error));\n\n history.replace(indexRoute);\n }\n\n const gmailIntegration = useGmail({\n ownerId,\n indexRoute,\n canManageIntegrations,\n });\n\n const outlookIntegration = useOutlook({\n ownerId,\n indexRoute,\n canManageIntegrations,\n });\n\n const sparkpostIntegration = useSparkpostDomain({\n ownerId,\n canManageIntegrations,\n });\n\n const {\n data: gmailData = {},\n isConnected: isGmailConnected,\n isLoading: isGmailLoading,\n isDestroying: isGmailDisconnecting,\n onDisconnect: onGmailDisconnect,\n } = gmailIntegration;\n\n const {\n data: outlookData = {},\n isConnected: isOutlookConnected,\n isLoading: isOutlookLoading,\n isDestroying: isOutlookDisconnecting,\n onDisconnect: onOutlookDisconnect,\n } = outlookIntegration;\n\n const {\n data: sparkpostData = {},\n isConnected: isSparkpostConnected,\n isLoading: isSparkpostLoading,\n onDisconnect: onSparkpostDisconnect,\n isDestroying: isSparkpostDisconnecting,\n } = sparkpostIntegration;\n\n const isLoading = isGmailLoading || isOutlookLoading || isSparkpostLoading;\n const hasActiveIntegration =\n isGmailConnected || isOutlookConnected || isSparkpostConnected;\n\n const handleGmailConnect = () => {\n window.location.href = buildUrl(GMAIL_OAUTH_CONNECT_URL, { ownerId });\n };\n\n const handleOutlookConnect = () => {\n window.location.href = buildUrl(OUTLOOK_OAUTH_CONNECT_URL, { ownerId });\n };\n\n const handleOwnDomainConnect = () => {\n history.push(ownDomainSetupRoute);\n };\n\n const gmailEmail = prop(\"email\", gmailData);\n const outlookEmail = prop(\"email\", outlookData);\n const sparkpostEmail = prop(\"email\", sparkpostData);\n\n const gmailTitle = t(\"neetoEmailDelivery.gmail.title\");\n const gmailDescription = isGmailConnected\n ? t(\"neetoEmailDelivery.sparkpost.emailDelivery.connectedEmail\", {\n email: gmailEmail,\n })\n : t(\"neetoEmailDelivery.gmail.description\");\n\n const outlookTitle = t(\"neetoEmailDelivery.outlook.title\");\n const outlookDescription = isOutlookConnected\n ? t(\"neetoEmailDelivery.sparkpost.emailDelivery.connectedEmail\", {\n email: outlookEmail,\n })\n : t(\"neetoEmailDelivery.outlook.description\");\n\n const ownDomainTitle = t(\n \"neetoEmailDelivery.sparkpost.emailDelivery.ownDomainTitle\"\n );\n\n const ownDomainDescription = isSparkpostConnected\n ? t(\"neetoEmailDelivery.sparkpost.emailDelivery.connectedEmail\", {\n email: sparkpostEmail,\n })\n : t(\"neetoEmailDelivery.sparkpost.emailDelivery.ownDomainDescription\");\n\n if (isLoading) {\n return (\n <div className=\"flex grow items-center justify-center w-full\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <div className=\"min-h-0 w-full grow\">\n <div className=\"@container mx-auto space-y-6\">\n <div className=\"grid grid-cols-1 gap-3 py-1 @lg:grid-cols-2 @lg:gap-6 @3xl:grid-cols-3 @7xl:grid-cols-4\">\n {/* Gmail Option */}\n {(!hasActiveIntegration || isGmailConnected) && (\n <IntegrationCard\n connectButtonText=\"neetoEmailDelivery.gmail.connectGmail\"\n description={gmailDescription}\n icon={GmailIcon}\n isConnected={isGmailConnected}\n isDisconnecting={isGmailDisconnecting}\n title={gmailTitle}\n onConnect={handleGmailConnect}\n onDisconnect={onGmailDisconnect}\n />\n )}\n {/* Outlook Option */}\n {(!hasActiveIntegration || isOutlookConnected) && (\n <IntegrationCard\n connectButtonText=\"neetoEmailDelivery.outlook.connectOutlook\"\n description={outlookDescription}\n icon={OutlookIcon}\n isConnected={isOutlookConnected}\n isDisconnecting={isOutlookDisconnecting}\n title={outlookTitle}\n onConnect={handleOutlookConnect}\n onDisconnect={onOutlookDisconnect}\n />\n )}\n {/* Own Domain (Sparkpost) Option */}\n {(!hasActiveIntegration || isSparkpostConnected) && (\n <IntegrationCard\n connectButtonText=\"neetoEmailDelivery.sparkpost.emailDelivery.setupDomain\"\n description={ownDomainDescription}\n icon={MailSend}\n isConnected={isSparkpostConnected}\n isDisconnecting={isSparkpostDisconnecting}\n title={ownDomainTitle}\n onConnect={handleOwnDomainConnect}\n onDisconnect={onSparkpostDisconnect}\n />\n )}\n </div>\n {hasActiveIntegration && (\n <Callout style=\"success\">\n {isGmailConnected\n ? t(\"neetoEmailDelivery.gmail.gmailConfigured\")\n : isOutlookConnected\n ? t(\"neetoEmailDelivery.outlook.outlookConfigured\")\n : t(\"neetoEmailDelivery.sparkpost.ownDomainConfigured\")}\n </Callout>\n )}\n </div>\n </div>\n );\n};\n\nexport default EmailDeliveryScreen;\n"],"names":["useGmail","_ref","ownerId","indexRoute","canManageIntegrations","_useState","useState","_useState2","_slicedToArray","isDisconnectAlertOpen","setIsDisconnectAlertOpen","history","useHistory","queryClient","useQueryClient","_useFetchGmail","useFetchGmail","enabled","isLoading","_useFetchGmail$data","data","isGmailFetched","isSuccess","_useDestroyGmail","useDestroyGmail","isDestroying","isPending","destroyIntegration","mutate","onClose","replace","onDisconnect","onSuccess","showThumbsUpToastr","useEffect","invalidateQueries","predicate","query","_query$queryKey","queryKey","key","id","QUERY_KEYS","INTEGRATION_GMAIL","isConnected","connected","errorMessage","error","useOutlook","_useFetchOutlook","useFetchOutlook","_useFetchOutlook$data","isOutlookFetched","_useDestroyOutlook","useDestroyOutlook","INTEGRATION_OUTLOOK","ERROR_MESSAGES","gmail_permission_not_given","t","outlook_permission_not_given","outlook_invalid_client","outlook_nil_json_web_token","IntegrationCard","withT","Icon","icon","title","description","isDisconnecting","onConnect","connectButtonText","_ref$disconnectButton","disconnectButtonText","_ref$connectedTagText","connectedTagText","_jsx","className","children","_jsxs","size","Typography","style","weight","Tag","label","Button","loading","onClick","EmailDeliveryScreen","ownDomainSetupRoute","_useTranslation","useTranslation","_useQueryParams","useQueryParams","errorDescription","isPresent","_errorMessage","concat","Toastr","humanize","gmailIntegration","outlookIntegration","sparkpostIntegration","useSparkpostDomain","_gmailIntegration$dat","gmailData","isGmailConnected","isGmailLoading","isGmailDisconnecting","onGmailDisconnect","_outlookIntegration$d","outlookData","isOutlookConnected","isOutlookLoading","isOutlookDisconnecting","onOutlookDisconnect","_sparkpostIntegration","sparkpostData","isSparkpostConnected","isSparkpostLoading","onSparkpostDisconnect","isSparkpostDisconnecting","hasActiveIntegration","handleGmailConnect","window","location","href","buildUrl","GMAIL_OAUTH_CONNECT_URL","handleOutlookConnect","OUTLOOK_OAUTH_CONNECT_URL","handleOwnDomainConnect","push","gmailEmail","prop","outlookEmail","sparkpostEmail","gmailTitle","gmailDescription","email","outlookTitle","outlookDescription","ownDomainTitle","ownDomainDescription","Spinner","GmailIcon","OutlookIcon","MailSend","Callout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,IAAMA,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA,EAAuD;AAAA,EAAA,IAAjDC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAEC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IAAEC,qBAAqB,GAAAH,IAAA,CAArBG,qBAAqB;AAC5D,EAAA,IAAAC,SAAA,GAA0DC,QAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAlEI,IAAAA,qBAAqB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,wBAAwB,GAAAH,UAAA,CAAA,CAAA,CAAA;AAEtD,EAAA,IAAMI,OAAO,GAAGC,UAAU,EAAE;AAE5B,EAAA,IAAMC,WAAW,GAAGC,cAAc,EAAE;AAEpC,EAAA,IAAAC,cAAA,GAIIC,aAAa,CAACd,OAAO,EAAE;AAAEe,MAAAA,OAAO,EAAEb;AAAsB,KAAC,CAAC;IAH5Dc,SAAS,GAAAH,cAAA,CAATG,SAAS;IAAAC,mBAAA,GAAAJ,cAAA,CACTK,IAAI;AAAJA,IAAAA,IAAI,GAAAD,mBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,mBAAA;IACEE,cAAc,GAAAN,cAAA,CAAzBO,SAAS;EAGX,IAAAC,gBAAA,GACEC,eAAe,CAAC;AAAEtB,MAAAA,OAAO,EAAPA;AAAQ,KAAC,CAAC;IADXuB,YAAY,GAAAF,gBAAA,CAAvBG,SAAS;IAAwBC,kBAAkB,GAAAJ,gBAAA,CAA1BK,MAAM;AAGvC,EAAA,IAAMC,OAAO,GAAG,SAAVA,OAAOA,GAAA;AAAA,IAAA,OAASlB,OAAO,CAACmB,OAAO,CAAC3B,UAAU,CAAC;AAAA,GAAA;AAEjD,EAAA,IAAM4B,YAAY,GAAG,SAAfA,YAAYA,GAAS;IACzBJ,kBAAkB,CAAC,KAAK,EAAE;AACxBK,MAAAA,SAAS,EAAE,SAAXA,SAASA,GAAQ;AACfC,QAAAA,kBAAkB,EAAE;QACpBvB,wBAAwB,CAAC,KAAK,CAAC;AAC/BC,QAAAA,OAAO,CAACmB,OAAO,CAAC3B,UAAU,CAAC;AAC7B;AACF,KAAC,CAAC;GACH;AAED+B,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAIb,cAAc,EAAE;MAClBR,WAAW,CAACsB,iBAAiB,CAAC;AAC5BC,QAAAA,SAAS,EAAE,SAAXA,SAASA,CAAEC,KAAK,EAAI;AAClB,UAAA,IAAAC,eAAA,GAAA9B,cAAA,CAAkB6B,KAAK,CAACE,QAAQ,EAAA,CAAA,CAAA;AAAzBC,YAAAA,GAAG,GAAAF,eAAA,CAAA,CAAA,CAAA;AAAEG,YAAAA,EAAE,GAAAH,eAAA,CAAA,CAAA,CAAA;UAEd,OAAOE,GAAG,KAAKE,UAAU,CAACC,iBAAiB,IAAIF,EAAE,KAAKvC,OAAO;AAC/D;AACF,OAAC,CAAC;AACJ;GACD,EAAE,CAACmB,cAAc,EAAER,WAAW,EAAEX,OAAO,CAAC,CAAC;EAE1C,OAAO;AACLkB,IAAAA,IAAI,EAAJA,IAAI;AACJF,IAAAA,SAAS,EAATA,SAAS;AACTO,IAAAA,YAAY,EAAZA,YAAY;AACZmB,IAAAA,WAAW,EAAExB,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEyB,SAAS;AAC5BpC,IAAAA,qBAAqB,EAArBA,qBAAqB;AACrBC,IAAAA,wBAAwB,EAAxBA,wBAAwB;AACxBqB,IAAAA,YAAY,EAAZA,YAAY;AACZF,IAAAA,OAAO,EAAPA,OAAO;AACPiB,IAAAA,YAAY,EAAE1B,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJA,IAAI,CAAE2B;GACrB;AACH,CAAC;;ACnDD,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAA/C,IAAA,EAAuD;AAAA,EAAA,IAAjDC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAEC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IAAEC,qBAAqB,GAAAH,IAAA,CAArBG,qBAAqB;AAC9D,EAAA,IAAAC,SAAA,GAA0DC,QAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAlEI,IAAAA,qBAAqB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,wBAAwB,GAAAH,UAAA,CAAA,CAAA,CAAA;AAEtD,EAAA,IAAMI,OAAO,GAAGC,UAAU,EAAE;AAE5B,EAAA,IAAMC,WAAW,GAAGC,cAAc,EAAE;AAEpC,EAAA,IAAAmC,gBAAA,GAIIC,eAAe,CAAChD,OAAO,EAAE;AAAEe,MAAAA,OAAO,EAAEb;AAAsB,KAAC,CAAC;IAH9Dc,SAAS,GAAA+B,gBAAA,CAAT/B,SAAS;IAAAiC,qBAAA,GAAAF,gBAAA,CACT7B,IAAI;AAAJA,IAAAA,IAAI,GAAA+B,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IACEC,gBAAgB,GAAAH,gBAAA,CAA3B3B,SAAS;EAGX,IAAA+B,kBAAA,GACEC,iBAAiB,CAAC;AAAEpD,MAAAA,OAAO,EAAPA;AAAQ,KAAC,CAAC;IADbuB,YAAY,GAAA4B,kBAAA,CAAvB3B,SAAS;IAAwBC,kBAAkB,GAAA0B,kBAAA,CAA1BzB,MAAM;AAGvC,EAAA,IAAMC,OAAO,GAAG,SAAVA,OAAOA,GAAA;AAAA,IAAA,OAASlB,OAAO,CAACmB,OAAO,CAAC3B,UAAU,CAAC;AAAA,GAAA;AAEjD,EAAA,IAAM4B,YAAY,GAAG,SAAfA,YAAYA,GAAS;IACzBJ,kBAAkB,CAAC,KAAK,EAAE;AACxBK,MAAAA,SAAS,EAAE,SAAXA,SAASA,GAAQ;AACfC,QAAAA,kBAAkB,EAAE;QACpBvB,wBAAwB,CAAC,KAAK,CAAC;AAC/BC,QAAAA,OAAO,CAACmB,OAAO,CAAC3B,UAAU,CAAC;AAC7B;AACF,KAAC,CAAC;GACH;AAED+B,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAIkB,gBAAgB,EAAE;MACpBvC,WAAW,CAACsB,iBAAiB,CAAC;AAC5BC,QAAAA,SAAS,EAAE,SAAXA,SAASA,CAAEC,KAAK,EAAI;AAClB,UAAA,IAAAC,eAAA,GAAA9B,cAAA,CAAkB6B,KAAK,CAACE,QAAQ,EAAA,CAAA,CAAA;AAAzBC,YAAAA,GAAG,GAAAF,eAAA,CAAA,CAAA,CAAA;AAAEG,YAAAA,EAAE,GAAAH,eAAA,CAAA,CAAA,CAAA;UAEd,OAAOE,GAAG,KAAKE,UAAU,CAACa,mBAAmB,IAAId,EAAE,KAAKvC,OAAO;AACjE;AACF,OAAC,CAAC;AACJ;GACD,EAAE,CAACkD,gBAAgB,EAAEvC,WAAW,EAAEX,OAAO,CAAC,CAAC;EAE5C,OAAO;AACLkB,IAAAA,IAAI,EAAJA,IAAI;AACJF,IAAAA,SAAS,EAATA,SAAS;AACTO,IAAAA,YAAY,EAAZA,YAAY;AACZmB,IAAAA,WAAW,EAAExB,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEyB,SAAS;AAC5BpC,IAAAA,qBAAqB,EAArBA,qBAAqB;AACrBC,IAAAA,wBAAwB,EAAxBA,wBAAwB;AACxBqB,IAAAA,YAAY,EAAZA,YAAY;AACZF,IAAAA,OAAO,EAAPA,OAAO;AACPiB,IAAAA,YAAY,EAAE1B,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJA,IAAI,CAAE2B;GACrB;AACH,CAAC;;AC7DM,IAAMS,cAAc,GAAG;AAC5BC,EAAAA,0BAA0B,EAAEC,CAAC,CAAC,6CAA6C,CAAC;AAC5EC,EAAAA,4BAA4B,EAAED,CAAC,CAC7B,+CACF,CAAC;AACDE,EAAAA,sBAAsB,EAAEF,CAAC,CAAC,0CAA0C,CAAC;EACrEG,0BAA0B,EAAEH,CAAC,CAAC,4CAA4C;AAC5E,CAAC;;ACND,IAAMI,eAAe,GAAGC,KAAK,CAC3B,UAAA9D,IAAA,EAAA;AAAA,EAAA,IACEyD,CAAC,GAAAzD,IAAA,CAADyD,CAAC;IACKM,IAAI,GAAA/D,IAAA,CAAVgE,IAAI;IACJC,KAAK,GAAAjE,IAAA,CAALiE,KAAK;IACLC,WAAW,GAAAlE,IAAA,CAAXkE,WAAW;IACXvB,WAAW,GAAA3C,IAAA,CAAX2C,WAAW;IACXwB,eAAe,GAAAnE,IAAA,CAAfmE,eAAe;IACfC,SAAS,GAAApE,IAAA,CAAToE,SAAS;IACTtC,YAAY,GAAA9B,IAAA,CAAZ8B,YAAY;IACZuC,iBAAiB,GAAArE,IAAA,CAAjBqE,iBAAiB;IAAAC,qBAAA,GAAAtE,IAAA,CACjBuE,oBAAoB;AAApBA,IAAAA,oBAAoB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,uDAAuD,GAAAA,qBAAA;IAAAE,qBAAA,GAAAxE,IAAA,CAC9EyE,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,sDAAsD,GAAAA,qBAAA;AAAA,EAAA,oBAEzEE,GAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,yMAAyM;AAAAC,IAAAA,QAAA,eACtNC,IAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,qBAAqB;AAAAC,MAAAA,QAAA,gBAClCC,IAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,SAAS,EAAC,yBAAyB;QAAAC,QAAA,EAAA,cACtCF,GAAA,CAACX,IAAI,EAAA;AAACY,UAAAA,SAAS,EAAC,UAAU;AAACG,UAAAA,IAAI,EAAE;SAAK,CAAC,eACvCJ,GAAA,CAAA,KAAA,EAAA;AAAKC,UAAAA,SAAS,EAAC,gBAAgB;AAAAC,UAAAA,QAAA,eAC7BC,IAAA,CAAA,KAAA,EAAA;AAAKF,YAAAA,SAAS,EAAC,yBAAyB;YAAAC,QAAA,EAAA,cACtCF,GAAA,CAACK,UAAU,EAAA;AAACC,cAAAA,KAAK,EAAC,IAAI;AAACC,cAAAA,MAAM,EAAC,UAAU;AAAAL,cAAAA,QAAA,EACrCX;AAAK,aACI,CAAC,EACZtB,WAAW,iBAAI+B,GAAA,CAACQ,GAAG,EAAA;cAACC,KAAK,EAAE1B,CAAC,CAACgB,gBAAgB;AAAE,aAAE,CAAC;WAChD;AAAC,SACH,CAAC;AAAA,OACH,CAAC,eACNC,GAAA,CAACK,UAAU,EAAA;AAACC,QAAAA,KAAK,EAAC,OAAO;AAAAJ,QAAAA,QAAA,EAAEV;AAAW,OAAa,CAAC,EACnDG,iBAAiB,iBAChBK,GAAA,CAAA,KAAA,EAAA;AAAKC,QAAAA,SAAS,EAAC,YAAY;AAAAC,QAAAA,QAAA,EACxBjC,WAAW,gBACV+B,GAAA,CAACU,MAAM,EAAA;AACL,UAAA,SAAA,EAAQ,mBAAmB;AAC3BD,UAAAA,KAAK,EAAE1B,CAAC,CAACc,oBAAoB,CAAE;AAC/Bc,UAAAA,OAAO,EAAElB,eAAgB;AACzBW,UAAAA,IAAI,EAAC,OAAO;AACZE,UAAAA,KAAK,EAAC,QAAQ;AACdM,UAAAA,OAAO,EAAExD;AAAa,SACvB,CAAC,gBAEF4C,GAAA,CAACU,MAAM,EAAA;AACL,UAAA,SAAA,EAAQ,gBAAgB;AACxBD,UAAAA,KAAK,EAAE1B,CAAC,CAACY,iBAAiB,CAAE;AAC5BS,UAAAA,IAAI,EAAC,OAAO;AACZE,UAAAA,KAAK,EAAC,SAAS;AACfM,UAAAA,OAAO,EAAElB;SACV;AACF,OACE,CACN;KACE;AAAC,GACH,CAAC;AAAA,CAEV,CAAC;;ACnCD,IAAMmB,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAvF,IAAA,EAKnB;AAAA,EAAA,IAJJE,UAAU,GAAAF,IAAA,CAAVE,UAAU;IACVD,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPuF,mBAAmB,GAAAxF,IAAA,CAAnBwF,mBAAmB;IACnBrF,qBAAqB,GAAAH,IAAA,CAArBG,qBAAqB;AAErB,EAAA,IAAAsF,eAAA,GAAcC,cAAc,EAAE;IAAtBjC,CAAC,GAAAgC,eAAA,CAADhC,CAAC;AACT,EAAA,IAAM/C,OAAO,GAAGC,UAAU,EAAE;AAC5B,EAAA,IAAAgF,eAAA,GAAoCC,cAAc,EAAE;IAA5C9C,KAAK,GAAA6C,eAAA,CAAL7C,KAAK;IAAE+C,gBAAgB,GAAAF,eAAA,CAAhBE,gBAAgB;AAE/B,EAAA,IAAIC,SAAS,CAAChD,KAAK,CAAC,EAAE;AAAA,IAAA,IAAAiD,aAAA;AACpB,IAAA,IAAIlD,YAAY,GAAGU,cAAc,CAACT,KAAK,CAAC;AACxC,IAAA,IAAI+C,gBAAgB,EAAE;MACpBhD,YAAY,GAAA,EAAA,CAAAmD,MAAA,CAAMnD,YAAY,OAAAmD,MAAA,CAAIH,gBAAgB,CAAE;AACtD;AACAI,IAAAA,MAAM,CAACnD,KAAK,CAAAiD,CAAAA,aAAA,GAAClD,YAAY,MAAA,IAAA,IAAAkD,aAAA,KAAA,KAAA,CAAA,GAAAA,aAAA,GAAIG,QAAQ,CAACpD,KAAK,CAAC,CAAC;AAE7CpC,IAAAA,OAAO,CAACmB,OAAO,CAAC3B,UAAU,CAAC;AAC7B;EAEA,IAAMiG,gBAAgB,GAAGpG,QAAQ,CAAC;AAChCE,IAAAA,OAAO,EAAPA,OAAO;AACPC,IAAAA,UAAU,EAAVA,UAAU;AACVC,IAAAA,qBAAqB,EAArBA;AACF,GAAC,CAAC;EAEF,IAAMiG,kBAAkB,GAAGrD,UAAU,CAAC;AACpC9C,IAAAA,OAAO,EAAPA,OAAO;AACPC,IAAAA,UAAU,EAAVA,UAAU;AACVC,IAAAA,qBAAqB,EAArBA;AACF,GAAC,CAAC;EAEF,IAAMkG,oBAAoB,GAAGC,kBAAkB,CAAC;AAC9CrG,IAAAA,OAAO,EAAPA,OAAO;AACPE,IAAAA,qBAAqB,EAArBA;AACF,GAAC,CAAC;AAEF,EAAA,IAAAoG,qBAAA,GAMIJ,gBAAgB,CALlBhF,IAAI;AAAEqF,IAAAA,SAAS,GAAAD,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IACPE,gBAAgB,GAI3BN,gBAAgB,CAJlBxD,WAAW;IACA+D,cAAc,GAGvBP,gBAAgB,CAHlBlF,SAAS;IACK0F,oBAAoB,GAEhCR,gBAAgB,CAFlB3E,YAAY;IACEoF,iBAAiB,GAC7BT,gBAAgB,CADlBrE,YAAY;AAGd,EAAA,IAAA+E,qBAAA,GAMIT,kBAAkB,CALpBjF,IAAI;AAAE2F,IAAAA,WAAW,GAAAD,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IACTE,kBAAkB,GAI7BX,kBAAkB,CAJpBzD,WAAW;IACAqE,gBAAgB,GAGzBZ,kBAAkB,CAHpBnF,SAAS;IACKgG,sBAAsB,GAElCb,kBAAkB,CAFpB5E,YAAY;IACE0F,mBAAmB,GAC/Bd,kBAAkB,CADpBtE,YAAY;AAGd,EAAA,IAAAqF,qBAAA,GAMId,oBAAoB,CALtBlF,IAAI;AAAEiG,IAAAA,aAAa,GAAAD,qBAAA,KAAA,KAAA,CAAA,GAAG,EAAE,GAAAA,qBAAA;IACXE,oBAAoB,GAI/BhB,oBAAoB,CAJtB1D,WAAW;IACA2E,kBAAkB,GAG3BjB,oBAAoB,CAHtBpF,SAAS;IACKsG,qBAAqB,GAEjClB,oBAAoB,CAFtBvE,YAAY;IACE0F,wBAAwB,GACpCnB,oBAAoB,CADtB7E,YAAY;AAGd,EAAA,IAAMP,SAAS,GAAGyF,cAAc,IAAIM,gBAAgB,IAAIM,kBAAkB;AAC1E,EAAA,IAAMG,oBAAoB,GACxBhB,gBAAgB,IAAIM,kBAAkB,IAAIM,oBAAoB;AAEhE,EAAA,IAAMK,kBAAkB,GAAG,SAArBA,kBAAkBA,GAAS;IAC/BC,MAAM,CAACC,QAAQ,CAACC,IAAI,GAAGC,QAAQ,CAACC,uBAAuB,EAAE;AAAE9H,MAAAA,OAAO,EAAPA;AAAQ,KAAC,CAAC;GACtE;AAED,EAAA,IAAM+H,oBAAoB,GAAG,SAAvBA,oBAAoBA,GAAS;IACjCL,MAAM,CAACC,QAAQ,CAACC,IAAI,GAAGC,QAAQ,CAACG,yBAAyB,EAAE;AAAEhI,MAAAA,OAAO,EAAPA;AAAQ,KAAC,CAAC;GACxE;AAED,EAAA,IAAMiI,sBAAsB,GAAG,SAAzBA,sBAAsBA,GAAS;AACnCxH,IAAAA,OAAO,CAACyH,IAAI,CAAC3C,mBAAmB,CAAC;GAClC;AAED,EAAA,IAAM4C,UAAU,GAAGC,IAAI,CAAC,OAAO,EAAE7B,SAAS,CAAC;AAC3C,EAAA,IAAM8B,YAAY,GAAGD,IAAI,CAAC,OAAO,EAAEvB,WAAW,CAAC;AAC/C,EAAA,IAAMyB,cAAc,GAAGF,IAAI,CAAC,OAAO,EAAEjB,aAAa,CAAC;AAEnD,EAAA,IAAMoB,UAAU,GAAG/E,CAAC,CAAC,gCAAgC,CAAC;AACtD,EAAA,IAAMgF,gBAAgB,GAAGhC,gBAAgB,GACrChD,CAAC,CAAC,2DAA2D,EAAE;AAC7DiF,IAAAA,KAAK,EAAEN;AACT,GAAC,CAAC,GACF3E,CAAC,CAAC,sCAAsC,CAAC;AAE7C,EAAA,IAAMkF,YAAY,GAAGlF,CAAC,CAAC,kCAAkC,CAAC;AAC1D,EAAA,IAAMmF,kBAAkB,GAAG7B,kBAAkB,GACzCtD,CAAC,CAAC,2DAA2D,EAAE;AAC7DiF,IAAAA,KAAK,EAAEJ;AACT,GAAC,CAAC,GACF7E,CAAC,CAAC,wCAAwC,CAAC;AAE/C,EAAA,IAAMoF,cAAc,GAAGpF,CAAC,CACtB,2DACF,CAAC;AAED,EAAA,IAAMqF,oBAAoB,GAAGzB,oBAAoB,GAC7C5D,CAAC,CAAC,2DAA2D,EAAE;AAC7DiF,IAAAA,KAAK,EAAEH;AACT,GAAC,CAAC,GACF9E,CAAC,CAAC,iEAAiE,CAAC;AAExE,EAAA,IAAIxC,SAAS,EAAE;AACb,IAAA,oBACEyD,GAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,8CAA8C;AAAAC,MAAAA,QAAA,eAC3DF,GAAA,CAACqE,OAAO,EAAE,EAAA;AAAC,KACR,CAAC;AAEV;AAEA,EAAA,oBACErE,GAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,qBAAqB;AAAAC,IAAAA,QAAA,eAClCC,IAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,8BAA8B;AAAAC,MAAAA,QAAA,gBAC3CC,IAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,SAAS,EAAC,yFAAyF;QAAAC,QAAA,EAAA,CAErG,CAAC,CAAC6C,oBAAoB,IAAIhB,gBAAgB,kBACzC/B,GAAA,CAACb,eAAe,EAAA;AACdQ,UAAAA,iBAAiB,EAAC,uCAAuC;AACzDH,UAAAA,WAAW,EAAEuE,gBAAiB;AAC9BzE,UAAAA,IAAI,EAAEgF,SAAU;AAChBrG,UAAAA,WAAW,EAAE8D,gBAAiB;AAC9BtC,UAAAA,eAAe,EAAEwC,oBAAqB;AACtC1C,UAAAA,KAAK,EAAEuE,UAAW;AAClBpE,UAAAA,SAAS,EAAEsD,kBAAmB;AAC9B5F,UAAAA,YAAY,EAAE8E;SACf,CACF,EAEA,CAAC,CAACa,oBAAoB,IAAIV,kBAAkB,kBAC3CrC,GAAA,CAACb,eAAe,EAAA;AACdQ,UAAAA,iBAAiB,EAAC,2CAA2C;AAC7DH,UAAAA,WAAW,EAAE0E,kBAAmB;AAChC5E,UAAAA,IAAI,EAAEiF,WAAY;AAClBtG,UAAAA,WAAW,EAAEoE,kBAAmB;AAChC5C,UAAAA,eAAe,EAAE8C,sBAAuB;AACxChD,UAAAA,KAAK,EAAE0E,YAAa;AACpBvE,UAAAA,SAAS,EAAE4D,oBAAqB;AAChClG,UAAAA,YAAY,EAAEoF;SACf,CACF,EAEA,CAAC,CAACO,oBAAoB,IAAIJ,oBAAoB,kBAC7C3C,GAAA,CAACb,eAAe,EAAA;AACdQ,UAAAA,iBAAiB,EAAC,wDAAwD;AAC1EH,UAAAA,WAAW,EAAE4E,oBAAqB;AAClC9E,UAAAA,IAAI,EAAEkF,QAAS;AACfvG,UAAAA,WAAW,EAAE0E,oBAAqB;AAClClD,UAAAA,eAAe,EAAEqD,wBAAyB;AAC1CvD,UAAAA,KAAK,EAAE4E,cAAe;AACtBzE,UAAAA,SAAS,EAAE8D,sBAAuB;AAClCpG,UAAAA,YAAY,EAAEyF;AAAsB,SACrC,CACF;AAAA,OACE,CAAC,EACLE,oBAAoB,iBACnB/C,GAAA,CAACyE,OAAO,EAAA;AAACnE,QAAAA,KAAK,EAAC,SAAS;AAAAJ,QAAAA,QAAA,EACrB6B,gBAAgB,GACbhD,CAAC,CAAC,0CAA0C,CAAC,GAC7CsD,kBAAkB,GAChBtD,CAAC,CAAC,8CAA8C,CAAC,GACjDA,CAAC,CAAC,kDAAkD;AAAC,OACpD,CACV;KACE;AAAC,GACH,CAAC;AAEV;;;;"}
1
+ {"version":3,"file":"EmailDeliveryScreen.js","sources":["../app/javascript/src/hooks/integrations/useGmail.js","../app/javascript/src/hooks/integrations/useOutlook.js","../app/javascript/src/components/EmailDeliveryScreen/constants.js","../app/javascript/src/components/EmailDeliveryScreen/IntegrationCard.jsx","../app/javascript/src/components/EmailDeliveryScreen/index.jsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { showThumbsUpToastr } from \"neetocommons/utils\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n useFetchGmail,\n useDestroyGmail,\n} from \"hooks/reactQuery/integrations/useGmailIntegrationApi\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst useGmail = ({ ownerId, indexRoute, canManageIntegrations }) => {\n const [isDisconnectAlertOpen, setIsDisconnectAlertOpen] = useState(false);\n\n const history = useHistory();\n\n const queryClient = useQueryClient();\n\n const {\n isLoading,\n data = {},\n isSuccess: isGmailFetched,\n } = useFetchGmail(ownerId, { enabled: canManageIntegrations });\n\n const { isPending: isDestroying, mutate: destroyIntegration } =\n useDestroyGmail({ ownerId });\n\n const onClose = () => history.replace(indexRoute);\n\n const onDisconnect = () => {\n destroyIntegration(false, {\n onSuccess: () => {\n showThumbsUpToastr();\n setIsDisconnectAlertOpen(false);\n history.replace(indexRoute);\n },\n });\n };\n\n useEffect(() => {\n if (isGmailFetched) {\n queryClient.invalidateQueries({\n predicate: query => {\n const [key, id] = query.queryKey;\n\n return key === QUERY_KEYS.INTEGRATION_GMAIL && id !== ownerId;\n },\n });\n }\n }, [isGmailFetched, queryClient, ownerId]);\n\n return {\n data,\n isLoading,\n isDestroying,\n exists: data?.exists,\n isConnected: data?.connected,\n isDisconnectAlertOpen,\n setIsDisconnectAlertOpen,\n onDisconnect,\n onClose,\n errorMessage: data?.error,\n };\n};\n\nexport default useGmail;\n","import { useEffect, useState } from \"react\";\n\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { showThumbsUpToastr } from \"neetocommons/utils\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n useFetchOutlook,\n useDestroyOutlook,\n} from \"hooks/reactQuery/integrations/useOutlookIntegrationApi\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst useOutlook = ({ ownerId, indexRoute, canManageIntegrations }) => {\n const [isDisconnectAlertOpen, setIsDisconnectAlertOpen] = useState(false);\n\n const history = useHistory();\n\n const queryClient = useQueryClient();\n\n const {\n isLoading,\n data = {},\n isSuccess: isOutlookFetched,\n } = useFetchOutlook(ownerId, { enabled: canManageIntegrations });\n\n const { isPending: isDestroying, mutate: destroyIntegration } =\n useDestroyOutlook({ ownerId });\n\n const onClose = () => history.replace(indexRoute);\n\n const onDisconnect = () => {\n destroyIntegration(false, {\n onSuccess: () => {\n showThumbsUpToastr();\n setIsDisconnectAlertOpen(false);\n history.replace(indexRoute);\n },\n });\n };\n\n useEffect(() => {\n if (isOutlookFetched) {\n queryClient.invalidateQueries({\n predicate: query => {\n const [key, id] = query.queryKey;\n\n return key === QUERY_KEYS.INTEGRATION_OUTLOOK && id !== ownerId;\n },\n });\n }\n }, [isOutlookFetched, queryClient, ownerId]);\n\n return {\n data,\n isLoading,\n exists: data?.exists,\n status: data?.status,\n shadowAccount: data?.shadowAccount,\n isWaitingForTestEmail: data?.status === \"inactive\" && !data?.connected,\n isDestroying,\n isConnected: data?.connected,\n isDisconnectAlertOpen,\n setIsDisconnectAlertOpen,\n onDisconnect,\n onClose,\n errorMessage: data?.error,\n };\n};\n\nexport default useOutlook;\n","import { t } from \"i18next\";\n\nexport const ERROR_MESSAGES = {\n gmail_permission_not_given: t(\"neetoEmailDelivery.gmail.permissionNotGiven\"),\n outlook_permission_not_given: t(\n \"neetoEmailDelivery.outlook.permissionNotGiven\"\n ),\n outlook_invalid_client: t(\"neetoEmailDelivery.outlook.invalidClient\"),\n outlook_nil_json_web_token: t(\"neetoEmailDelivery.outlook.nilJsonWebToken\"),\n};\n","import { Button, Tag, Typography } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst IntegrationCard = ({\n icon: Icon,\n title,\n description,\n isConnected,\n isDisconnecting,\n onConnect,\n onDisconnect,\n connectButtonText,\n disconnectButtonText = \"neetoEmailDelivery.sparkpost.emailDelivery.disconnect\",\n connectedTagText = \"neetoEmailDelivery.sparkpost.emailDelivery.connected\",\n showDisconnect = false,\n}) => {\n const { t } = useTranslation();\n\n const shouldShowDisconnect = isConnected || showDisconnect;\n\n return (\n <div className=\"neeto-ui-rounded-lg neeto-ui-shadow-xs neeto-ui-border-gray-300 translate flex flex-col gap-y-4 border p-6 no-underline transition-transform duration-300 ease-in-out outline-none hover:-translate-y-1\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex items-center gap-3\">\n <Icon className=\"shrink-0\" size={32} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <Typography style=\"h4\" weight=\"semibold\">\n {title}\n </Typography>\n {isConnected && <Tag label={t(connectedTagText)} />}\n </div>\n </div>\n </div>\n <Typography style=\"body2\">{description}</Typography>\n {connectButtonText && (\n <div className=\"flex gap-2\">\n {shouldShowDisconnect ? (\n <Button\n data-cy=\"disconnect-button\"\n label={t(disconnectButtonText)}\n loading={isDisconnecting}\n size=\"small\"\n style=\"danger\"\n onClick={onDisconnect}\n />\n ) : (\n <Button\n data-cy=\"connect-button\"\n label={t(connectButtonText)}\n size=\"small\"\n style=\"primary\"\n onClick={onConnect}\n />\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default IntegrationCard;\n","import { humanize, isPresent } from \"neetocist\";\nimport { useQueryParams } from \"neetocommons/react-utils\";\nimport { buildUrl } from \"neetocommons/utils\";\nimport { MailSend } from \"neetoicons\";\nimport { Gmail as GmailIcon, Outlook as OutlookIcon } from \"neetoicons/misc\";\nimport { Spinner, Callout, Toastr } from \"neetoui\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n GMAIL_OAUTH_CONNECT_URL,\n OUTLOOK_OAUTH_CONNECT_URL,\n} from \"apis/integrations/constants\";\nimport useGmail from \"hooks/integrations/useGmail\";\nimport useOutlook from \"hooks/integrations/useOutlook\";\nimport useSparkpostDomain from \"hooks/integrations/useSparkpostDomain\";\n\nimport { ERROR_MESSAGES } from \"./constants\";\nimport IntegrationCard from \"./IntegrationCard\";\n\nconst EmailDeliveryScreen = ({\n indexRoute,\n ownerId,\n ownDomainSetupRoute,\n canManageIntegrations,\n}) => {\n const { t } = useTranslation();\n const history = useHistory();\n const { error, errorDescription } = useQueryParams();\n\n if (isPresent(error)) {\n let errorMessage = ERROR_MESSAGES[error];\n if (errorDescription) {\n errorMessage = `${errorMessage} ${errorDescription}`;\n }\n Toastr.error(errorMessage ?? humanize(error));\n\n history.replace(indexRoute);\n }\n\n const gmailIntegration = useGmail({\n ownerId,\n indexRoute,\n canManageIntegrations,\n });\n\n const outlookIntegration = useOutlook({\n ownerId,\n indexRoute,\n canManageIntegrations,\n });\n\n const sparkpostIntegration = useSparkpostDomain({\n ownerId,\n canManageIntegrations,\n });\n\n const {\n data: gmailData = {},\n isConnected: isGmailConnected,\n isLoading: isGmailLoading,\n isDestroying: isGmailDisconnecting,\n onDisconnect: onGmailDisconnect,\n exists: isGmailExists,\n } = gmailIntegration;\n\n const {\n data: outlookData = {},\n isConnected: isOutlookConnected,\n isLoading: isOutlookLoading,\n isDestroying: isOutlookDisconnecting,\n isWaitingForTestEmail: isOutlookWaitingForTestEmail,\n shadowAccount: isOutlookShadowAccount,\n onDisconnect: onOutlookDisconnect,\n exists: isOutlookExists,\n } = outlookIntegration;\n\n const {\n data: sparkpostData = {},\n isConnected: isSparkpostConnected,\n isLoading: isSparkpostLoading,\n onDisconnect: onSparkpostDisconnect,\n isDestroying: isSparkpostDisconnecting,\n exists: isSparkpostExists,\n } = sparkpostIntegration;\n\n const isLoading = isGmailLoading || isOutlookLoading || isSparkpostLoading;\n const noneExists = !isGmailExists && !isOutlookExists && !isSparkpostExists;\n const showGmail = noneExists || isGmailExists;\n const showOutlook = noneExists || isOutlookExists;\n const showSparkpost = noneExists || isSparkpostExists;\n\n const handleGmailConnect = () => {\n window.location.href = buildUrl(GMAIL_OAUTH_CONNECT_URL, { ownerId });\n };\n\n const handleOutlookConnect = () => {\n window.location.href = buildUrl(OUTLOOK_OAUTH_CONNECT_URL, { ownerId });\n };\n\n const handleOwnDomainConnect = () => {\n history.push(ownDomainSetupRoute);\n };\n\n const gmailEmail = prop(\"email\", gmailData);\n const outlookEmail = prop(\"email\", outlookData);\n const sparkpostEmail = prop(\"email\", sparkpostData);\n\n const gmailTitle = t(\"neetoEmailDelivery.gmail.title\");\n const gmailDescription = isGmailConnected\n ? t(\"neetoEmailDelivery.sparkpost.emailDelivery.connectedEmail\", {\n email: gmailEmail,\n })\n : t(\"neetoEmailDelivery.gmail.description\");\n\n const outlookTitle = t(\"neetoEmailDelivery.outlook.title\");\n const outlookDescription = isOutlookConnected\n ? t(\"neetoEmailDelivery.sparkpost.emailDelivery.connectedEmail\", {\n email: outlookEmail,\n })\n : t(\"neetoEmailDelivery.outlook.description\");\n\n const ownDomainTitle = t(\n \"neetoEmailDelivery.sparkpost.emailDelivery.ownDomainTitle\"\n );\n\n const ownDomainDescription = isSparkpostConnected\n ? t(\"neetoEmailDelivery.sparkpost.emailDelivery.connectedEmail\", {\n email: sparkpostEmail,\n })\n : t(\"neetoEmailDelivery.sparkpost.emailDelivery.ownDomainDescription\");\n\n if (isLoading) {\n return (\n <div className=\"flex grow items-center justify-center w-full\">\n <Spinner />\n </div>\n );\n }\n\n const activeMessage =\n (isGmailConnected && t(\"neetoEmailDelivery.gmail.gmailConfigured\")) ||\n (isOutlookConnected && t(\"neetoEmailDelivery.outlook.outlookConfigured\")) ||\n (isSparkpostConnected &&\n t(\"neetoEmailDelivery.sparkpost.ownDomainConfigured\"));\n\n return (\n <div className=\"min-h-0 w-full grow\">\n <div className=\"@container mx-auto space-y-6\">\n <div className=\"grid grid-cols-1 gap-3 py-1 @lg:grid-cols-2 @lg:gap-6 @3xl:grid-cols-3 @7xl:grid-cols-4\">\n {/* Gmail Option */}\n {showGmail && (\n <IntegrationCard\n connectButtonText=\"neetoEmailDelivery.gmail.connectGmail\"\n description={gmailDescription}\n icon={GmailIcon}\n isConnected={isGmailConnected}\n isDisconnecting={isGmailDisconnecting}\n title={gmailTitle}\n onConnect={handleGmailConnect}\n onDisconnect={onGmailDisconnect}\n />\n )}\n {/* Outlook Option */}\n {showOutlook && (\n <IntegrationCard\n connectButtonText=\"neetoEmailDelivery.outlook.connectOutlook\"\n description={outlookDescription}\n icon={OutlookIcon}\n isConnected={isOutlookConnected}\n isDisconnecting={isOutlookDisconnecting}\n title={outlookTitle}\n showDisconnect={\n isOutlookWaitingForTestEmail || isOutlookShadowAccount\n }\n onConnect={handleOutlookConnect}\n onDisconnect={onOutlookDisconnect}\n />\n )}\n {/* Own Domain (Sparkpost) Option */}\n {showSparkpost && (\n <IntegrationCard\n connectButtonText=\"neetoEmailDelivery.sparkpost.emailDelivery.setupDomain\"\n description={ownDomainDescription}\n icon={MailSend}\n isConnected={isSparkpostConnected}\n isDisconnecting={isSparkpostDisconnecting}\n title={ownDomainTitle}\n onConnect={handleOwnDomainConnect}\n onDisconnect={onSparkpostDisconnect}\n />\n )}\n </div>\n {activeMessage && <Callout style=\"success\">{activeMessage}</Callout>}\n {isOutlookWaitingForTestEmail && (\n <Callout style=\"warning\">\n {t(\"neetoEmailDelivery.outlook.waitingForTestEmail\", {\n email: outlookEmail,\n })}\n </Callout>\n )}\n {isOutlookShadowAccount && (\n <Callout style=\"warning\">\n {t(\"neetoEmailDelivery.outlook.shadowAccountMessage\", {\n email: outlookEmail,\n })}\n </Callout>\n )}\n </div>\n </div>\n );\n};\n\nexport default EmailDeliveryScreen;\n"],"names":["useGmail","_ref","ownerId","indexRoute","canManageIntegrations","_useState","useState","_useState2","_slicedToArray","isDisconnectAlertOpen","setIsDisconnectAlertOpen","history","useHistory","queryClient","useQueryClient","_useFetchGmail","useFetchGmail","enabled","isLoading","_useFetchGmail$data","data","isGmailFetched","isSuccess","_useDestroyGmail","useDestroyGmail","isDestroying","isPending","destroyIntegration","mutate","onClose","replace","onDisconnect","onSuccess","showThumbsUpToastr","useEffect","invalidateQueries","predicate","query","_query$queryKey","queryKey","key","id","QUERY_KEYS","INTEGRATION_GMAIL","exists","isConnected","connected","errorMessage","error","useOutlook","_useFetchOutlook","useFetchOutlook","_useFetchOutlook$data","isOutlookFetched","_useDestroyOutlook","useDestroyOutlook","INTEGRATION_OUTLOOK","status","shadowAccount","isWaitingForTestEmail","ERROR_MESSAGES","gmail_permission_not_given","t","outlook_permission_not_given","outlook_invalid_client","outlook_nil_json_web_token","IntegrationCard","Icon","icon","title","description","isDisconnecting","onConnect","connectButtonText","_ref$disconnectButton","disconnectButtonText","_ref$connectedTagText","connectedTagText","_ref$showDisconnect","showDisconnect","_useTranslation","useTranslation","shouldShowDisconnect","_jsx","className","children","_jsxs","size","Typography","style","weight","Tag","label","Button","loading","onClick","EmailDeliveryScreen","ownDomainSetupRoute","_useQueryParams","useQueryParams","errorDescription","isPresent","_errorMessage","concat","Toastr","humanize","gmailIntegration","outlookIntegration","sparkpostIntegration","useSparkpostDomain","_gmailIntegration$dat","gmailData","isGmailConnected","isGmailLoading","isGmailDisconnecting","onGmailDisconnect","isGmailExists","_outlookIntegration$d","outlookData","isOutlookConnected","isOutlookLoading","isOutlookDisconnecting","isOutlookWaitingForTestEmail","isOutlookShadowAccount","onOutlookDisconnect","isOutlookExists","_sparkpostIntegration","sparkpostData","isSparkpostConnected","isSparkpostLoading","onSparkpostDisconnect","isSparkpostDisconnecting","isSparkpostExists","noneExists","showGmail","showOutlook","showSparkpost","handleGmailConnect","window","location","href","buildUrl","GMAIL_OAUTH_CONNECT_URL","handleOutlookConnect","OUTLOOK_OAUTH_CONNECT_URL","handleOwnDomainConnect","push","gmailEmail","prop","outlookEmail","sparkpostEmail","gmailTitle","gmailDescription","email","outlookTitle","outlookDescription","ownDomainTitle","ownDomainDescription","Spinner","activeMessage","GmailIcon","OutlookIcon","MailSend","Callout"],"mappings":"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"}
@@ -7,7 +7,7 @@ import Form from '@bigbinary/neetoui/formik/Form';
7
7
  import { useTranslation } from 'react-i18next';
8
8
  import { useHistory } from 'react-router-dom';
9
9
  import { P as PageWrapper, a as PageContent, V as VALIDATION_SCHEMA } from './constants-Cvxv8ly7.js';
10
- import { u as useSparkpostDomain } from './useSparkpostDomain-DNDqvZtR.js';
10
+ import { u as useSparkpostDomain } from './useSparkpostDomain-DO4bG1HD.js';
11
11
  import { jsx, jsxs } from 'react/jsx-runtime';
12
12
  import '@babel/runtime/helpers/defineProperty';
13
13
  import '@babel/runtime/helpers/objectWithoutProperties';
@@ -7,7 +7,7 @@ import { isEmpty, pathOr } from 'ramda';
7
7
  import { useTranslation } from 'react-i18next';
8
8
  import { useHistory } from 'react-router-dom';
9
9
  import { b as PURPOSE_COLORS, D as DEFAULT_COLOR, c as VERIFICATION_STATUS_CONFIG, d as VERIFICATION_STATUSES, P as PageWrapper, a as PageContent } from './constants-Cvxv8ly7.js';
10
- import { u as useSparkpostDomain } from './useSparkpostDomain-DNDqvZtR.js';
10
+ import { u as useSparkpostDomain } from './useSparkpostDomain-DO4bG1HD.js';
11
11
  import { u as useFetchSparkpostDomain } from './useSparkpostApi-W7XibjIp.js';
12
12
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
13
13
  import Typography from '@bigbinary/neetoui/Typography';
@@ -17,7 +17,7 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
17
17
  var react = require('react');
18
18
  var reactQuery = require('@tanstack/react-query');
19
19
  var useOutlookIntegrationApi = require('../useOutlookIntegrationApi-CtHj_BzG.js');
20
- var useSparkpostDomain = require('../useSparkpostDomain-yQjcPe0y.js');
20
+ var useSparkpostDomain = require('../useSparkpostDomain-wsENCoto.js');
21
21
  var i18next = require('i18next');
22
22
  var Button = require('@bigbinary/neetoui/Button');
23
23
  var Tag = require('@bigbinary/neetoui/Tag');
@@ -76,6 +76,7 @@ var useGmail = function useGmail(_ref) {
76
76
  data: data,
77
77
  isLoading: isLoading,
78
78
  isDestroying: isDestroying,
79
+ exists: data === null || data === void 0 ? void 0 : data.exists,
79
80
  isConnected: data === null || data === void 0 ? void 0 : data.connected,
80
81
  isDisconnectAlertOpen: isDisconnectAlertOpen,
81
82
  setIsDisconnectAlertOpen: setIsDisconnectAlertOpen,
@@ -134,6 +135,10 @@ var useOutlook = function useOutlook(_ref) {
134
135
  return {
135
136
  data: data,
136
137
  isLoading: isLoading,
138
+ exists: data === null || data === void 0 ? void 0 : data.exists,
139
+ status: data === null || data === void 0 ? void 0 : data.status,
140
+ shadowAccount: data === null || data === void 0 ? void 0 : data.shadowAccount,
141
+ isWaitingForTestEmail: (data === null || data === void 0 ? void 0 : data.status) === "inactive" && !(data !== null && data !== void 0 && data.connected),
137
142
  isDestroying: isDestroying,
138
143
  isConnected: data === null || data === void 0 ? void 0 : data.connected,
139
144
  isDisconnectAlertOpen: isDisconnectAlertOpen,
@@ -151,9 +156,8 @@ var ERROR_MESSAGES = {
151
156
  outlook_nil_json_web_token: i18next.t("neetoEmailDelivery.outlook.nilJsonWebToken")
152
157
  };
153
158
 
154
- var IntegrationCard = reactUtils.withT(function (_ref) {
155
- var t = _ref.t,
156
- Icon = _ref.icon,
159
+ var IntegrationCard = function IntegrationCard(_ref) {
160
+ var Icon = _ref.icon,
157
161
  title = _ref.title,
158
162
  description = _ref.description,
159
163
  isConnected = _ref.isConnected,
@@ -164,7 +168,12 @@ var IntegrationCard = reactUtils.withT(function (_ref) {
164
168
  _ref$disconnectButton = _ref.disconnectButtonText,
165
169
  disconnectButtonText = _ref$disconnectButton === void 0 ? "neetoEmailDelivery.sparkpost.emailDelivery.disconnect" : _ref$disconnectButton,
166
170
  _ref$connectedTagText = _ref.connectedTagText,
167
- connectedTagText = _ref$connectedTagText === void 0 ? "neetoEmailDelivery.sparkpost.emailDelivery.connected" : _ref$connectedTagText;
171
+ connectedTagText = _ref$connectedTagText === void 0 ? "neetoEmailDelivery.sparkpost.emailDelivery.connected" : _ref$connectedTagText,
172
+ _ref$showDisconnect = _ref.showDisconnect,
173
+ showDisconnect = _ref$showDisconnect === void 0 ? false : _ref$showDisconnect;
174
+ var _useTranslation = reactI18next.useTranslation(),
175
+ t = _useTranslation.t;
176
+ var shouldShowDisconnect = isConnected || showDisconnect;
168
177
  return /*#__PURE__*/jsxRuntime.jsx("div", {
169
178
  className: "neeto-ui-rounded-lg neeto-ui-shadow-xs neeto-ui-border-gray-300 translate flex flex-col gap-y-4 border p-6 no-underline transition-transform duration-300 ease-in-out outline-none hover:-translate-y-1",
170
179
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
@@ -192,7 +201,7 @@ var IntegrationCard = reactUtils.withT(function (_ref) {
192
201
  children: description
193
202
  }), connectButtonText && /*#__PURE__*/jsxRuntime.jsx("div", {
194
203
  className: "flex gap-2",
195
- children: isConnected ? /*#__PURE__*/jsxRuntime.jsx(Button, {
204
+ children: shouldShowDisconnect ? /*#__PURE__*/jsxRuntime.jsx(Button, {
196
205
  "data-cy": "disconnect-button",
197
206
  label: t(disconnectButtonText),
198
207
  loading: isDisconnecting,
@@ -209,7 +218,7 @@ var IntegrationCard = reactUtils.withT(function (_ref) {
209
218
  })]
210
219
  })
211
220
  });
212
- });
221
+ };
213
222
 
214
223
  var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
215
224
  var indexRoute = _ref.indexRoute,
@@ -250,21 +259,29 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
250
259
  isGmailConnected = gmailIntegration.isConnected,
251
260
  isGmailLoading = gmailIntegration.isLoading,
252
261
  isGmailDisconnecting = gmailIntegration.isDestroying,
253
- onGmailDisconnect = gmailIntegration.onDisconnect;
262
+ onGmailDisconnect = gmailIntegration.onDisconnect,
263
+ isGmailExists = gmailIntegration.exists;
254
264
  var _outlookIntegration$d = outlookIntegration.data,
255
265
  outlookData = _outlookIntegration$d === void 0 ? {} : _outlookIntegration$d,
256
266
  isOutlookConnected = outlookIntegration.isConnected,
257
267
  isOutlookLoading = outlookIntegration.isLoading,
258
268
  isOutlookDisconnecting = outlookIntegration.isDestroying,
259
- onOutlookDisconnect = outlookIntegration.onDisconnect;
269
+ isOutlookWaitingForTestEmail = outlookIntegration.isWaitingForTestEmail,
270
+ isOutlookShadowAccount = outlookIntegration.shadowAccount,
271
+ onOutlookDisconnect = outlookIntegration.onDisconnect,
272
+ isOutlookExists = outlookIntegration.exists;
260
273
  var _sparkpostIntegration = sparkpostIntegration.data,
261
274
  sparkpostData = _sparkpostIntegration === void 0 ? {} : _sparkpostIntegration,
262
275
  isSparkpostConnected = sparkpostIntegration.isConnected,
263
276
  isSparkpostLoading = sparkpostIntegration.isLoading,
264
277
  onSparkpostDisconnect = sparkpostIntegration.onDisconnect,
265
- isSparkpostDisconnecting = sparkpostIntegration.isDestroying;
278
+ isSparkpostDisconnecting = sparkpostIntegration.isDestroying,
279
+ isSparkpostExists = sparkpostIntegration.exists;
266
280
  var isLoading = isGmailLoading || isOutlookLoading || isSparkpostLoading;
267
- var hasActiveIntegration = isGmailConnected || isOutlookConnected || isSparkpostConnected;
281
+ var noneExists = !isGmailExists && !isOutlookExists && !isSparkpostExists;
282
+ var showGmail = noneExists || isGmailExists;
283
+ var showOutlook = noneExists || isOutlookExists;
284
+ var showSparkpost = noneExists || isSparkpostExists;
268
285
  var handleGmailConnect = function handleGmailConnect() {
269
286
  window.location.href = utils.buildUrl(useSparkpostApi.GMAIL_OAUTH_CONNECT_URL, {
270
287
  ownerId: ownerId
@@ -299,13 +316,14 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
299
316
  children: /*#__PURE__*/jsxRuntime.jsx(Spinner, {})
300
317
  });
301
318
  }
319
+ var activeMessage = isGmailConnected && t("neetoEmailDelivery.gmail.gmailConfigured") || isOutlookConnected && t("neetoEmailDelivery.outlook.outlookConfigured") || isSparkpostConnected && t("neetoEmailDelivery.sparkpost.ownDomainConfigured");
302
320
  return /*#__PURE__*/jsxRuntime.jsx("div", {
303
321
  className: "min-h-0 w-full grow",
304
322
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
305
323
  className: "@container mx-auto space-y-6",
306
324
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
307
325
  className: "grid grid-cols-1 gap-3 py-1 @lg:grid-cols-2 @lg:gap-6 @3xl:grid-cols-3 @7xl:grid-cols-4",
308
- children: [(!hasActiveIntegration || isGmailConnected) && /*#__PURE__*/jsxRuntime.jsx(IntegrationCard, {
326
+ children: [showGmail && /*#__PURE__*/jsxRuntime.jsx(IntegrationCard, {
309
327
  connectButtonText: "neetoEmailDelivery.gmail.connectGmail",
310
328
  description: gmailDescription,
311
329
  icon: GmailIcon,
@@ -314,16 +332,17 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
314
332
  title: gmailTitle,
315
333
  onConnect: handleGmailConnect,
316
334
  onDisconnect: onGmailDisconnect
317
- }), (!hasActiveIntegration || isOutlookConnected) && /*#__PURE__*/jsxRuntime.jsx(IntegrationCard, {
335
+ }), showOutlook && /*#__PURE__*/jsxRuntime.jsx(IntegrationCard, {
318
336
  connectButtonText: "neetoEmailDelivery.outlook.connectOutlook",
319
337
  description: outlookDescription,
320
338
  icon: OutlookIcon,
321
339
  isConnected: isOutlookConnected,
322
340
  isDisconnecting: isOutlookDisconnecting,
323
341
  title: outlookTitle,
342
+ showDisconnect: isOutlookWaitingForTestEmail || isOutlookShadowAccount,
324
343
  onConnect: handleOutlookConnect,
325
344
  onDisconnect: onOutlookDisconnect
326
- }), (!hasActiveIntegration || isSparkpostConnected) && /*#__PURE__*/jsxRuntime.jsx(IntegrationCard, {
345
+ }), showSparkpost && /*#__PURE__*/jsxRuntime.jsx(IntegrationCard, {
327
346
  connectButtonText: "neetoEmailDelivery.sparkpost.emailDelivery.setupDomain",
328
347
  description: ownDomainDescription,
329
348
  icon: MailSend,
@@ -333,9 +352,19 @@ var EmailDeliveryScreen = function EmailDeliveryScreen(_ref) {
333
352
  onConnect: handleOwnDomainConnect,
334
353
  onDisconnect: onSparkpostDisconnect
335
354
  })]
336
- }), hasActiveIntegration && /*#__PURE__*/jsxRuntime.jsx(Callout, {
355
+ }), activeMessage && /*#__PURE__*/jsxRuntime.jsx(Callout, {
337
356
  style: "success",
338
- children: isGmailConnected ? t("neetoEmailDelivery.gmail.gmailConfigured") : isOutlookConnected ? t("neetoEmailDelivery.outlook.outlookConfigured") : t("neetoEmailDelivery.sparkpost.ownDomainConfigured")
357
+ children: activeMessage
358
+ }), isOutlookWaitingForTestEmail && /*#__PURE__*/jsxRuntime.jsx(Callout, {
359
+ style: "warning",
360
+ children: t("neetoEmailDelivery.outlook.waitingForTestEmail", {
361
+ email: outlookEmail
362
+ })
363
+ }), isOutlookShadowAccount && /*#__PURE__*/jsxRuntime.jsx(Callout, {
364
+ style: "warning",
365
+ children: t("neetoEmailDelivery.outlook.shadowAccountMessage", {
366
+ email: outlookEmail
367
+ })
339
368
  })]
340
369
  })
341
370
  });