@daimo/pay 1.18.3 → 1.19.1

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 (62) hide show
  1. package/build/index.d.ts +23 -28
  2. package/build/package.json.js +2 -2
  3. package/build/src/assets/chains.js +18 -52
  4. package/build/src/assets/chains.js.map +1 -1
  5. package/build/src/assets/logos.js +76 -2
  6. package/build/src/assets/logos.js.map +1 -1
  7. package/build/src/components/Common/ConnectorList/index.js +21 -20
  8. package/build/src/components/Common/ConnectorList/index.js.map +1 -1
  9. package/build/src/components/Common/Modal/index.js +31 -8
  10. package/build/src/components/Common/Modal/index.js.map +1 -1
  11. package/build/src/components/Common/SelectAnotherMethodButton/index.js +4 -4
  12. package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -1
  13. package/build/src/components/DaimoPayButton/index.js +1 -2
  14. package/build/src/components/DaimoPayButton/index.js.map +1 -1
  15. package/build/src/components/DaimoPayModal/ConnectUsing.js +8 -6
  16. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -1
  17. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +13 -9
  18. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -1
  19. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +17 -23
  20. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
  21. package/build/src/components/DaimoPayModal/index.js +120 -41
  22. package/build/src/components/DaimoPayModal/index.js.map +1 -1
  23. package/build/src/components/Pages/Connectors/index.js +0 -2
  24. package/build/src/components/Pages/Connectors/index.js.map +1 -1
  25. package/build/src/components/Pages/MobileConnectors/index.js +62 -17
  26. package/build/src/components/Pages/MobileConnectors/index.js.map +1 -1
  27. package/build/src/components/Pages/SelectDepositAddressChain/index.js +9 -2
  28. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -1
  29. package/build/src/components/Pages/SelectExchange/index.js +22 -6
  30. package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
  31. package/build/src/components/Pages/SelectMethod/index.js +107 -26
  32. package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
  33. package/build/src/components/Pages/SelectWalletAmount/index.js +11 -6
  34. package/build/src/components/Pages/SelectWalletAmount/index.js.map +1 -1
  35. package/build/src/components/Pages/WaitingExternal/index.js +88 -3
  36. package/build/src/components/Pages/WaitingExternal/index.js.map +1 -1
  37. package/build/src/constants/limits.js +4 -0
  38. package/build/src/constants/limits.js.map +1 -0
  39. package/build/src/constants/paymentOptions.js +61 -0
  40. package/build/src/constants/paymentOptions.js.map +1 -0
  41. package/build/src/constants/routes.js +0 -1
  42. package/build/src/constants/routes.js.map +1 -1
  43. package/build/src/constants/wallets.js +7 -0
  44. package/build/src/constants/wallets.js.map +1 -0
  45. package/build/src/hooks/useExternalPaymentOptions.js +19 -4
  46. package/build/src/hooks/useExternalPaymentOptions.js.map +1 -1
  47. package/build/src/hooks/usePaymentState.js +41 -6
  48. package/build/src/hooks/usePaymentState.js.map +1 -1
  49. package/build/src/localizations/locales/en-US.js +4 -1
  50. package/build/src/localizations/locales/en-US.js.map +1 -1
  51. package/build/src/localizations/locales/es-ES.js +4 -1
  52. package/build/src/localizations/locales/es-ES.js.map +1 -1
  53. package/build/src/localizations/locales/pt-BR.js +4 -1
  54. package/build/src/localizations/locales/pt-BR.js.map +1 -1
  55. package/build/src/payment/paymentFsm.js.map +1 -1
  56. package/build/src/wallets/useWallets.js +81 -8
  57. package/build/src/wallets/useWallets.js.map +1 -1
  58. package/build/src/wallets/walletConfigs.js +65 -76
  59. package/build/src/wallets/walletConfigs.js.map +1 -1
  60. package/package.json +2 -2
  61. package/build/src/components/Pages/DownloadApp/index.js +0 -35
  62. package/build/src/components/Pages/DownloadApp/index.js.map +0 -1
@@ -14,16 +14,18 @@ const states = {
14
14
  };
15
15
  const ConnectUsing = () => {
16
16
  const context = usePayContext();
17
- const { pendingConnectorId } = context;
18
- const wallet = useWallet(pendingConnectorId ?? "");
19
- const isQrCode = !wallet?.isInstalled;
17
+ const { pendingConnectorId, paymentState } = context;
18
+ const walletFromConnectors = useWallet(pendingConnectorId ?? "");
19
+ const wallet = walletFromConnectors || paymentState.selectedWallet;
20
+ const connector = wallet?.connector;
20
21
  const [status, setStatus] = useState(
21
- isQrCode ? states.QRCODE : states.INJECTOR
22
+ connector == null ? states.QRCODE : states.INJECTOR
22
23
  );
23
24
  useEffect(() => {
24
25
  const checkProvider = async () => {
25
- const res = await wallet?.connector?.getProvider();
26
- if (!res) {
26
+ if (!wallet || connector == null) return;
27
+ const provider = await connector.getProvider?.();
28
+ if (!provider) {
27
29
  setStatus(states.QRCODE);
28
30
  setTimeout(context.triggerResize, 10);
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectUsing.js","sources":["../../../../src/components/DaimoPayModal/ConnectUsing.tsx"],"sourcesContent":["import { AnimatePresence, motion } from \"framer-motion\";\nimport { useEffect, useState } from \"react\";\n\nimport { usePayContext } from \"../../hooks/usePayContext\";\nimport { useWallet } from \"../../wallets/useWallets\";\n\nimport ConnectWithInjector from \"./ConnectWithInjector\";\nimport ConnectWithQRCode from \"./ConnectWithQRCode\";\n\nimport Alert from \"../Common/Alert\";\nimport { contentVariants } from \"../Common/Modal\";\n\nconst states = {\n QRCODE: \"qrcode\",\n INJECTOR: \"injector\",\n};\n\nconst ConnectUsing = () => {\n const context = usePayContext();\n const { pendingConnectorId } = context;\n\n const wallet = useWallet(pendingConnectorId ?? \"\");\n // If cannot be scanned, display injector flow, which if extension is not installed will show CTA to install it\n const isQrCode = !wallet?.isInstalled;\n\n const [status, setStatus] = useState(\n isQrCode ? states.QRCODE : states.INJECTOR,\n );\n\n useEffect(() => {\n // if no provider, change to qrcode\n const checkProvider = async () => {\n const res = await wallet?.connector?.getProvider();\n if (!res) {\n setStatus(states.QRCODE);\n setTimeout(context.triggerResize, 10); // delay required here for modal to resize\n }\n };\n if (status === states.INJECTOR) checkProvider();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (!wallet) return <Alert>Connector not found</Alert>;\n\n return (\n <AnimatePresence>\n {status === states.QRCODE && (\n <motion.div\n key={states.QRCODE}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ConnectWithQRCode />\n </motion.div>\n )}\n {status === states.INJECTOR && (\n <motion.div\n key={states.INJECTOR}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ConnectWithInjector\n switchConnectMethod={() => {\n setStatus(states.QRCODE);\n }}\n />\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport default ConnectUsing;\n"],"names":[],"mappings":";;;;;;;;;;AAYA,MAAM,MAAS,GAAA;AAAA,EACb,MAAQ,EAAA,QAAA;AAAA,EACR,QAAU,EAAA,UAAA;AACZ,CAAA,CAAA;AAEA,MAAM,eAAe,MAAM;AACzB,EAAA,MAAM,UAAU,aAAc,EAAA,CAAA;AAC9B,EAAM,MAAA,EAAE,oBAAuB,GAAA,OAAA,CAAA;AAE/B,EAAM,MAAA,MAAA,GAAS,SAAU,CAAA,kBAAA,IAAsB,EAAE,CAAA,CAAA;AAEjD,EAAM,MAAA,QAAA,GAAW,CAAC,MAAQ,EAAA,WAAA,CAAA;AAE1B,EAAM,MAAA,CAAC,MAAQ,EAAA,SAAS,CAAI,GAAA,QAAA;AAAA,IAC1B,QAAA,GAAW,MAAO,CAAA,MAAA,GAAS,MAAO,CAAA,QAAA;AAAA,GACpC,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,MAAM,gBAAgB,YAAY;AAChC,MAAA,MAAM,GAAM,GAAA,MAAM,MAAQ,EAAA,SAAA,EAAW,WAAY,EAAA,CAAA;AACjD,MAAA,IAAI,CAAC,GAAK,EAAA;AACR,QAAA,SAAA,CAAU,OAAO,MAAM,CAAA,CAAA;AACvB,QAAW,UAAA,CAAA,OAAA,CAAQ,eAAe,EAAE,CAAA,CAAA;AAAA,OACtC;AAAA,KACF,CAAA;AACA,IAAI,IAAA,MAAA,KAAW,MAAO,CAAA,QAAA,EAAwB,aAAA,EAAA,CAAA;AAAA,GAChD,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,IAAI,CAAC,MAAA,EAAe,uBAAA,GAAA,CAAC,SAAM,QAAmB,EAAA,qBAAA,EAAA,CAAA,CAAA;AAE9C,EAAA,4BACG,eACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,MAAA,KAAW,OAAO,MACjB,oBAAA,GAAA;AAAA,MAAC,MAAO,CAAA,GAAA;AAAA,MAAP;AAAA,QAEC,OAAS,EAAA,SAAA;AAAA,QACT,OAAS,EAAA,SAAA;AAAA,QACT,IAAM,EAAA,MAAA;AAAA,QACN,QAAU,EAAA,eAAA;AAAA,QAEV,8BAAC,iBAAkB,EAAA,EAAA,CAAA;AAAA,OAAA;AAAA,MANd,MAAO,CAAA,MAAA;AAAA,KAOd;AAAA,IAED,MAAA,KAAW,OAAO,QACjB,oBAAA,GAAA;AAAA,MAAC,MAAO,CAAA,GAAA;AAAA,MAAP;AAAA,QAEC,OAAS,EAAA,SAAA;AAAA,QACT,OAAS,EAAA,SAAA;AAAA,QACT,IAAM,EAAA,MAAA;AAAA,QACN,QAAU,EAAA,eAAA;AAAA,QAEV,QAAA,kBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,qBAAqB,MAAM;AACzB,cAAA,SAAA,CAAU,OAAO,MAAM,CAAA,CAAA;AAAA,aACzB;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,MAVK,MAAO,CAAA,QAAA;AAAA,KAWd;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ConnectUsing.js","sources":["../../../../src/components/DaimoPayModal/ConnectUsing.tsx"],"sourcesContent":["import { AnimatePresence, motion } from \"framer-motion\";\nimport { useEffect, useState } from \"react\";\n\nimport { usePayContext } from \"../../hooks/usePayContext\";\nimport { useWallet } from \"../../wallets/useWallets\";\n\nimport ConnectWithInjector from \"./ConnectWithInjector\";\nimport ConnectWithQRCode from \"./ConnectWithQRCode\";\n\nimport Alert from \"../Common/Alert\";\nimport { contentVariants } from \"../Common/Modal\";\n\nconst states = {\n QRCODE: \"qrcode\",\n INJECTOR: \"injector\",\n};\n\nconst ConnectUsing = () => {\n const context = usePayContext();\n const { pendingConnectorId, paymentState } = context;\n\n const walletFromConnectors = useWallet(pendingConnectorId ?? \"\");\n // Fall back to selectedWallet for wallets from walletConfigs (e.g. unique payment options)\n const wallet = walletFromConnectors || paymentState.selectedWallet;\n\n // Wallets from walletConfigs don't have connector/isInstalled, always show QR\n const connector = wallet?.connector;\n\n // If it doesn't have a connector, show QR code\n const [status, setStatus] = useState(\n connector == null ? states.QRCODE : states.INJECTOR,\n );\n\n useEffect(() => {\n // if no provider, change to qrcode\n const checkProvider = async () => {\n if (!wallet || connector == null) return;\n const provider = await connector.getProvider?.();\n if (!provider) {\n setStatus(states.QRCODE);\n setTimeout(context.triggerResize, 10); // delay required here for modal to resize\n }\n };\n if (status === states.INJECTOR) checkProvider();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (!wallet) return <Alert>Connector not found</Alert>;\n\n return (\n <AnimatePresence>\n {status === states.QRCODE && (\n <motion.div\n key={states.QRCODE}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ConnectWithQRCode />\n </motion.div>\n )}\n {status === states.INJECTOR && (\n <motion.div\n key={states.INJECTOR}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ConnectWithInjector\n switchConnectMethod={() => {\n setStatus(states.QRCODE);\n }}\n />\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport default ConnectUsing;\n"],"names":[],"mappings":";;;;;;;;;;AAYA,MAAM,MAAS,GAAA;AAAA,EACb,MAAQ,EAAA,QAAA;AAAA,EACR,QAAU,EAAA,UAAA;AACZ,CAAA,CAAA;AAEA,MAAM,eAAe,MAAM;AACzB,EAAA,MAAM,UAAU,aAAc,EAAA,CAAA;AAC9B,EAAM,MAAA,EAAE,kBAAoB,EAAA,YAAA,EAAiB,GAAA,OAAA,CAAA;AAE7C,EAAM,MAAA,oBAAA,GAAuB,SAAU,CAAA,kBAAA,IAAsB,EAAE,CAAA,CAAA;AAE/D,EAAM,MAAA,MAAA,GAAS,wBAAwB,YAAa,CAAA,cAAA,CAAA;AAGpD,EAAA,MAAM,YAAY,MAAQ,EAAA,SAAA,CAAA;AAG1B,EAAM,MAAA,CAAC,MAAQ,EAAA,SAAS,CAAI,GAAA,QAAA;AAAA,IAC1B,SAAa,IAAA,IAAA,GAAO,MAAO,CAAA,MAAA,GAAS,MAAO,CAAA,QAAA;AAAA,GAC7C,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,MAAM,gBAAgB,YAAY;AAChC,MAAI,IAAA,CAAC,MAAU,IAAA,SAAA,IAAa,IAAM,EAAA,OAAA;AAClC,MAAM,MAAA,QAAA,GAAW,MAAM,SAAA,CAAU,WAAc,IAAA,CAAA;AAC/C,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAA,SAAA,CAAU,OAAO,MAAM,CAAA,CAAA;AACvB,QAAW,UAAA,CAAA,OAAA,CAAQ,eAAe,EAAE,CAAA,CAAA;AAAA,OACtC;AAAA,KACF,CAAA;AACA,IAAI,IAAA,MAAA,KAAW,MAAO,CAAA,QAAA,EAAwB,aAAA,EAAA,CAAA;AAAA,GAChD,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,IAAI,CAAC,MAAA,EAAe,uBAAA,GAAA,CAAC,SAAM,QAAmB,EAAA,qBAAA,EAAA,CAAA,CAAA;AAE9C,EAAA,4BACG,eACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,MAAA,KAAW,OAAO,MACjB,oBAAA,GAAA;AAAA,MAAC,MAAO,CAAA,GAAA;AAAA,MAAP;AAAA,QAEC,OAAS,EAAA,SAAA;AAAA,QACT,OAAS,EAAA,SAAA;AAAA,QACT,IAAM,EAAA,MAAA;AAAA,QACN,QAAU,EAAA,eAAA;AAAA,QAEV,8BAAC,iBAAkB,EAAA,EAAA,CAAA;AAAA,OAAA;AAAA,MANd,MAAO,CAAA,MAAA;AAAA,KAOd;AAAA,IAED,MAAA,KAAW,OAAO,QACjB,oBAAA,GAAA;AAAA,MAAC,MAAO,CAAA,GAAA;AAAA,MAAP;AAAA,QAEC,OAAS,EAAA,SAAA;AAAA,QACT,OAAS,EAAA,SAAA;AAAA,QACT,IAAM,EAAA,MAAA;AAAA,QACN,QAAU,EAAA,eAAA;AAAA,QAEV,QAAA,kBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,qBAAqB,MAAM;AACzB,cAAA,SAAA,CAAU,OAAO,MAAM,CAAA,CAAA;AAAA,aACzB;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,MAVK,MAAO,CAAA,QAAA;AAAA,KAWd;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -100,8 +100,10 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
100
100
  }
101
101
  });
102
102
  const { triggerResize } = usePayContext();
103
- const { pendingConnectorId } = usePayContext();
104
- const wallet = useWallet(pendingConnectorId ?? "");
103
+ const context = usePayContext();
104
+ const { pendingConnectorId, paymentState } = context;
105
+ const walletFromConnectors = useWallet(pendingConnectorId ?? "");
106
+ const wallet = walletFromConnectors || paymentState.selectedWallet;
105
107
  const walletInfo = {
106
108
  name: wallet?.name,
107
109
  shortName: wallet?.shortName ?? wallet?.name,
@@ -118,8 +120,10 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
118
120
  // Capitalise first letter, but this might be better suited as a lookup table
119
121
  url: wallet?.downloadUrls[Object.keys(wallet?.downloadUrls)[0]]
120
122
  } : void 0;
123
+ const hasConnector = wallet && "connector" in wallet && wallet.connector != null;
124
+ const isInstalled = wallet && "isInstalled" in wallet && wallet.isInstalled;
121
125
  const [status, setStatus] = useState(
122
- forceState ? forceState : !wallet?.isInstalled ? states.UNAVAILABLE : states.CONNECTING
126
+ forceState ? forceState : !isInstalled ? states.UNAVAILABLE : states.CONNECTING
123
127
  );
124
128
  const locales = useLocales({
125
129
  CONNECTORNAME: walletInfo.name,
@@ -127,8 +131,8 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
127
131
  SUGGESTEDEXTENSIONBROWSER: suggestedExtension?.label ?? "your browser"
128
132
  });
129
133
  const runConnect = async () => {
130
- if (wallet?.isInstalled && wallet?.connector) {
131
- connect({ connector: wallet?.connector });
134
+ if (isInstalled && hasConnector) {
135
+ connect({ connector: wallet.connector });
132
136
  } else {
133
137
  setStatus(states.UNAVAILABLE);
134
138
  }
@@ -252,8 +256,8 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
252
256
  exit: "exit",
253
257
  variants: contentVariants,
254
258
  children: /* @__PURE__ */ jsxs(ModalContent, { style: { paddingBottom: 28 }, children: [
255
- /* @__PURE__ */ jsx(ModalH1, { children: wallet.connector?.id === "injected" ? locales.injectionScreen_connecting_injected_h1 : locales.injectionScreen_connecting_h1 }),
256
- /* @__PURE__ */ jsx(ModalBody, { children: wallet.connector?.id === "injected" ? locales.injectionScreen_connecting_injected_p : locales.injectionScreen_connecting_p }),
259
+ /* @__PURE__ */ jsx(ModalH1, { children: hasConnector && wallet.connector?.id === "injected" ? locales.injectionScreen_connecting_injected_h1 : locales.injectionScreen_connecting_h1 }),
260
+ /* @__PURE__ */ jsx(ModalBody, { children: hasConnector && wallet.connector?.id === "injected" ? locales.injectionScreen_connecting_injected_p : locales.injectionScreen_connecting_p }),
257
261
  /* @__PURE__ */ jsxs(Button, { icon: /* @__PURE__ */ jsx(ExternalLinkIcon, {}), onClick: runConnect, children: [
258
262
  "Connect ",
259
263
  walletInfo.name
@@ -306,7 +310,7 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
306
310
  /* @__PURE__ */ jsx(ModalH1, { children: locales.injectionScreen_unavailable_h1 }),
307
311
  /* @__PURE__ */ jsx(ModalBody, { children: locales.injectionScreen_unavailable_p })
308
312
  ] }),
309
- !wallet.isInstalled && suggestedExtension && /* @__PURE__ */ jsxs(
313
+ !isInstalled && suggestedExtension && /* @__PURE__ */ jsxs(
310
314
  Button,
311
315
  {
312
316
  href: suggestedExtension?.url,
@@ -322,7 +326,7 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
322
326
  /* @__PURE__ */ jsx(ModalH1, { children: locales.injectionScreen_install_h1 }),
323
327
  /* @__PURE__ */ jsx(ModalBody, { children: locales.injectionScreen_install_p })
324
328
  ] }),
325
- !wallet.isInstalled && extensionUrl && /* @__PURE__ */ jsx(Button, { href: extensionUrl, icon: /* @__PURE__ */ jsx(BrowserIcon, {}), children: locales.installTheExtension })
329
+ !isInstalled && extensionUrl && /* @__PURE__ */ jsx(Button, { href: extensionUrl, icon: /* @__PURE__ */ jsx(BrowserIcon, {}), children: locales.installTheExtension })
326
330
  ] })
327
331
  },
328
332
  states.UNAVAILABLE
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/DaimoPayModal/ConnectWithInjector/index.tsx"],"sourcesContent":["import { AnimatePresence, Variants } from \"framer-motion\";\nimport React, { useEffect, useState } from \"react\";\nimport {\n ConnectingAnimation,\n ConnectingContainer,\n Container,\n Content,\n RetryButton,\n RetryIconContainer,\n} from \"./styles\";\n\nimport Alert from \"../../Common/Alert\";\nimport Button from \"../../Common/Button\";\nimport {\n ModalBody,\n ModalContent,\n ModalContentContainer,\n ModalH1,\n ModalHeading,\n PageContent,\n} from \"../../Common/Modal/styles\";\nimport Tooltip from \"../../Common/Tooltip\";\n\nimport SquircleSpinner from \"../../Spinners/SquircleSpinner\";\n\nimport {\n AlertIcon,\n ExternalLinkIcon,\n RetryIconCircle,\n TickIcon,\n} from \"../../../assets/icons\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { detectBrowser } from \"../../../utils\";\nimport { useWallet } from \"../../../wallets/useWallets\";\nimport BrowserIcon from \"../../Common/BrowserIcon\";\nimport CircleSpinner from \"../../Spinners/CircleSpinner\";\n\nexport const states = {\n CONNECTED: \"connected\",\n CONNECTING: \"connecting\",\n EXPIRING: \"expiring\",\n FAILED: \"failed\",\n REJECTED: \"rejected\",\n NOTCONNECTED: \"notconnected\",\n UNAVAILABLE: \"unavailable\",\n};\n\nconst contentVariants: Variants = {\n initial: {\n willChange: \"transform,opacity\",\n position: \"relative\",\n opacity: 0,\n scale: 0.95,\n },\n animate: {\n position: \"relative\",\n opacity: 1,\n scale: 1,\n transition: {\n ease: [0.16, 1, 0.3, 1],\n duration: 0.4,\n delay: 0.05,\n position: { delay: 0 },\n },\n },\n exit: {\n position: \"absolute\",\n opacity: 0,\n scale: 0.95,\n transition: {\n ease: [0.16, 1, 0.3, 1],\n duration: 0.3,\n },\n },\n};\n\nconst ConnectWithInjector: React.FC<{\n switchConnectMethod: (id?: string) => void;\n forceState?: typeof states;\n}> = ({ switchConnectMethod, forceState }) => {\n const { connect } = useConnect({\n mutation: {\n onMutate: (connector?: any) => {\n if (connector.connector) {\n setStatus(states.CONNECTING);\n } else {\n setStatus(states.UNAVAILABLE);\n }\n },\n onError(err?: any) {\n console.error(err);\n },\n onSettled(data?: any, error?: any) {\n if (error) {\n setShowTryAgainTooltip(true);\n setTimeout(() => setShowTryAgainTooltip(false), 3500);\n if (error.code) {\n // https://github.com/MetaMask/eth-rpc-errors/blob/main/src/error-constants.ts\n switch (error.code) {\n case -32002:\n setStatus(states.NOTCONNECTED);\n break;\n case 4001:\n setStatus(states.REJECTED);\n break;\n default:\n setStatus(states.FAILED);\n break;\n }\n } else {\n // Sometimes the error doesn't respond with a code\n if (error.message) {\n switch (error.message) {\n case \"User rejected request\":\n setStatus(states.REJECTED);\n break;\n default:\n setStatus(states.FAILED);\n break;\n }\n }\n }\n } else if (data) {\n }\n setTimeout(triggerResize, 100);\n },\n },\n });\n\n const { triggerResize } = usePayContext();\n const { pendingConnectorId } = usePayContext();\n const wallet = useWallet(pendingConnectorId ?? \"\");\n\n const walletInfo = {\n name: wallet?.name,\n shortName: wallet?.shortName ?? wallet?.name,\n icon: wallet?.iconConnector ?? wallet?.icon,\n iconShape: wallet?.iconShape ?? \"circle\",\n iconShouldShrink: wallet?.iconShouldShrink,\n };\n\n const [showTryAgainTooltip, setShowTryAgainTooltip] = useState(false);\n\n const browser = detectBrowser();\n\n const extensionUrl = wallet?.downloadUrls?.[browser];\n\n const suggestedExtension = wallet?.downloadUrls\n ? {\n name: Object.keys(wallet?.downloadUrls)[0],\n label:\n Object.keys(wallet?.downloadUrls)[0]?.charAt(0).toUpperCase() +\n Object.keys(wallet?.downloadUrls)[0]?.slice(1), // Capitalise first letter, but this might be better suited as a lookup table\n url: wallet?.downloadUrls[Object.keys(wallet?.downloadUrls)[0]],\n }\n : undefined;\n\n const [status, setStatus] = useState(\n forceState\n ? forceState\n : !wallet?.isInstalled\n ? states.UNAVAILABLE\n : states.CONNECTING,\n );\n\n const locales = useLocales({\n CONNECTORNAME: walletInfo.name,\n CONNECTORSHORTNAME: walletInfo.shortName ?? walletInfo.name,\n SUGGESTEDEXTENSIONBROWSER: suggestedExtension?.label ?? \"your browser\",\n });\n\n const runConnect = async () => {\n if (wallet?.isInstalled && wallet?.connector) {\n connect({ connector: wallet?.connector });\n } else {\n setStatus(states.UNAVAILABLE);\n }\n };\n\n useEffect(() => {\n if (status === states.UNAVAILABLE) return;\n\n // UX: Give user time to see the UI before opening the extension\n const connectTimeout = setTimeout(runConnect, 600);\n return () => {\n clearTimeout(connectTimeout);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n /** Timeout functionality if necessary\n let expiryTimeout: any;\n useEffect(() => {\n if (status === states.EXPIRING) {\n expiryTimeout = setTimeout(\n () => {\n if (expiryTimer <= 0) {\n setStatus(states.FAILED);\n setExpiryTimer(expiryDefault);\n } else {\n setExpiryTimer(expiryTimer - 1);\n }\n },\n expiryTimer === 9 ? 1500 : 1000 // Google: Chronostasis\n );\n }\n return () => {\n clearTimeout(expiryTimeout);\n };\n }, [status, expiryTimer]);\n */\n\n if (!wallet) {\n return (\n <PageContent>\n <Container>\n <ModalHeading>{locales.invalidState_heading}</ModalHeading>\n <ModalContent>\n <Alert>{locales.invalidState_description}</Alert>\n </ModalContent>\n </Container>\n </PageContent>\n );\n }\n\n return (\n <PageContent>\n <Container>\n <ConnectingContainer>\n <ConnectingAnimation\n $shake={status === states.FAILED || status === states.REJECTED}\n $circle={walletInfo.iconShape === \"circle\"}\n >\n <AnimatePresence>\n {(status === states.FAILED || status === states.REJECTED) && (\n <RetryButton\n aria-label={locales.retry}\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n whileTap={{ scale: 0.9 }}\n transition={{ duration: 0.1 }}\n onClick={runConnect}\n >\n <RetryIconContainer>\n <Tooltip\n open={\n showTryAgainTooltip &&\n (status === states.FAILED || status === states.REJECTED)\n }\n message={locales.tryAgainQuestion}\n xOffset={-6}\n >\n <RetryIconCircle />\n </Tooltip>\n </RetryIconContainer>\n </RetryButton>\n )}\n </AnimatePresence>\n {walletInfo.iconShape === \"circle\" ? (\n <CircleSpinner\n logo={\n status === states.UNAVAILABLE ? (\n <div\n style={{\n transform: \"scale(1.14)\",\n position: \"relative\",\n width: \"100%\",\n }}\n >\n {walletInfo.icon}\n </div>\n ) : (\n <>{walletInfo.icon}</>\n )\n }\n smallLogo={walletInfo.iconShouldShrink}\n loading={status === states.CONNECTING}\n unavailable={status === states.UNAVAILABLE}\n />\n ) : (\n <SquircleSpinner\n logo={\n status === states.UNAVAILABLE ? (\n <div\n style={{\n transform: \"scale(1.14)\",\n position: \"relative\",\n width: \"100%\",\n }}\n >\n {walletInfo.icon}\n </div>\n ) : (\n <>{walletInfo.icon}</>\n )\n }\n loading={status === states.CONNECTING}\n //unavailable={status === states.UNAVAILABLE}\n />\n )}\n {/* </Tooltip> */}\n </ConnectingAnimation>\n </ConnectingContainer>\n <ModalContentContainer>\n <AnimatePresence initial={false}>\n {status === states.FAILED && (\n <Content\n key={states.FAILED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent>\n <ModalH1 $error>\n <AlertIcon />\n {locales.injectionScreen_failed_h1}\n </ModalH1>\n <ModalBody>{locales.injectionScreen_failed_p}</ModalBody>\n </ModalContent>\n </Content>\n )}\n {status === states.REJECTED && (\n <Content\n key={states.REJECTED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent style={{ paddingBottom: 28 }}>\n <ModalH1>{locales.injectionScreen_rejected_h1}</ModalH1>\n <ModalBody>{locales.injectionScreen_rejected_p}</ModalBody>\n </ModalContent>\n </Content>\n )}\n {(status === states.CONNECTING || status === states.EXPIRING) && (\n <Content\n key={states.CONNECTING}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent style={{ paddingBottom: 28 }}>\n <ModalH1>\n {wallet.connector?.id === \"injected\"\n ? locales.injectionScreen_connecting_injected_h1\n : locales.injectionScreen_connecting_h1}\n </ModalH1>\n <ModalBody>\n {wallet.connector?.id === \"injected\"\n ? locales.injectionScreen_connecting_injected_p\n : locales.injectionScreen_connecting_p}\n </ModalBody>\n <Button icon={<ExternalLinkIcon />} onClick={runConnect}>\n Connect {walletInfo.name}\n </Button>\n </ModalContent>\n </Content>\n )}\n {status === states.CONNECTED && (\n <Content\n key={states.CONNECTED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent>\n <ModalH1 $valid>\n <TickIcon /> {locales.injectionScreen_connected_h1}\n </ModalH1>\n <ModalBody>{locales.injectionScreen_connected_p}</ModalBody>\n </ModalContent>\n </Content>\n )}\n {status === states.NOTCONNECTED && (\n <Content\n key={states.NOTCONNECTED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent>\n <ModalH1>{locales.injectionScreen_notconnected_h1}</ModalH1>\n <ModalBody>\n {locales.injectionScreen_notconnected_p}\n </ModalBody>\n </ModalContent>\n </Content>\n )}\n {status === states.UNAVAILABLE && (\n <Content\n key={states.UNAVAILABLE}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n {!extensionUrl ? (\n <>\n <ModalContent style={{ paddingBottom: 12 }}>\n <ModalH1>\n {locales.injectionScreen_unavailable_h1}\n </ModalH1>\n <ModalBody>\n {locales.injectionScreen_unavailable_p}\n </ModalBody>\n </ModalContent>\n\n {!wallet.isInstalled && suggestedExtension && (\n <Button\n href={suggestedExtension?.url}\n icon={\n <BrowserIcon browser={suggestedExtension?.name} />\n }\n >\n Install on {suggestedExtension?.label}\n </Button>\n )}\n </>\n ) : (\n <>\n <ModalContent style={{ paddingBottom: 18 }}>\n <ModalH1>{locales.injectionScreen_install_h1}</ModalH1>\n <ModalBody>{locales.injectionScreen_install_p}</ModalBody>\n </ModalContent>\n {!wallet.isInstalled && extensionUrl && (\n <Button href={extensionUrl} icon={<BrowserIcon />}>\n {locales.installTheExtension}\n </Button>\n )}\n </>\n )}\n </Content>\n )}\n </AnimatePresence>\n </ModalContentContainer>\n </Container>\n </PageContent>\n );\n};\n\nexport default ConnectWithInjector;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/DaimoPayModal/ConnectWithInjector/index.tsx"],"sourcesContent":["import { AnimatePresence, Variants } from \"framer-motion\";\nimport React, { useEffect, useState } from \"react\";\nimport {\n ConnectingAnimation,\n ConnectingContainer,\n Container,\n Content,\n RetryButton,\n RetryIconContainer,\n} from \"./styles\";\n\nimport Alert from \"../../Common/Alert\";\nimport Button from \"../../Common/Button\";\nimport {\n ModalBody,\n ModalContent,\n ModalContentContainer,\n ModalH1,\n ModalHeading,\n PageContent,\n} from \"../../Common/Modal/styles\";\nimport Tooltip from \"../../Common/Tooltip\";\n\nimport SquircleSpinner from \"../../Spinners/SquircleSpinner\";\n\nimport {\n AlertIcon,\n ExternalLinkIcon,\n RetryIconCircle,\n TickIcon,\n} from \"../../../assets/icons\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { detectBrowser } from \"../../../utils\";\nimport { useWallet } from \"../../../wallets/useWallets\";\nimport BrowserIcon from \"../../Common/BrowserIcon\";\nimport CircleSpinner from \"../../Spinners/CircleSpinner\";\n\nexport const states = {\n CONNECTED: \"connected\",\n CONNECTING: \"connecting\",\n EXPIRING: \"expiring\",\n FAILED: \"failed\",\n REJECTED: \"rejected\",\n NOTCONNECTED: \"notconnected\",\n UNAVAILABLE: \"unavailable\",\n};\n\nconst contentVariants: Variants = {\n initial: {\n willChange: \"transform,opacity\",\n position: \"relative\",\n opacity: 0,\n scale: 0.95,\n },\n animate: {\n position: \"relative\",\n opacity: 1,\n scale: 1,\n transition: {\n ease: [0.16, 1, 0.3, 1],\n duration: 0.4,\n delay: 0.05,\n position: { delay: 0 },\n },\n },\n exit: {\n position: \"absolute\",\n opacity: 0,\n scale: 0.95,\n transition: {\n ease: [0.16, 1, 0.3, 1],\n duration: 0.3,\n },\n },\n};\n\nconst ConnectWithInjector: React.FC<{\n switchConnectMethod: (id?: string) => void;\n forceState?: typeof states;\n}> = ({ switchConnectMethod, forceState }) => {\n const { connect } = useConnect({\n mutation: {\n onMutate: (connector?: any) => {\n if (connector.connector) {\n setStatus(states.CONNECTING);\n } else {\n setStatus(states.UNAVAILABLE);\n }\n },\n onError(err?: any) {\n console.error(err);\n },\n onSettled(data?: any, error?: any) {\n if (error) {\n setShowTryAgainTooltip(true);\n setTimeout(() => setShowTryAgainTooltip(false), 3500);\n if (error.code) {\n // https://github.com/MetaMask/eth-rpc-errors/blob/main/src/error-constants.ts\n switch (error.code) {\n case -32002:\n setStatus(states.NOTCONNECTED);\n break;\n case 4001:\n setStatus(states.REJECTED);\n break;\n default:\n setStatus(states.FAILED);\n break;\n }\n } else {\n // Sometimes the error doesn't respond with a code\n if (error.message) {\n switch (error.message) {\n case \"User rejected request\":\n setStatus(states.REJECTED);\n break;\n default:\n setStatus(states.FAILED);\n break;\n }\n }\n }\n } else if (data) {\n }\n setTimeout(triggerResize, 100);\n },\n },\n });\n\n const { triggerResize } = usePayContext();\n const context = usePayContext();\n const { pendingConnectorId, paymentState } = context;\n const walletFromConnectors = useWallet(pendingConnectorId ?? \"\");\n // Fall back to selectedWallet for wallets from walletConfigs (e.g. unique payment options)\n const wallet = walletFromConnectors || paymentState.selectedWallet;\n\n const walletInfo = {\n name: wallet?.name,\n shortName: wallet?.shortName ?? wallet?.name,\n icon: wallet?.iconConnector ?? wallet?.icon,\n iconShape: wallet?.iconShape ?? \"circle\",\n iconShouldShrink: wallet?.iconShouldShrink,\n };\n\n const [showTryAgainTooltip, setShowTryAgainTooltip] = useState(false);\n\n const browser = detectBrowser();\n\n const extensionUrl = wallet?.downloadUrls?.[browser];\n\n const suggestedExtension = wallet?.downloadUrls\n ? {\n name: Object.keys(wallet?.downloadUrls)[0],\n label:\n Object.keys(wallet?.downloadUrls)[0]?.charAt(0).toUpperCase() +\n Object.keys(wallet?.downloadUrls)[0]?.slice(1), // Capitalise first letter, but this might be better suited as a lookup table\n url: wallet?.downloadUrls[Object.keys(wallet?.downloadUrls)[0]],\n }\n : undefined;\n\n const hasConnector =\n wallet && \"connector\" in wallet && wallet.connector != null;\n const isInstalled = wallet && \"isInstalled\" in wallet && wallet.isInstalled;\n\n const [status, setStatus] = useState(\n forceState\n ? forceState\n : !isInstalled\n ? states.UNAVAILABLE\n : states.CONNECTING,\n );\n\n const locales = useLocales({\n CONNECTORNAME: walletInfo.name,\n CONNECTORSHORTNAME: walletInfo.shortName ?? walletInfo.name,\n SUGGESTEDEXTENSIONBROWSER: suggestedExtension?.label ?? \"your browser\",\n });\n\n const runConnect = async () => {\n if (isInstalled && hasConnector) {\n connect({ connector: (wallet as any).connector });\n } else {\n setStatus(states.UNAVAILABLE);\n }\n };\n\n useEffect(() => {\n if (status === states.UNAVAILABLE) return;\n\n // UX: Give user time to see the UI before opening the extension\n const connectTimeout = setTimeout(runConnect, 600);\n return () => {\n clearTimeout(connectTimeout);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n /** Timeout functionality if necessary\n let expiryTimeout: any;\n useEffect(() => {\n if (status === states.EXPIRING) {\n expiryTimeout = setTimeout(\n () => {\n if (expiryTimer <= 0) {\n setStatus(states.FAILED);\n setExpiryTimer(expiryDefault);\n } else {\n setExpiryTimer(expiryTimer - 1);\n }\n },\n expiryTimer === 9 ? 1500 : 1000 // Google: Chronostasis\n );\n }\n return () => {\n clearTimeout(expiryTimeout);\n };\n }, [status, expiryTimer]);\n */\n\n if (!wallet) {\n return (\n <PageContent>\n <Container>\n <ModalHeading>{locales.invalidState_heading}</ModalHeading>\n <ModalContent>\n <Alert>{locales.invalidState_description}</Alert>\n </ModalContent>\n </Container>\n </PageContent>\n );\n }\n\n return (\n <PageContent>\n <Container>\n <ConnectingContainer>\n <ConnectingAnimation\n $shake={status === states.FAILED || status === states.REJECTED}\n $circle={walletInfo.iconShape === \"circle\"}\n >\n <AnimatePresence>\n {(status === states.FAILED || status === states.REJECTED) && (\n <RetryButton\n aria-label={locales.retry}\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n whileTap={{ scale: 0.9 }}\n transition={{ duration: 0.1 }}\n onClick={runConnect}\n >\n <RetryIconContainer>\n <Tooltip\n open={\n showTryAgainTooltip &&\n (status === states.FAILED || status === states.REJECTED)\n }\n message={locales.tryAgainQuestion}\n xOffset={-6}\n >\n <RetryIconCircle />\n </Tooltip>\n </RetryIconContainer>\n </RetryButton>\n )}\n </AnimatePresence>\n {walletInfo.iconShape === \"circle\" ? (\n <CircleSpinner\n logo={\n status === states.UNAVAILABLE ? (\n <div\n style={{\n transform: \"scale(1.14)\",\n position: \"relative\",\n width: \"100%\",\n }}\n >\n {walletInfo.icon}\n </div>\n ) : (\n <>{walletInfo.icon}</>\n )\n }\n smallLogo={walletInfo.iconShouldShrink}\n loading={status === states.CONNECTING}\n unavailable={status === states.UNAVAILABLE}\n />\n ) : (\n <SquircleSpinner\n logo={\n status === states.UNAVAILABLE ? (\n <div\n style={{\n transform: \"scale(1.14)\",\n position: \"relative\",\n width: \"100%\",\n }}\n >\n {walletInfo.icon}\n </div>\n ) : (\n <>{walletInfo.icon}</>\n )\n }\n loading={status === states.CONNECTING}\n //unavailable={status === states.UNAVAILABLE}\n />\n )}\n {/* </Tooltip> */}\n </ConnectingAnimation>\n </ConnectingContainer>\n <ModalContentContainer>\n <AnimatePresence initial={false}>\n {status === states.FAILED && (\n <Content\n key={states.FAILED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent>\n <ModalH1 $error>\n <AlertIcon />\n {locales.injectionScreen_failed_h1}\n </ModalH1>\n <ModalBody>{locales.injectionScreen_failed_p}</ModalBody>\n </ModalContent>\n </Content>\n )}\n {status === states.REJECTED && (\n <Content\n key={states.REJECTED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent style={{ paddingBottom: 28 }}>\n <ModalH1>{locales.injectionScreen_rejected_h1}</ModalH1>\n <ModalBody>{locales.injectionScreen_rejected_p}</ModalBody>\n </ModalContent>\n </Content>\n )}\n {(status === states.CONNECTING || status === states.EXPIRING) && (\n <Content\n key={states.CONNECTING}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent style={{ paddingBottom: 28 }}>\n <ModalH1>\n {hasConnector &&\n (wallet as any).connector?.id === \"injected\"\n ? locales.injectionScreen_connecting_injected_h1\n : locales.injectionScreen_connecting_h1}\n </ModalH1>\n <ModalBody>\n {hasConnector &&\n (wallet as any).connector?.id === \"injected\"\n ? locales.injectionScreen_connecting_injected_p\n : locales.injectionScreen_connecting_p}\n </ModalBody>\n <Button icon={<ExternalLinkIcon />} onClick={runConnect}>\n Connect {walletInfo.name}\n </Button>\n </ModalContent>\n </Content>\n )}\n {status === states.CONNECTED && (\n <Content\n key={states.CONNECTED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent>\n <ModalH1 $valid>\n <TickIcon /> {locales.injectionScreen_connected_h1}\n </ModalH1>\n <ModalBody>{locales.injectionScreen_connected_p}</ModalBody>\n </ModalContent>\n </Content>\n )}\n {status === states.NOTCONNECTED && (\n <Content\n key={states.NOTCONNECTED}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n <ModalContent>\n <ModalH1>{locales.injectionScreen_notconnected_h1}</ModalH1>\n <ModalBody>\n {locales.injectionScreen_notconnected_p}\n </ModalBody>\n </ModalContent>\n </Content>\n )}\n {status === states.UNAVAILABLE && (\n <Content\n key={states.UNAVAILABLE}\n initial={\"initial\"}\n animate={\"animate\"}\n exit={\"exit\"}\n variants={contentVariants}\n >\n {!extensionUrl ? (\n <>\n <ModalContent style={{ paddingBottom: 12 }}>\n <ModalH1>\n {locales.injectionScreen_unavailable_h1}\n </ModalH1>\n <ModalBody>\n {locales.injectionScreen_unavailable_p}\n </ModalBody>\n </ModalContent>\n\n {!isInstalled && suggestedExtension && (\n <Button\n href={suggestedExtension?.url}\n icon={\n <BrowserIcon browser={suggestedExtension?.name} />\n }\n >\n Install on {suggestedExtension?.label}\n </Button>\n )}\n </>\n ) : (\n <>\n <ModalContent style={{ paddingBottom: 18 }}>\n <ModalH1>{locales.injectionScreen_install_h1}</ModalH1>\n <ModalBody>{locales.injectionScreen_install_p}</ModalBody>\n </ModalContent>\n {!isInstalled && extensionUrl && (\n <Button href={extensionUrl} icon={<BrowserIcon />}>\n {locales.installTheExtension}\n </Button>\n )}\n </>\n )}\n </Content>\n )}\n </AnimatePresence>\n </ModalContentContainer>\n </Container>\n </PageContent>\n );\n};\n\nexport default ConnectWithInjector;\n"],"names":[],"mappings":"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"}
@@ -1,23 +1,27 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
- import { ROUTES } from '../../constants/routes.js';
3
2
  import { usePayContext } from '../../hooks/usePayContext.js';
4
3
  import { PageContent, ModalContent } from '../Common/Modal/styles.js';
5
4
  import ScanIconWithLogos from '../../assets/ScanIconWithLogos.js';
6
5
  import { useDaimoPay } from '../../hooks/useDaimoPay.js';
7
6
  import useLocales from '../../hooks/useLocales.js';
8
- import Button from '../Common/Button/index.js';
9
7
  import CustomQRCode from '../Common/CustomQRCode/index.js';
10
8
  import { writeDaimoPayOrderID } from '@daimo/pay-common';
11
- import Logos, { SquircleIcon } from '../../assets/logos.js';
9
+ import { SquircleIcon } from '../../assets/logos.js';
12
10
  import { MobileWithLogos } from '../../assets/MobileWithLogos.js';
13
- import { useWallet, WALLET_ID_MOBILE_WALLETS } from '../../wallets/useWallets.js';
11
+ import { ROUTES } from '../../constants/routes.js';
12
+ import { WALLET_ID_MOBILE_WALLETS } from '../../constants/wallets.js';
13
+ import useIsMobile from '../../hooks/useIsMobile.js';
14
+ import { useWallet } from '../../wallets/useWallets.js';
15
+ import { OrderHeader } from '../Common/OrderHeader/index.js';
14
16
 
15
17
  const ConnectWithQRCode = ({
16
18
  externalUrl
17
19
  }) => {
18
20
  const context = usePayContext();
21
+ const { isAndroid, isIOS } = useIsMobile();
19
22
  const { pendingConnectorId, paymentState } = context;
20
- const wallet = useWallet(pendingConnectorId ?? "");
23
+ const walletFromConnectors = useWallet(pendingConnectorId ?? "");
24
+ const wallet = walletFromConnectors || paymentState.selectedWallet;
21
25
  const externalOption = paymentState.selectedExternalOption;
22
26
  const pay = useDaimoPay();
23
27
  const locales = useLocales({
@@ -25,21 +29,21 @@ const ConnectWithQRCode = ({
25
29
  });
26
30
  if (!wallet && !externalOption)
27
31
  return /* @__PURE__ */ jsx(Fragment, { children: " No wallet or external option found " });
28
- const downloads = wallet?.downloadUrls;
29
- const hasApps = downloads && Object.keys(downloads).length !== 0;
30
32
  const payId = pay.order ? writeDaimoPayOrderID(pay.order.id) : "";
33
+ const platform = isIOS ? "ios" : isAndroid ? "android" : "other";
31
34
  const isDesktopLinkToMobileWallets = wallet?.id === WALLET_ID_MOBILE_WALLETS;
32
- const mode = isDesktopLinkToMobileWallets ? "browser" : "wallet";
33
- const worldDeeplink = wallet?.id === "world" && wallet?.getDaimoPayDeeplink ? wallet.getDaimoPayDeeplink(payId) : null;
35
+ const walletDeeplink = wallet?.getDaimoPayDeeplink ? wallet.getDaimoPayDeeplink(payId, platform) : null;
34
36
  const url = externalUrl ?? // QR code opens eg. Binance
35
- worldDeeplink ?? // open in World App
36
- `https://pay.daimo.com/pay?id=${payId}&mode=${mode}`;
37
+ walletDeeplink ?? // open in wallet
38
+ `https://pay.daimo.com/pay?id=${payId}&mode=browser`;
39
+ const isUniquePaymentOption = context.uniquePaymentMethodPage === ROUTES.CONNECT || context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;
37
40
  return /* @__PURE__ */ jsxs(PageContent, { children: [
38
- /* @__PURE__ */ jsx(ModalContent, { style: { paddingBottom: 8, gap: 14 }, children: /* @__PURE__ */ jsx(
41
+ isUniquePaymentOption && /* @__PURE__ */ jsx(OrderHeader, {}),
42
+ /* @__PURE__ */ jsx(ModalContent, { style: { paddingBottom: 8 }, children: /* @__PURE__ */ jsx(
39
43
  CustomQRCode,
40
44
  {
41
45
  value: url,
42
- image: wallet?.id === "world" ? /* @__PURE__ */ jsx(SquircleIcon, { icon: Logos.World, alt: "World" }) : externalOption?.logoURI ? /* @__PURE__ */ jsx(SquircleIcon, { icon: externalOption.logoURI, alt: "Logo" }) : /* @__PURE__ */ jsx(
46
+ image: wallet?.id ? wallet.icon : externalOption?.logoURI ? /* @__PURE__ */ jsx(SquircleIcon, { icon: externalOption.logoURI, alt: "Logo" }) : /* @__PURE__ */ jsx(
43
47
  "div",
44
48
  {
45
49
  style: {
@@ -74,16 +78,6 @@ const ConnectWithQRCode = ({
74
78
  /* @__PURE__ */ jsx("span", { children: locales.scanScreen_tooltip_default })
75
79
  ] })
76
80
  }
77
- ) }),
78
- hasApps && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
79
- Button,
80
- {
81
- onClick: () => {
82
- context.setRoute(ROUTES.DOWNLOAD);
83
- },
84
- download: true,
85
- children: locales.getWalletName
86
- }
87
81
  ) })
88
82
  ] });
89
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectWithQRCode.js","sources":["../../../../src/components/DaimoPayModal/ConnectWithQRCode.tsx"],"sourcesContent":["import React from \"react\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\n\nimport { ModalContent, PageContent } from \"../Common/Modal/styles\";\n\nimport ScanIconWithLogos from \"../../assets/ScanIconWithLogos\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useLocales from \"../../hooks/useLocales\";\nimport Button from \"../Common/Button\";\nimport CustomQRCode from \"../Common/CustomQRCode\";\n\nimport { writeDaimoPayOrderID } from \"@daimo/pay-common\";\nimport Logos, { SquircleIcon } from \"../../assets/logos\";\nimport MobileWithLogos from \"../../assets/MobileWithLogos\";\nimport { useWallet, WALLET_ID_MOBILE_WALLETS } from \"../../wallets/useWallets\";\n\n/**\n * Continues a Daimo Pay flow in another app.\n * - If the pendingConnectorId is a mobile wallet, deeplink directly into that\n * wallet. This opens the flow in eg. the Rainbow in-app browser, letting the\n * user finish the flow in a single app switch instead of multiple.\n * - If the pendingConnectorId is MOBILE_WALLETS_CONNECTOR_ID, then show a QR\n * that the user can scan from their phone. This opens the flow in eg. mobile\n * Safari, letting them pick which app they want to use & finish there.\n * - If the pendingConnectorId is world, then show a QR that the user can scan\n * from their phone. This deeplinks into the World Mini App\n */\nconst ConnectWithQRCode: React.FC<{ externalUrl: string }> = ({\n externalUrl,\n}) => {\n const context = usePayContext();\n const { pendingConnectorId, paymentState } = context;\n const wallet = useWallet(pendingConnectorId ?? \"\");\n const externalOption = paymentState.selectedExternalOption;\n const pay = useDaimoPay();\n\n const locales = useLocales({\n CONNECTORNAME: wallet?.name ?? externalOption?.id,\n });\n\n if (!wallet && !externalOption)\n return <> No wallet or external option found </>;\n\n const downloads = wallet?.downloadUrls;\n const hasApps = downloads && Object.keys(downloads).length !== 0;\n const payId = pay.order ? writeDaimoPayOrderID(pay.order.id) : \"\";\n\n const isDesktopLinkToMobileWallets = wallet?.id === WALLET_ID_MOBILE_WALLETS;\n const mode = isDesktopLinkToMobileWallets ? \"browser\" : \"wallet\";\n const worldDeeplink =\n wallet?.id === \"world\" && wallet?.getDaimoPayDeeplink\n ? wallet.getDaimoPayDeeplink(payId)\n : null;\n const url =\n externalUrl ?? // QR code opens eg. Binance\n worldDeeplink ?? // open in World App\n `https://pay.daimo.com/pay?id=${payId}&mode=${mode}`; // browser\n\n return (\n <PageContent>\n <ModalContent style={{ paddingBottom: 8, gap: 14 }}>\n <CustomQRCode\n value={url}\n image={\n wallet?.id === \"world\" ? (\n <SquircleIcon icon={Logos.World} alt=\"World\" />\n ) : externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"22.5%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"var(--ck-body-background)\",\n transform: \"scale(1.3) translateY(5%)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n )\n }\n tooltipMessage={\n isDesktopLinkToMobileWallets ? (\n <>\n <ScanIconWithLogos />\n <span>\n Finish the payment <br />\n on your mobile phone\n </span>\n </>\n ) : (\n <>\n <ScanIconWithLogos\n logo={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n wallet?.icon\n )\n }\n />\n <span>{locales.scanScreen_tooltip_default}</span>\n </>\n )\n }\n />\n </ModalContent>\n\n {hasApps && (\n <>\n <Button\n onClick={() => {\n context.setRoute(ROUTES.DOWNLOAD);\n }}\n download\n >\n {locales.getWalletName}\n </Button>\n </>\n )}\n </PageContent>\n );\n};\n\nexport default ConnectWithQRCode;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConnectWithQRCode.js","sources":["../../../../src/components/DaimoPayModal/ConnectWithQRCode.tsx"],"sourcesContent":["import React from \"react\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\n\nimport { ModalContent, PageContent } from \"../Common/Modal/styles\";\n\nimport ScanIconWithLogos from \"../../assets/ScanIconWithLogos\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useLocales from \"../../hooks/useLocales\";\nimport CustomQRCode from \"../Common/CustomQRCode\";\n\nimport { writeDaimoPayOrderID } from \"@daimo/pay-common\";\nimport { SquircleIcon } from \"../../assets/logos\";\nimport MobileWithLogos from \"../../assets/MobileWithLogos\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { WALLET_ID_MOBILE_WALLETS } from \"../../constants/wallets\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { useWallet } from \"../../wallets/useWallets\";\nimport { OrderHeader } from \"../Common/OrderHeader\";\n\n/**\n * Continues a Daimo Pay flow in another app.\n * - If the pendingConnectorId is a mobile wallet, deeplink directly into that\n * wallet. This opens the flow in eg. the Rainbow in-app browser, letting the\n * user finish the flow in a single app switch instead of multiple.\n * - If the pendingConnectorId is MOBILE_WALLETS_CONNECTOR_ID, then show a QR\n * that the user can scan from their phone. This opens the flow in eg. mobile\n * Safari, letting them pick which app they want to use & finish there.\n * - If the pendingConnectorId is a walletConfig, then show a QR that the user can scan\n * from their phone. This deeplinks into the wallet's checkout page\n */\nconst ConnectWithQRCode: React.FC<{ externalUrl?: string | null }> = ({\n externalUrl,\n}) => {\n const context = usePayContext();\n const { isAndroid, isIOS } = useIsMobile();\n const { pendingConnectorId, paymentState } = context;\n const walletFromConnectors = useWallet(pendingConnectorId ?? \"\");\n // Fall back to selectedWallet for wallets from walletConfigs (e.g. unique payment options)\n const wallet = walletFromConnectors || paymentState.selectedWallet;\n const externalOption = paymentState.selectedExternalOption;\n const pay = useDaimoPay();\n\n const locales = useLocales({\n CONNECTORNAME: wallet?.name ?? externalOption?.id,\n });\n\n if (!wallet && !externalOption)\n return <> No wallet or external option found </>;\n\n const payId = pay.order ? writeDaimoPayOrderID(pay.order.id) : \"\";\n const platform = isIOS ? \"ios\" : isAndroid ? \"android\" : \"other\";\n\n const isDesktopLinkToMobileWallets = wallet?.id === WALLET_ID_MOBILE_WALLETS;\n const walletDeeplink = wallet?.getDaimoPayDeeplink\n ? wallet.getDaimoPayDeeplink(payId, platform)\n : null;\n\n const url =\n externalUrl ?? // QR code opens eg. Binance\n walletDeeplink ?? // open in wallet\n `https://pay.daimo.com/pay?id=${payId}&mode=browser`; // browser\n\n // Show order header only for unique payment option scenario\n const isUniquePaymentOption =\n context.uniquePaymentMethodPage === ROUTES.CONNECT ||\n context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;\n\n return (\n <PageContent>\n {isUniquePaymentOption && <OrderHeader />}\n <ModalContent style={{ paddingBottom: 8 }}>\n <CustomQRCode\n value={url}\n image={\n wallet?.id ? (\n wallet.icon\n ) : externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"22.5%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"var(--ck-body-background)\",\n transform: \"scale(1.3) translateY(5%)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n )\n }\n tooltipMessage={\n isDesktopLinkToMobileWallets ? (\n <>\n <ScanIconWithLogos />\n <span>\n Finish the payment <br />\n on your mobile phone\n </span>\n </>\n ) : (\n <>\n <ScanIconWithLogos\n logo={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n wallet?.icon\n )\n }\n />\n <span>{locales.scanScreen_tooltip_default}</span>\n </>\n )\n }\n />\n </ModalContent>\n </PageContent>\n );\n};\n\nexport default ConnectWithQRCode;\n"],"names":[],"mappings":"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"}