@daimo/pay 1.16.8 → 1.16.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.d.ts +2 -2
- package/build/package.json.js +2 -2
- package/build/src/components/Common/OrderHeader/index.js +2 -10
- package/build/src/components/Common/OrderHeader/index.js.map +1 -1
- package/build/src/components/Pages/Connectors/index.js +1 -1
- package/build/src/components/Pages/Connectors/index.js.map +1 -1
- package/build/src/components/Pages/Error/index.js +1 -1
- package/build/src/components/Pages/Error/index.js.map +1 -1
- package/build/src/components/Pages/SelectDepositAddressChain/index.js +1 -1
- package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -1
- package/build/src/components/Pages/SelectExchange/index.js +2 -2
- package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
- package/build/src/components/Pages/SelectToken/index.js +2 -2
- package/build/src/components/Pages/SelectToken/index.js.map +1 -1
- package/build/src/components/Pages/SelectZKP/index.js +2 -2
- package/build/src/components/Pages/SelectZKP/index.js.map +1 -1
- package/build/src/hooks/usePaymentState.js +1 -3
- package/build/src/hooks/usePaymentState.js.map +1 -1
- package/build/src/hooks/useTokenOptions.js +2 -2
- package/build/src/hooks/useTokenOptions.js.map +1 -1
- package/package.json +2 -2
package/build/index.d.ts
CHANGED
|
@@ -535,8 +535,8 @@ interface PaymentState {
|
|
|
535
535
|
selectedDepositAddressOption: DepositAddressPaymentOptionMetadata | undefined;
|
|
536
536
|
getOrderUsdLimit: () => number;
|
|
537
537
|
setPaymentWaitingMessage: (message: string | undefined) => void;
|
|
538
|
-
tokenMode: "evm" | "solana" | "
|
|
539
|
-
setTokenMode: (mode: "evm" | "solana" | "
|
|
538
|
+
tokenMode: "evm" | "solana" | "all";
|
|
539
|
+
setTokenMode: (mode: "evm" | "solana" | "all") => void;
|
|
540
540
|
setSelectedWallet: (wallet: WalletConfigProps | undefined) => void;
|
|
541
541
|
setSelectedWalletDeepLink: (deepLink: string | undefined) => void;
|
|
542
542
|
setSelectedExternalOption: (option: ExternalPaymentOptionMetadata | undefined) => void;
|
package/build/package.json.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@daimo/pay";
|
|
2
|
-
var version = "1.16.
|
|
2
|
+
var version = "1.16.9";
|
|
3
3
|
var author = "Daimo";
|
|
4
4
|
var homepage = "https://pay.daimo.com";
|
|
5
5
|
var license = "BSD-2-Clause license";
|
|
@@ -31,7 +31,7 @@ var scripts = {
|
|
|
31
31
|
lint: "eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings=0"
|
|
32
32
|
};
|
|
33
33
|
var dependencies = {
|
|
34
|
-
"@daimo/pay-common": "1.16.
|
|
34
|
+
"@daimo/pay-common": "1.16.9",
|
|
35
35
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
36
36
|
"@solana/wallet-adapter-react": "^0.15.35",
|
|
37
37
|
"@solana/web3.js": "^1.95.4",
|
|
@@ -15,7 +15,7 @@ import { formatUsd } from '../../../utils/format.js';
|
|
|
15
15
|
|
|
16
16
|
const OrderHeader = ({
|
|
17
17
|
minified = false,
|
|
18
|
-
show = "
|
|
18
|
+
show = "all"
|
|
19
19
|
}) => {
|
|
20
20
|
const { paymentState, route } = usePayContext();
|
|
21
21
|
const { isConnected: isEthConnected, address, connector } = useAccount();
|
|
@@ -71,16 +71,8 @@ const OrderHeader = ({
|
|
|
71
71
|
show === "solana" && isSolanaConnected && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(SubtitleContainer, { children: [
|
|
72
72
|
/* @__PURE__ */ jsx(Subtitle, { children: solWalletDisplayName }),
|
|
73
73
|
solanaIcon
|
|
74
|
-
] }) })
|
|
75
|
-
show === "showCoin" && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(CoinLogos, { $size: 32 }) })
|
|
74
|
+
] }) })
|
|
76
75
|
] });
|
|
77
|
-
} else {
|
|
78
|
-
if (show !== "hideCoin") {
|
|
79
|
-
return /* @__PURE__ */ jsxs(MinifiedContainer, { children: [
|
|
80
|
-
/* @__PURE__ */ jsx(CoinLogos, {}),
|
|
81
|
-
/* @__PURE__ */ jsx(Subtitle, { children: locales.tokensAccepted })
|
|
82
|
-
] });
|
|
83
|
-
}
|
|
84
76
|
}
|
|
85
77
|
} else {
|
|
86
78
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Common/OrderHeader/index.tsx"],"sourcesContent":["import { getAddressContraction } from \"@daimo/pay-common\";\nimport { useWallet } from \"@solana/wallet-adapter-react\";\nimport { motion } from \"framer-motion\";\nimport React from \"react\";\nimport { useAccount } from \"wagmi\";\nimport {\n Arbitrum,\n Base,\n Ethereum,\n Optimism,\n Polygon,\n Solana,\n} from \"../../../assets/chains\";\nimport { USDC } from \"../../../assets/coins\";\nimport defaultTheme from \"../../../constants/defaultTheme\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport styled from \"../../../styles/styled\";\nimport { formatUsd } from \"../../../utils/format\";\n\n/** Shows payment amount. */\nexport const OrderHeader = ({\n minified = false,\n show = \"showCoin\",\n}: {\n minified?: boolean;\n show?: \"evm\" | \"solana\" | \"hideCoin\" | \"showCoin\";\n}) => {\n const { paymentState, route } = usePayContext();\n const { isConnected: isEthConnected, address, connector } = useAccount();\n const {\n connected: isSolanaConnected,\n publicKey,\n wallet: solanaWallet,\n } = useWallet();\n const { senderEnsName } = paymentState;\n const { order } = useDaimoPay();\n\n const ethWalletDisplayName =\n senderEnsName ?? (address ? getAddressContraction(address) : \"wallet\");\n const solWalletDisplayName = getAddressContraction(\n publicKey?.toBase58() ?? \"\",\n );\n const orderUsd = order?.destFinalCallTokenAmount.usd;\n\n const locales = useLocales();\n\n const titleAmountContent = (() => {\n if (paymentState.isDepositFlow) {\n return route === ROUTES.SELECT_TOKEN ? (\n // TODO: make this match `ModalH1` font size for mobile\n <span style={{ fontSize: \"19px\", lineHeight: \"22px\" }}>\n {locales.yourBalances}\n </span>\n ) : null;\n } else {\n return orderUsd != null ? (\n <span>{formatUsd(orderUsd, \"nearest\")}</span>\n ) : null;\n }\n })();\n\n const renderIcon = (\n icon: React.ReactNode | string | undefined,\n name?: string,\n size = 32,\n ): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n return (\n <LogoContainer $size={size} $zIndex={1} style={{ borderRadius: \"22.5%\" }}>\n {typeof icon === \"string\" ? (\n <img\n src={icon}\n alt={name || \"wallet\"}\n style={{ maxWidth: \"100%\", maxHeight: \"100%\" }}\n />\n ) : (\n icon\n )}\n </LogoContainer>\n );\n };\n let walletIcon = renderIcon(connector?.icon);\n let solanaIcon = renderIcon(\n solanaWallet?.adapter.icon || <Solana />,\n solanaWallet?.adapter.name,\n );\n\n if (minified) {\n if (titleAmountContent != null) {\n return (\n <MinifiedContainer>\n <MinifiedTitleAmount>{titleAmountContent}</MinifiedTitleAmount>\n {show === \"evm\" && isEthConnected && (\n <>\n <SubtitleContainer>\n <Subtitle>{ethWalletDisplayName}</Subtitle>\n {walletIcon}\n </SubtitleContainer>\n </>\n )}\n {show === \"solana\" && isSolanaConnected && (\n <>\n <SubtitleContainer>\n <Subtitle>{solWalletDisplayName}</Subtitle>\n {solanaIcon}\n </SubtitleContainer>\n </>\n )}\n {show === \"showCoin\" && (\n <>\n <CoinLogos $size={32} />\n </>\n )}\n </MinifiedContainer>\n );\n } else {\n if (show !== \"hideCoin\") {\n return (\n <MinifiedContainer>\n <CoinLogos />\n <Subtitle>{locales.tokensAccepted}</Subtitle>\n </MinifiedContainer>\n );\n }\n }\n } else {\n return (\n <>\n {titleAmountContent && <TitleAmount>{titleAmountContent}</TitleAmount>}\n <AnyChainAnyCoinContainer>\n <CoinLogos />\n <Subtitle>{locales.tokensAccepted}</Subtitle>\n </AnyChainAnyCoinContainer>\n </>\n );\n }\n};\n\nfunction CoinLogos({ $size = 24 }: { $size?: number }) {\n const logos = [\n <Ethereum key=\"eth\" />,\n <USDC key=\"usdc\" />,\n <Optimism key=\"optimism\" />,\n <Arbitrum key=\"arbitrum\" />,\n <Base key=\"base\" />,\n <Polygon key=\"polygon\" />,\n <Solana key=\"solana\" />,\n ];\n\n const logoBlock = (element: React.ReactElement, index: number) => (\n <LogoContainer\n key={index}\n $marginLeft={index !== 0 ? -($size / 3) : 0}\n $zIndex={logos.length - index}\n $size={$size}\n transition={{ duration: 0.5, ease: [0.175, 0.885, 0.32, 0.98] }}\n >\n {element}\n </LogoContainer>\n );\n\n return (\n <Logos>{logos.map((element, index) => logoBlock(element, index))}</Logos>\n );\n}\n\nconst TitleAmount = styled(motion.h1)<{\n $error?: boolean;\n $valid?: boolean;\n}>`\n margin-bottom: 24px;\n padding: 0;\n line-height: 66px;\n font-size: 64px;\n font-weight: var(--ck-modal-h1-font-weight, 600);\n color: ${(props) => {\n if (props.$error) return \"var(--ck-body-color-danger)\";\n if (props.$valid) return \"var(--ck-body-color-valid)\";\n return \"var(--ck-body-color)\";\n }};\n @media only screen and (max-width: ${defaultTheme.mobileWidth}px) {\n font-size: 64px;\n }\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n`;\n\nconst Subtitle = styled(motion.div)`\n font-size: 18px;\n font-weight: 500;\n line-height: 21px;\n color: var(--ck-body-color-muted);\n`;\n\nconst MinifiedTitleAmount = styled(motion.div)`\n font-size: 32px;\n font-weight: var(--ck-modal-h1-font-weight, 600);\n line-height: 36px;\n color: var(--ck-body-color);\n display: flex;\n align-items: center;\n justify-content: start;\n gap: 8px;\n`;\n\nconst MinifiedContainer = styled(motion.div)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-bottom: 24px;\n`;\n\nconst AnyChainAnyCoinContainer = styled(motion.div)`\n display: flex;\n vertical-align: middle;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 8px;\n margin-bottom: 24px;\n`;\n\nconst LogoContainer = styled(motion.div)<{\n $marginLeft?: number;\n $zIndex?: number;\n $size: number;\n}>`\n display: block;\n overflow: hidden;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: ${(props) => props.$marginLeft || 0}px;\n z-index: ${(props) => props.$zIndex || 2};\n width: ${(props) => props.$size}px;\n height: ${(props) => props.$size}px;\n border-radius: 9999px;\n svg {\n display: block;\n width: 100%;\n height: auto;\n }\n`;\n\nconst Logos = styled(motion.div)`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst SubtitleContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n`;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Common/OrderHeader/index.tsx"],"sourcesContent":["import { getAddressContraction } from \"@daimo/pay-common\";\nimport { useWallet } from \"@solana/wallet-adapter-react\";\nimport { motion } from \"framer-motion\";\nimport React from \"react\";\nimport { useAccount } from \"wagmi\";\nimport {\n Arbitrum,\n Base,\n Ethereum,\n Optimism,\n Polygon,\n Solana,\n} from \"../../../assets/chains\";\nimport { USDC } from \"../../../assets/coins\";\nimport defaultTheme from \"../../../constants/defaultTheme\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport styled from \"../../../styles/styled\";\nimport { formatUsd } from \"../../../utils/format\";\n\n/** Shows payment amount. */\nexport const OrderHeader = ({\n minified = false,\n show = \"all\",\n}: {\n minified?: boolean;\n show?: \"evm\" | \"solana\" | \"zkp2p\" | \"all\";\n}) => {\n const { paymentState, route } = usePayContext();\n const { isConnected: isEthConnected, address, connector } = useAccount();\n const {\n connected: isSolanaConnected,\n publicKey,\n wallet: solanaWallet,\n } = useWallet();\n const { senderEnsName } = paymentState;\n const { order } = useDaimoPay();\n\n const ethWalletDisplayName =\n senderEnsName ?? (address ? getAddressContraction(address) : \"wallet\");\n const solWalletDisplayName = getAddressContraction(\n publicKey?.toBase58() ?? \"\",\n );\n const orderUsd = order?.destFinalCallTokenAmount.usd;\n\n const locales = useLocales();\n\n const titleAmountContent = (() => {\n if (paymentState.isDepositFlow) {\n return route === ROUTES.SELECT_TOKEN ? (\n // TODO: make this match `ModalH1` font size for mobile\n <span style={{ fontSize: \"19px\", lineHeight: \"22px\" }}>\n {locales.yourBalances}\n </span>\n ) : null;\n } else {\n return orderUsd != null ? (\n <span>{formatUsd(orderUsd, \"nearest\")}</span>\n ) : null;\n }\n })();\n\n const renderIcon = (\n icon: React.ReactNode | string | undefined,\n name?: string,\n size = 32,\n ): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n return (\n <LogoContainer $size={size} $zIndex={1} style={{ borderRadius: \"22.5%\" }}>\n {typeof icon === \"string\" ? (\n <img\n src={icon}\n alt={name || \"wallet\"}\n style={{ maxWidth: \"100%\", maxHeight: \"100%\" }}\n />\n ) : (\n icon\n )}\n </LogoContainer>\n );\n };\n let walletIcon = renderIcon(connector?.icon);\n let solanaIcon = renderIcon(\n solanaWallet?.adapter.icon || <Solana />,\n solanaWallet?.adapter.name,\n );\n\n if (minified) {\n if (titleAmountContent != null) {\n return (\n <MinifiedContainer>\n <MinifiedTitleAmount>{titleAmountContent}</MinifiedTitleAmount>\n {show === \"evm\" && isEthConnected && (\n <>\n <SubtitleContainer>\n <Subtitle>{ethWalletDisplayName}</Subtitle>\n {walletIcon}\n </SubtitleContainer>\n </>\n )}\n {show === \"solana\" && isSolanaConnected && (\n <>\n <SubtitleContainer>\n <Subtitle>{solWalletDisplayName}</Subtitle>\n {solanaIcon}\n </SubtitleContainer>\n </>\n )}\n </MinifiedContainer>\n );\n }\n } else {\n return (\n <>\n {titleAmountContent && <TitleAmount>{titleAmountContent}</TitleAmount>}\n <AnyChainAnyCoinContainer>\n <CoinLogos />\n <Subtitle>{locales.tokensAccepted}</Subtitle>\n </AnyChainAnyCoinContainer>\n </>\n );\n }\n};\n\nfunction CoinLogos({ $size = 24 }: { $size?: number }) {\n const logos = [\n <Ethereum key=\"eth\" />,\n <USDC key=\"usdc\" />,\n <Optimism key=\"optimism\" />,\n <Arbitrum key=\"arbitrum\" />,\n <Base key=\"base\" />,\n <Polygon key=\"polygon\" />,\n <Solana key=\"solana\" />,\n ];\n\n const logoBlock = (element: React.ReactElement, index: number) => (\n <LogoContainer\n key={index}\n $marginLeft={index !== 0 ? -($size / 3) : 0}\n $zIndex={logos.length - index}\n $size={$size}\n transition={{ duration: 0.5, ease: [0.175, 0.885, 0.32, 0.98] }}\n >\n {element}\n </LogoContainer>\n );\n\n return (\n <Logos>{logos.map((element, index) => logoBlock(element, index))}</Logos>\n );\n}\n\nconst TitleAmount = styled(motion.h1)<{\n $error?: boolean;\n $valid?: boolean;\n}>`\n margin-bottom: 24px;\n padding: 0;\n line-height: 66px;\n font-size: 64px;\n font-weight: var(--ck-modal-h1-font-weight, 600);\n color: ${(props) => {\n if (props.$error) return \"var(--ck-body-color-danger)\";\n if (props.$valid) return \"var(--ck-body-color-valid)\";\n return \"var(--ck-body-color)\";\n }};\n @media only screen and (max-width: ${defaultTheme.mobileWidth}px) {\n font-size: 64px;\n }\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n`;\n\nconst Subtitle = styled(motion.div)`\n font-size: 18px;\n font-weight: 500;\n line-height: 21px;\n color: var(--ck-body-color-muted);\n`;\n\nconst MinifiedTitleAmount = styled(motion.div)`\n font-size: 32px;\n font-weight: var(--ck-modal-h1-font-weight, 600);\n line-height: 36px;\n color: var(--ck-body-color);\n display: flex;\n align-items: center;\n justify-content: start;\n gap: 8px;\n`;\n\nconst MinifiedContainer = styled(motion.div)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-bottom: 24px;\n`;\n\nconst AnyChainAnyCoinContainer = styled(motion.div)`\n display: flex;\n vertical-align: middle;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: 8px;\n margin-bottom: 24px;\n`;\n\nconst LogoContainer = styled(motion.div)<{\n $marginLeft?: number;\n $zIndex?: number;\n $size: number;\n}>`\n display: block;\n overflow: hidden;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: ${(props) => props.$marginLeft || 0}px;\n z-index: ${(props) => props.$zIndex || 2};\n width: ${(props) => props.$size}px;\n height: ${(props) => props.$size}px;\n border-radius: 9999px;\n svg {\n display: block;\n width: 100%;\n height: auto;\n }\n`;\n\nconst Logos = styled(motion.div)`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst SubtitleContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n`;\n"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ const Wallets = () => {
|
|
|
18
18
|
}
|
|
19
19
|
}, [context.paymentState.isDepositFlow, hydrateOrder, order]);
|
|
20
20
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
21
|
-
/* @__PURE__ */ jsx(OrderHeader, { minified: true
|
|
21
|
+
/* @__PURE__ */ jsx(OrderHeader, { minified: true }),
|
|
22
22
|
/* @__PURE__ */ jsx(ConnectorList, {}),
|
|
23
23
|
context.options?.disclaimer && /* @__PURE__ */ jsx(Disclaimer, { style: { visibility: "hidden", pointerEvents: "none" }, children: /* @__PURE__ */ jsx("div", { children: context.options?.disclaimer }) })
|
|
24
24
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Connectors/index.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport { Disclaimer, PageContent } from \"../../Common/Modal/styles\";\n\nimport { DaimoPayOrderMode } from \"@daimo/pay-common\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport ConnectorList from \"../../Common/ConnectorList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst Wallets: React.FC = () => {\n const context = usePayContext();\n const locales = useLocales({});\n\n const { hydrateOrder, order } = useDaimoPay();\n\n // If we're not in deposit mode, hydrate immediately.\n useEffect(() => {\n if (\n !context.paymentState.isDepositFlow &&\n order != null &&\n order.mode !== DaimoPayOrderMode.HYDRATED\n ) {\n hydrateOrder();\n }\n }, [context.paymentState.isDepositFlow, hydrateOrder, order]);\n\n return (\n <PageContent>\n <OrderHeader minified
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Connectors/index.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport { Disclaimer, PageContent } from \"../../Common/Modal/styles\";\n\nimport { DaimoPayOrderMode } from \"@daimo/pay-common\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport ConnectorList from \"../../Common/ConnectorList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst Wallets: React.FC = () => {\n const context = usePayContext();\n const locales = useLocales({});\n\n const { hydrateOrder, order } = useDaimoPay();\n\n // If we're not in deposit mode, hydrate immediately.\n useEffect(() => {\n if (\n !context.paymentState.isDepositFlow &&\n order != null &&\n order.mode !== DaimoPayOrderMode.HYDRATED\n ) {\n hydrateOrder();\n }\n }, [context.paymentState.isDepositFlow, hydrateOrder, order]);\n\n return (\n <PageContent>\n <OrderHeader minified />\n <ConnectorList />\n {context.options?.disclaimer && (\n <Disclaimer style={{ visibility: \"hidden\", pointerEvents: \"none\" }}>\n <div>{context.options?.disclaimer}</div>\n </Disclaimer>\n )}\n </PageContent>\n );\n};\n\nexport default Wallets;\n"],"names":[],"mappings":";;;;;;;;;;AAWA,MAAM,UAAoB,MAAM;AAC9B,EAAA,MAAM,UAAU,aAAc,EAAA,CAAA;AAC9B,EAAgB,UAAW,CAAA,EAAE,EAAA;AAE7B,EAAA,MAAM,EAAE,YAAA,EAAc,KAAM,EAAA,GAAI,WAAY,EAAA,CAAA;AAG5C,EAAA,SAAA,CAAU,MAAM;AACd,IACE,IAAA,CAAC,QAAQ,YAAa,CAAA,aAAA,IACtB,SAAS,IACT,IAAA,KAAA,CAAM,IAAS,KAAA,iBAAA,CAAkB,QACjC,EAAA;AACA,MAAa,YAAA,EAAA,CAAA;AAAA,KACf;AAAA,KACC,CAAC,OAAA,CAAQ,aAAa,aAAe,EAAA,YAAA,EAAc,KAAK,CAAC,CAAA,CAAA;AAE5D,EAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,WAAA,EAAA,EAAY,UAAQ,IAAC,EAAA,CAAA;AAAA,wBACrB,aAAc,EAAA,EAAA,CAAA;AAAA,IACd,QAAQ,OAAS,EAAA,UAAA,oBACf,GAAA,CAAA,UAAA,EAAA,EAAW,OAAO,EAAE,UAAA,EAAY,QAAU,EAAA,aAAA,EAAe,QACxD,EAAA,QAAA,kBAAA,GAAA,CAAC,SAAK,QAAQ,EAAA,OAAA,CAAA,OAAA,EAAS,YAAW,CACpC,EAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -8,11 +8,11 @@ import PoweredByFooter from '../../Common/PoweredByFooter/index.js';
|
|
|
8
8
|
|
|
9
9
|
function ErrorPage() {
|
|
10
10
|
const pay = useDaimoPay();
|
|
11
|
-
const supportUrl = getSupportUrl(pay.order?.id?.toString() ?? "", "Error");
|
|
12
11
|
let errorBody = "Unknown error";
|
|
13
12
|
if (pay.paymentState === "error") {
|
|
14
13
|
errorBody = pay.paymentErrorMessage;
|
|
15
14
|
}
|
|
15
|
+
const supportUrl = getSupportUrl(pay.order?.id?.toString() ?? "", errorBody);
|
|
16
16
|
return /* @__PURE__ */ jsx(PageContent, { children: /* @__PURE__ */ jsxs(
|
|
17
17
|
ModalContent,
|
|
18
18
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Error/index.tsx"],"sourcesContent":["import {\n ModalBody,\n ModalContent,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport { AlertIcon } from \"../../../assets/icons\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport styled from \"../../../styles/styled\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\n\nexport default function ErrorPage() {\n const pay = useDaimoPay();\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Error/index.tsx"],"sourcesContent":["import {\n ModalBody,\n ModalContent,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport { AlertIcon } from \"../../../assets/icons\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport styled from \"../../../styles/styled\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\n\nexport default function ErrorPage() {\n const pay = useDaimoPay();\n\n let errorBody = \"Unknown error\";\n if (pay.paymentState === \"error\") {\n errorBody = pay.paymentErrorMessage;\n }\n\n const supportUrl = getSupportUrl(pay.order?.id?.toString() ?? \"\", errorBody);\n\n return (\n <PageContent>\n <ModalContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingBottom: 0,\n position: \"relative\",\n }}\n >\n <CenterContainer>\n <FailIcon />\n <ErrorBody>\n <strong>{errorBody}</strong>\n </ErrorBody>\n </CenterContainer>\n <PoweredByFooter supportUrl={supportUrl} showNeedHelpImmediately />\n </ModalContent>\n </PageContent>\n );\n}\n\nconst CenterContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 16px;\n max-width: 100%;\n`;\n\nconst ErrorBody = styled(ModalBody)`\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst FailIcon = styled(AlertIcon)`\n color: var(--ck-body-color-alert);\n width: 32px;\n height: 32px;\n margin-top: auto;\n margin-bottom: 16px;\n`;\n"],"names":[],"mappings":";;;;;;;;AAYA,SAAwB,SAAY,GAAA;AAClC,EAAA,MAAM,MAAM,WAAY,EAAA,CAAA;AAExB,EAAA,IAAI,SAAY,GAAA,eAAA,CAAA;AAChB,EAAI,IAAA,GAAA,CAAI,iBAAiB,OAAS,EAAA;AAChC,IAAA,SAAA,GAAY,GAAI,CAAA,mBAAA,CAAA;AAAA,GAClB;AAEA,EAAM,MAAA,UAAA,GAAa,cAAc,GAAI,CAAA,KAAA,EAAO,IAAI,QAAS,EAAA,IAAK,IAAI,SAAS,CAAA,CAAA;AAE3E,EAAA,2BACG,WACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA;AAAA,QACL,OAAS,EAAA,MAAA;AAAA,QACT,cAAgB,EAAA,QAAA;AAAA,QAChB,UAAY,EAAA,QAAA;AAAA,QACZ,aAAe,EAAA,CAAA;AAAA,QACf,QAAU,EAAA,UAAA;AAAA,OACZ;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,eACC,EAAA,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAS,EAAA,EAAA,CAAA;AAAA,0BACT,GAAA,CAAA,SAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAQ,qBAAU,CACrB,EAAA,CAAA;AAAA,SACF,EAAA,CAAA;AAAA,wBACC,GAAA,CAAA,eAAA,EAAA,EAAgB,UAAwB,EAAA,uBAAA,EAAuB,IAAC,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAErE,EAAA,CAAA,CAAA;AAEJ,CAAA;AAEA,MAAM,kBAAkB,MAAO,CAAA,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAQ/B,MAAM,SAAA,GAAY,OAAO,SAAS,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAMlC,MAAM,QAAA,GAAW,OAAO,SAAS,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
|
|
@@ -19,7 +19,7 @@ const SelectDepositAddressChain = () => {
|
|
|
19
19
|
untronAvailable
|
|
20
20
|
} = paymentState;
|
|
21
21
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
22
|
-
/* @__PURE__ */ jsx(OrderHeader, { minified: true
|
|
22
|
+
/* @__PURE__ */ jsx(OrderHeader, { minified: true }),
|
|
23
23
|
!depositAddressOptions.loading && depositAddressOptions.options?.length === 0 && /* @__PURE__ */ jsxs(
|
|
24
24
|
ModalContent,
|
|
25
25
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectDepositAddressChain/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport { ModalContent, ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport {\n DaimoPayOrderMode,\n DepositAddressPaymentOptions,\n} from \"@daimo/pay-common\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\nimport SelectAnotherMethodButton from \"../../Common/SelectAnotherMethodButton\";\n\nconst SelectDepositAddressChain: React.FC = () => {\n const { setRoute, paymentState } = usePayContext();\n const pay = useDaimoPay();\n const { order } = pay;\n const {\n isDepositFlow,\n setSelectedDepositAddressOption,\n depositAddressOptions,\n untronAvailable,\n } = paymentState;\n\n return (\n <PageContent>\n <OrderHeader minified
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectDepositAddressChain/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport { ModalContent, ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport {\n DaimoPayOrderMode,\n DepositAddressPaymentOptions,\n} from \"@daimo/pay-common\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\nimport SelectAnotherMethodButton from \"../../Common/SelectAnotherMethodButton\";\n\nconst SelectDepositAddressChain: React.FC = () => {\n const { setRoute, paymentState } = usePayContext();\n const pay = useDaimoPay();\n const { order } = pay;\n const {\n isDepositFlow,\n setSelectedDepositAddressOption,\n depositAddressOptions,\n untronAvailable,\n } = paymentState;\n\n return (\n <PageContent>\n <OrderHeader minified />\n\n {!depositAddressOptions.loading &&\n depositAddressOptions.options?.length === 0 && (\n <ModalContent\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingTop: 16,\n paddingBottom: 16,\n }}\n >\n <ModalH1>Chains unavailable.</ModalH1>\n <SelectAnotherMethodButton />\n </ModalContent>\n )}\n\n <OptionsList\n requiredSkeletons={4}\n isLoading={depositAddressOptions.loading}\n options={(depositAddressOptions.options ?? [])\n .map((option) => {\n const disabled =\n // Disable if usd below min\n (option.minimumUsd > 0 &&\n order?.mode === DaimoPayOrderMode.HYDRATED &&\n order.usdValue < option.minimumUsd) ||\n // Disable if TRON_USDT unavailable\n (option.id === DepositAddressPaymentOptions.TRON_USDT &&\n untronAvailable === false);\n\n return {\n id: option.id,\n title: option.id,\n icons: [option.logoURI],\n disabled,\n onClick: () => {\n setSelectedDepositAddressOption(option);\n const meta = { event: \"click-option\", option: option.id };\n if (isDepositFlow) {\n setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, meta);\n } else {\n setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, meta);\n }\n },\n };\n })\n // Push disabled options to the bottom of the list\n .sort((a, b) => Number(a.disabled) - Number(b.disabled))}\n />\n </PageContent>\n );\n};\n\nexport default SelectDepositAddressChain;\n"],"names":[],"mappings":";;;;;;;;;;AAeA,MAAM,4BAAsC,MAAM;AAChD,EAAA,MAAM,EAAE,QAAA,EAAU,YAAa,EAAA,GAAI,aAAc,EAAA,CAAA;AACjD,EAAA,MAAM,MAAM,WAAY,EAAA,CAAA;AACxB,EAAM,MAAA,EAAE,OAAU,GAAA,GAAA,CAAA;AAClB,EAAM,MAAA;AAAA,IACJ,aAAA;AAAA,IACA,+BAAA;AAAA,IACA,qBAAA;AAAA,IACA,eAAA;AAAA,GACE,GAAA,YAAA,CAAA;AAEJ,EAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,WAAA,EAAA,EAAY,UAAQ,IAAC,EAAA,CAAA;AAAA,IAErB,CAAC,qBAAsB,CAAA,OAAA,IACtB,qBAAsB,CAAA,OAAA,EAAS,WAAW,CACxC,oBAAA,IAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA;AAAA,UACL,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,QAAA;AAAA,UACZ,cAAgB,EAAA,QAAA;AAAA,UAChB,UAAY,EAAA,EAAA;AAAA,UACZ,aAAe,EAAA,EAAA;AAAA,SACjB;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAQ,QAAmB,EAAA,qBAAA,EAAA,CAAA;AAAA,8BAC3B,yBAA0B,EAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KAC7B;AAAA,oBAGJ,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,iBAAmB,EAAA,CAAA;AAAA,QACnB,WAAW,qBAAsB,CAAA,OAAA;AAAA,QACjC,UAAU,qBAAsB,CAAA,OAAA,IAAW,EACxC,EAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACf,UAAM,MAAA,QAAA;AAAA;AAAA,YAEH,MAAA,CAAO,aAAa,CACnB,IAAA,KAAA,EAAO,SAAS,iBAAkB,CAAA,QAAA,IAClC,KAAM,CAAA,QAAA,GAAW,MAAO,CAAA,UAAA;AAAA,YAEzB,MAAO,CAAA,EAAA,KAAO,4BAA6B,CAAA,SAAA,IAC1C,eAAoB,KAAA,KAAA;AAAA,WAAA,CAAA;AAExB,UAAO,OAAA;AAAA,YACL,IAAI,MAAO,CAAA,EAAA;AAAA,YACX,OAAO,MAAO,CAAA,EAAA;AAAA,YACd,KAAA,EAAO,CAAC,MAAA,CAAO,OAAO,CAAA;AAAA,YACtB,QAAA;AAAA,YACA,SAAS,MAAM;AACb,cAAA,+BAAA,CAAgC,MAAM,CAAA,CAAA;AACtC,cAAA,MAAM,OAAO,EAAE,KAAA,EAAO,cAAgB,EAAA,MAAA,EAAQ,OAAO,EAAG,EAAA,CAAA;AACxD,cAAA,IAAI,aAAe,EAAA;AACjB,gBAAS,QAAA,CAAA,MAAA,CAAO,+BAA+B,IAAI,CAAA,CAAA;AAAA,eAC9C,MAAA;AACL,gBAAS,QAAA,CAAA,MAAA,CAAO,yBAAyB,IAAI,CAAA,CAAA;AAAA,eAC/C;AAAA,aACF;AAAA,WACF,CAAA;AAAA,SACD,CAAA,CAEA,IAAK,CAAA,CAAC,CAAG,EAAA,CAAA,KAAM,MAAO,CAAA,CAAA,CAAE,QAAQ,CAAA,GAAI,MAAO,CAAA,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,OAAA;AAAA,KAC3D;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -11,7 +11,7 @@ const SelectExchange = () => {
|
|
|
11
11
|
const exchangeOptions = externalPaymentOptions.options.get("exchange");
|
|
12
12
|
if (!exchangeOptions) {
|
|
13
13
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
14
|
-
/* @__PURE__ */ jsx(OrderHeader, { minified: true
|
|
14
|
+
/* @__PURE__ */ jsx(OrderHeader, { minified: true }),
|
|
15
15
|
/* @__PURE__ */ jsx(ModalH1, { children: "No Exchange options available" })
|
|
16
16
|
] });
|
|
17
17
|
}
|
|
@@ -32,7 +32,7 @@ const SelectExchange = () => {
|
|
|
32
32
|
subtitle: option.message
|
|
33
33
|
}));
|
|
34
34
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
35
|
-
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "
|
|
35
|
+
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "zkp2p" }),
|
|
36
36
|
/* @__PURE__ */ jsx(OptionsList, { options })
|
|
37
37
|
] });
|
|
38
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectExchange/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst SelectExchange: React.FC = () => {\n const { paymentState, setRoute } = usePayContext();\n const { externalPaymentOptions, setSelectedExternalOption } = paymentState;\n const exchangeOptions = externalPaymentOptions.options.get(\"exchange\");\n\n if (!exchangeOptions) {\n return (\n <PageContent>\n <OrderHeader minified
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectExchange/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst SelectExchange: React.FC = () => {\n const { paymentState, setRoute } = usePayContext();\n const { externalPaymentOptions, setSelectedExternalOption } = paymentState;\n const exchangeOptions = externalPaymentOptions.options.get(\"exchange\");\n\n if (!exchangeOptions) {\n return (\n <PageContent>\n <OrderHeader minified />\n <ModalH1>No Exchange options available</ModalH1>\n </PageContent>\n );\n }\n\n const options = exchangeOptions.map((option) => ({\n id: option.id,\n title: option.cta,\n icons: [option.logoURI],\n onClick: () => {\n setSelectedExternalOption(option);\n const meta = { event: \"click-option\", option: option.id };\n if (paymentState.isDepositFlow) {\n setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta);\n } else {\n setRoute(ROUTES.WAITING_EXTERNAL, meta);\n }\n },\n disabled: option.disabled,\n subtitle: option.message,\n }));\n\n return (\n <PageContent>\n <OrderHeader minified show=\"zkp2p\" />\n <OptionsList options={options} />\n </PageContent>\n );\n};\n\nexport default SelectExchange;\n"],"names":[],"mappings":";;;;;;;AASA,MAAM,iBAA2B,MAAM;AACrC,EAAA,MAAM,EAAE,YAAA,EAAc,QAAS,EAAA,GAAI,aAAc,EAAA,CAAA;AACjD,EAAM,MAAA,EAAE,sBAAwB,EAAA,yBAAA,EAA8B,GAAA,YAAA,CAAA;AAC9D,EAAA,MAAM,eAAkB,GAAA,sBAAA,CAAuB,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,CAAA;AAErE,EAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,IAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,WAAA,EAAA,EAAY,UAAQ,IAAC,EAAA,CAAA;AAAA,sBACtB,GAAA,CAAC,WAAQ,QAA6B,EAAA,+BAAA,EAAA,CAAA;AAAA,KACxC,EAAA,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,MAAM,OAAU,GAAA,eAAA,CAAgB,GAAI,CAAA,CAAC,MAAY,MAAA;AAAA,IAC/C,IAAI,MAAO,CAAA,EAAA;AAAA,IACX,OAAO,MAAO,CAAA,GAAA;AAAA,IACd,KAAA,EAAO,CAAC,MAAA,CAAO,OAAO,CAAA;AAAA,IACtB,SAAS,MAAM;AACb,MAAA,yBAAA,CAA0B,MAAM,CAAA,CAAA;AAChC,MAAA,MAAM,OAAO,EAAE,KAAA,EAAO,cAAgB,EAAA,MAAA,EAAQ,OAAO,EAAG,EAAA,CAAA;AACxD,MAAA,IAAI,aAAa,aAAe,EAAA;AAC9B,QAAS,QAAA,CAAA,MAAA,CAAO,wBAAwB,IAAI,CAAA,CAAA;AAAA,OACvC,MAAA;AACL,QAAS,QAAA,CAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA,CAAA;AAAA,OACxC;AAAA,KACF;AAAA,IACA,UAAU,MAAO,CAAA,QAAA;AAAA,IACjB,UAAU,MAAO,CAAA,OAAA;AAAA,GACjB,CAAA,CAAA,CAAA;AAEF,EAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,QAAA,EAAQ,IAAC,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA;AAAA,oBACnC,GAAA,CAAC,eAAY,OAAkB,EAAA,CAAA;AAAA,GACjC,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -23,7 +23,7 @@ function SelectToken() {
|
|
|
23
23
|
const solanaWallets = useWallet();
|
|
24
24
|
const isSolConnected = solanaWallets.connected;
|
|
25
25
|
const isConnected = isEvmConnected || isSolConnected;
|
|
26
|
-
const isAnotherMethodButtonVisible = optionsList.length > 0 && tokenMode !== "
|
|
26
|
+
const isAnotherMethodButtonVisible = optionsList.length > 0 && tokenMode !== "all";
|
|
27
27
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
28
28
|
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: tokenMode }),
|
|
29
29
|
/* @__PURE__ */ jsx(
|
|
@@ -38,7 +38,7 @@ function SelectToken() {
|
|
|
38
38
|
}
|
|
39
39
|
),
|
|
40
40
|
!isLoading && isConnected && optionsList.length === 0 && /* @__PURE__ */ jsx(InsufficientBalance, {}),
|
|
41
|
-
!isLoading && !isConnected && tokenMode === "
|
|
41
|
+
!isLoading && !isConnected && tokenMode === "all" && /* @__PURE__ */ jsx(ConnectButton, {}),
|
|
42
42
|
isAnotherMethodButtonVisible && /* @__PURE__ */ jsx(SelectAnotherMethodButton, {})
|
|
43
43
|
] });
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectToken/index.tsx"],"sourcesContent":["import { useWallet } from \"@solana/wallet-adapter-react\";\nimport { injected, useAccount } from \"wagmi\";\nimport { Ethereum, Solana } from \"../../../assets/chains\";\nimport defaultTheme from \"../../../constants/defaultTheme\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { useTokenOptions } from \"../../../hooks/useTokenOptions\";\nimport { ModalContent, ModalH1, PageContent } from \"../../Common/Modal/styles\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\nimport SelectAnotherMethodButton from \"../../Common/SelectAnotherMethodButton\";\n\nexport default function SelectToken() {\n const { isMobile } = useIsMobile();\n const isMobileFormat =\n isMobile || window?.innerWidth < defaultTheme.mobileWidth;\n\n const { paymentState } = usePayContext();\n const { tokenMode } = paymentState;\n const { optionsList, isLoading } = useTokenOptions(tokenMode);\n const { isConnected: isEvmConnected } = useAccount();\n\n const solanaWallets = useWallet();\n const isSolConnected = solanaWallets.connected;\n const isConnected = isEvmConnected || isSolConnected;\n\n const isAnotherMethodButtonVisible =\n optionsList.length > 0 && tokenMode !== \"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectToken/index.tsx"],"sourcesContent":["import { useWallet } from \"@solana/wallet-adapter-react\";\nimport { injected, useAccount } from \"wagmi\";\nimport { Ethereum, Solana } from \"../../../assets/chains\";\nimport defaultTheme from \"../../../constants/defaultTheme\";\nimport { useConnect } from \"../../../hooks/useConnect\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { useTokenOptions } from \"../../../hooks/useTokenOptions\";\nimport { ModalContent, ModalH1, PageContent } from \"../../Common/Modal/styles\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\nimport SelectAnotherMethodButton from \"../../Common/SelectAnotherMethodButton\";\n\nexport default function SelectToken() {\n const { isMobile } = useIsMobile();\n const isMobileFormat =\n isMobile || window?.innerWidth < defaultTheme.mobileWidth;\n\n const { paymentState } = usePayContext();\n const { tokenMode } = paymentState;\n const { optionsList, isLoading } = useTokenOptions(tokenMode);\n const { isConnected: isEvmConnected } = useAccount();\n\n const solanaWallets = useWallet();\n const isSolConnected = solanaWallets.connected;\n const isConnected = isEvmConnected || isSolConnected;\n\n const isAnotherMethodButtonVisible =\n optionsList.length > 0 && tokenMode !== \"all\";\n\n return (\n <PageContent>\n <OrderHeader minified show={tokenMode} />\n <OptionsList\n requiredSkeletons={4}\n isLoading={isLoading}\n options={optionsList}\n scrollHeight={\n isAnotherMethodButtonVisible && isMobileFormat ? 225 : 300\n }\n orDivider={isAnotherMethodButtonVisible}\n hideBottomLine={!isAnotherMethodButtonVisible}\n />\n {!isLoading && isConnected && optionsList.length === 0 && (\n <InsufficientBalance />\n )}\n {!isLoading && !isConnected && tokenMode === \"all\" && <ConnectButton />}\n {isAnotherMethodButtonVisible && <SelectAnotherMethodButton />}\n </PageContent>\n );\n}\n\nfunction InsufficientBalance() {\n const locales = useLocales();\n return (\n <ModalContent\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingTop: 16,\n paddingBottom: 16,\n }}\n >\n <ModalH1>{locales.insufficientBalance}</ModalH1>\n <SelectAnotherMethodButton />\n </ModalContent>\n );\n}\n\nfunction ConnectButton() {\n const locales = useLocales();\n const { connect } = useConnect();\n const solanaWallets = useWallet();\n // On Android, filter out the Android Intent deeplink fake wallet.\n const filteredWallets = solanaWallets.wallets.filter(\n (w) => w.adapter.name !== \"Mobile Wallet Adapter\",\n );\n const hasSolanaWallet = filteredWallets.length > 0;\n\n const icons = [<Ethereum key=\"ethereum\" />];\n if (hasSolanaWallet) {\n icons.push(<Solana key=\"solana\" />);\n }\n\n const onClick = () => {\n connect({\n connector: injected(),\n });\n if (hasSolanaWallet) {\n if (solanaWallets.wallet == null) {\n solanaWallets.select(solanaWallets.wallets[0].adapter.name);\n }\n solanaWallets.connect();\n }\n };\n\n const connectOption = {\n id: \"connect-wallet\",\n title: locales.connectWallet,\n icons,\n onClick,\n };\n\n return <OptionsList options={[connectOption]} />;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ const SelectZKP = () => {
|
|
|
11
11
|
const zkp2pOptions = externalPaymentOptions.options.get("zkp2p");
|
|
12
12
|
if (!zkp2pOptions) {
|
|
13
13
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
14
|
-
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "
|
|
14
|
+
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "zkp2p" }),
|
|
15
15
|
/* @__PURE__ */ jsx(ModalH1, { children: "No ZKP2P options available" })
|
|
16
16
|
] });
|
|
17
17
|
}
|
|
@@ -32,7 +32,7 @@ const SelectZKP = () => {
|
|
|
32
32
|
subtitle: option.message
|
|
33
33
|
}));
|
|
34
34
|
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
35
|
-
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "
|
|
35
|
+
/* @__PURE__ */ jsx(OrderHeader, { minified: true, show: "zkp2p" }),
|
|
36
36
|
/* @__PURE__ */ jsx(OptionsList, { options })
|
|
37
37
|
] });
|
|
38
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectZKP/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst SelectZKP: React.FC = () => {\n const { paymentState, setRoute } = usePayContext();\n const { externalPaymentOptions, setSelectedExternalOption } = paymentState;\n const zkp2pOptions = externalPaymentOptions.options.get(\"zkp2p\");\n\n if (!zkp2pOptions) {\n return (\n <PageContent>\n <OrderHeader minified show=\"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectZKP/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ModalH1, PageContent } from \"../../Common/Modal/styles\";\n\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { OptionsList } from \"../../Common/OptionsList\";\nimport { OrderHeader } from \"../../Common/OrderHeader\";\n\nconst SelectZKP: React.FC = () => {\n const { paymentState, setRoute } = usePayContext();\n const { externalPaymentOptions, setSelectedExternalOption } = paymentState;\n const zkp2pOptions = externalPaymentOptions.options.get(\"zkp2p\");\n\n if (!zkp2pOptions) {\n return (\n <PageContent>\n <OrderHeader minified show=\"zkp2p\" />\n <ModalH1>No ZKP2P options available</ModalH1>\n </PageContent>\n );\n }\n\n const options = zkp2pOptions.map((option) => ({\n id: option.id,\n title: option.cta,\n icons: [option.logoURI],\n onClick: () => {\n setSelectedExternalOption(option);\n const meta = { event: \"click-option\", option: option.id };\n if (paymentState.isDepositFlow) {\n setRoute(ROUTES.SELECT_EXTERNAL_AMOUNT, meta);\n } else {\n setRoute(ROUTES.WAITING_EXTERNAL, meta);\n }\n },\n disabled: option.disabled,\n subtitle: option.message,\n }));\n\n return (\n <PageContent>\n <OrderHeader minified show=\"zkp2p\" />\n <OptionsList options={options} />\n </PageContent>\n );\n};\n\nexport default SelectZKP;\n"],"names":[],"mappings":";;;;;;;AASA,MAAM,YAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,YAAA,EAAc,QAAS,EAAA,GAAI,aAAc,EAAA,CAAA;AACjD,EAAM,MAAA,EAAE,sBAAwB,EAAA,yBAAA,EAA8B,GAAA,YAAA,CAAA;AAC9D,EAAA,MAAM,YAAe,GAAA,sBAAA,CAAuB,OAAQ,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAE/D,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,QAAA,EAAQ,IAAC,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA;AAAA,sBACnC,GAAA,CAAC,WAAQ,QAA0B,EAAA,4BAAA,EAAA,CAAA;AAAA,KACrC,EAAA,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,MAAM,OAAU,GAAA,YAAA,CAAa,GAAI,CAAA,CAAC,MAAY,MAAA;AAAA,IAC5C,IAAI,MAAO,CAAA,EAAA;AAAA,IACX,OAAO,MAAO,CAAA,GAAA;AAAA,IACd,KAAA,EAAO,CAAC,MAAA,CAAO,OAAO,CAAA;AAAA,IACtB,SAAS,MAAM;AACb,MAAA,yBAAA,CAA0B,MAAM,CAAA,CAAA;AAChC,MAAA,MAAM,OAAO,EAAE,KAAA,EAAO,cAAgB,EAAA,MAAA,EAAQ,OAAO,EAAG,EAAA,CAAA;AACxD,MAAA,IAAI,aAAa,aAAe,EAAA;AAC9B,QAAS,QAAA,CAAA,MAAA,CAAO,wBAAwB,IAAI,CAAA,CAAA;AAAA,OACvC,MAAA;AACL,QAAS,QAAA,CAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA,CAAA;AAAA,OACxC;AAAA,KACF;AAAA,IACA,UAAU,MAAO,CAAA,QAAA;AAAA,IACjB,UAAU,MAAO,CAAA,OAAA;AAAA,GACjB,CAAA,CAAA,CAAA;AAEF,EAAA,4BACG,WACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,QAAA,EAAQ,IAAC,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA;AAAA,oBACnC,GAAA,CAAC,eAAY,OAAkB,EAAA,CAAA;AAAA,GACjC,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaymentState.js","sources":["../../../src/hooks/usePaymentState.ts"],"sourcesContent":["import {\n assert,\n assertNotNull,\n DaimoPayHydratedOrderWithOrg,\n debugJson,\n DepositAddressPaymentOptionData,\n DepositAddressPaymentOptionMetadata,\n DepositAddressPaymentOptions,\n ethereum,\n ExternalPaymentOptionMetadata,\n ExternalPaymentOptions,\n getOrderDestChainId,\n isCCTPV1Chain,\n isNativeToken,\n PlatformType,\n readDaimoPayOrderID,\n SolanaPublicKey,\n WalletPaymentOption,\n writeDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { VersionedTransaction } from \"@solana/web3.js\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { erc20Abi, getAddress, Hex, hexToBytes, isHex } from \"viem\";\nimport {\n useAccount,\n useEnsName,\n useSendTransaction,\n useWriteContract,\n} from \"wagmi\";\n\nimport { PayButtonPaymentProps } from \"../components/DaimoPayButton\";\nimport { ROUTES } from \"../constants/routes\";\nimport { PayParams } from \"../payment/paymentFsm\";\nimport { detectPlatform } from \"../utils/platform\";\nimport { TrpcClient } from \"../utils/trpc\";\nimport { WalletConfigProps } from \"../wallets/walletConfigs\";\nimport { useDaimoPay } from \"./useDaimoPay\";\nimport { useDepositAddressOptions } from \"./useDepositAddressOptions\";\nimport { useExternalPaymentOptions } from \"./useExternalPaymentOptions\";\nimport useIsMobile from \"./useIsMobile\";\nimport { useOrderUsdLimits } from \"./useOrderUsdLimits\";\nimport { useSolanaPaymentOptions } from \"./useSolanaPaymentOptions\";\nimport { useUntronAvailability } from \"./useUntronAvailability\";\nimport { useWalletPaymentOptions } from \"./useWalletPaymentOptions\";\n\n/** Wallet payment details, sent to processSourcePayment after submitting tx. */\nexport type SourcePayment = Parameters<\n TrpcClient[\"processSourcePayment\"][\"mutate\"]\n>[0];\n\n/** Creates (or loads) a payment and manages the corresponding modal. */\nexport interface PaymentState {\n generatePreviewOrder: () => void;\n resetOrder: (payParams?: Partial<PayParams>) => Promise<void>;\n\n /// DaimoPayButton props\n buttonProps: PayButtonPaymentProps | undefined;\n setButtonProps: (props: PayButtonPaymentProps | undefined) => void;\n\n /// Pay ID for loading an existing order\n setPayId: (id: string | undefined) => void;\n /// Pay params for creating an order on the fly,\n setPayParams: (payParams: PayParams | undefined) => Promise<void>;\n\n /// True if the user is entering an amount (deposit) vs preset (checkout).\n isDepositFlow: boolean;\n paymentWaitingMessage: string | undefined;\n /// External payment options, loaded from server and filtered by EITHER\n /// 1. the DaimoPayButton paymentOptions, or 2. those of daimoPayOrder\n externalPaymentOptions: ReturnType<typeof useExternalPaymentOptions>;\n selectedWallet: WalletConfigProps | undefined;\n selectedWalletDeepLink: string | undefined;\n showSolanaPaymentMethod: boolean;\n walletPaymentOptions: ReturnType<typeof useWalletPaymentOptions>;\n solanaPaymentOptions: ReturnType<typeof useSolanaPaymentOptions>;\n depositAddressOptions: ReturnType<typeof useDepositAddressOptions>;\n /** Whether Untron receivers are currently available. `null` when unknown. */\n untronAvailable: boolean | null;\n selectedExternalOption: ExternalPaymentOptionMetadata | undefined;\n selectedTokenOption: WalletPaymentOption | undefined;\n selectedSolanaTokenOption: WalletPaymentOption | undefined;\n selectedDepositAddressOption: DepositAddressPaymentOptionMetadata | undefined;\n getOrderUsdLimit: () => number;\n setPaymentWaitingMessage: (message: string | undefined) => void;\n tokenMode: \"evm\" | \"solana\" | \"showCoin\";\n setTokenMode: (mode: \"evm\" | \"solana\" | \"showCoin\") => void;\n setSelectedWallet: (wallet: WalletConfigProps | undefined) => void;\n setSelectedWalletDeepLink: (deepLink: string | undefined) => void;\n setSelectedExternalOption: (\n option: ExternalPaymentOptionMetadata | undefined,\n ) => void;\n setSelectedTokenOption: (option: WalletPaymentOption | undefined) => void;\n setSelectedSolanaTokenOption: (\n option: WalletPaymentOption | undefined,\n ) => void;\n setSelectedDepositAddressOption: (\n option: DepositAddressPaymentOptionMetadata | undefined,\n ) => void;\n setChosenUsd: (usd: number) => void;\n payWithToken: (\n walletOption: WalletPaymentOption,\n ) => Promise<{ txHash?: Hex; success: boolean }>;\n payWithExternal: (option: ExternalPaymentOptions) => Promise<string>;\n payWithDepositAddress: (\n option: DepositAddressPaymentOptions,\n ) => Promise<DepositAddressPaymentOptionData | null>;\n payWithSolanaToken: (\n inputToken: SolanaPublicKey,\n ) => Promise<{ txHash: string; success: boolean }>;\n openInWalletBrowser: (wallet: WalletConfigProps, amountUsd?: number) => void;\n senderEnsName: string | undefined;\n}\n\nexport function usePaymentState({\n trpc,\n lockPayParams,\n setRoute,\n log,\n redirectReturnUrl,\n}: {\n trpc: TrpcClient;\n lockPayParams: boolean;\n setRoute: (route: ROUTES, data?: Record<string, any>) => void;\n log: (...args: any[]) => void;\n redirectReturnUrl?: string;\n}): PaymentState {\n const pay = useDaimoPay();\n\n // Browser state.\n const [platform, setPlatform] = useState<PlatformType>();\n useEffect(() => {\n setPlatform(detectPlatform(window.navigator.userAgent));\n }, []);\n\n // Wallet state.\n const { address: ethWalletAddress } = useAccount();\n const { data: senderEnsName } = useEnsName({\n chainId: ethereum.chainId,\n address: ethWalletAddress,\n });\n const { sendTransactionAsync } = useSendTransaction();\n const { writeContractAsync } = useWriteContract();\n\n // Solana wallet state.\n const solanaWallet = useWallet();\n const { connection } = useConnection();\n const solanaPubKey = solanaWallet.publicKey?.toBase58();\n\n // Solana bridging is only supported on CCTPv1 chains.\n const destChainId = pay.order == null ? null : getOrderDestChainId(pay.order);\n const showSolanaPaymentMethod =\n destChainId != null && isCCTPV1Chain(destChainId);\n\n // From DaimoPayButton props\n const [buttonProps, setButtonProps] = useState<PayButtonPaymentProps>();\n const [currPayParams, setCurrPayParams] = useState<PayParams>();\n\n const [paymentWaitingMessage, setPaymentWaitingMessage] = useState<string>();\n const [isDepositFlow, setIsDepositFlow] = useState<boolean>(false);\n\n // UI state. Selection for external payment (Binance, etc) vs wallet payment.\n const externalPaymentOptions = useExternalPaymentOptions({\n trpc,\n // allow <DaimoPayButton payId={...} paymentOptions={override} />\n filterIds:\n buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions,\n platform,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n mode: pay.order?.mode,\n });\n const walletPaymentOptions = useWalletPaymentOptions({\n trpc,\n address: ethWalletAddress,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n destChainId: pay.order?.destFinalCallTokenAmount.token.chainId,\n destAddress: pay.order?.destFinalCall.to,\n preferredChains: pay.order?.metadata.payer?.preferredChains,\n preferredTokens: pay.order?.metadata.payer?.preferredTokens,\n evmChains: pay.order?.metadata.payer?.evmChains,\n passthroughTokens: pay.order?.metadata.payer?.passthroughTokens,\n isDepositFlow,\n log,\n });\n const solanaPaymentOptions = useSolanaPaymentOptions({\n trpc,\n address: solanaPubKey,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n isDepositFlow,\n showSolanaPaymentMethod,\n });\n const depositAddressOptions = useDepositAddressOptions({\n trpc,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n mode: pay.order?.mode,\n });\n\n // Poll for Untron receiver availability so components can disable unsupported chains promptly.\n const { available: untronAvailable } = useUntronAvailability({ trpc });\n\n const chainOrderUsdLimits = useOrderUsdLimits({ trpc });\n\n const [selectedExternalOption, setSelectedExternalOption] =\n useState<ExternalPaymentOptionMetadata>();\n\n const [selectedTokenOption, setSelectedTokenOption] =\n useState<WalletPaymentOption>();\n\n const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] =\n useState<WalletPaymentOption>();\n\n const [selectedDepositAddressOption, setSelectedDepositAddressOption] =\n useState<DepositAddressPaymentOptionMetadata>();\n\n const [selectedWallet, setSelectedWallet] = useState<WalletConfigProps>();\n const [selectedWalletDeepLink, setSelectedWalletDeepLink] =\n useState<string>();\n\n const getOrderUsdLimit = () => {\n const DEFAULT_USD_LIMIT = 20000;\n if (pay.order == null || chainOrderUsdLimits.loading) {\n return DEFAULT_USD_LIMIT;\n }\n const destChainId = pay.order.destFinalCallTokenAmount.token.chainId;\n return destChainId in chainOrderUsdLimits.limits\n ? chainOrderUsdLimits.limits[destChainId]\n : DEFAULT_USD_LIMIT;\n };\n\n /** Commit to a token + amount = initiate payment. */\n const payWithToken = async (\n walletOption: WalletPaymentOption,\n ): Promise<{ txHash?: Hex; success: boolean }> => {\n assert(\n ethWalletAddress != null,\n `[PAY TOKEN] null ethWalletAddress when paying on ethereum`,\n );\n assert(\n pay.paymentState === \"preview\" ||\n pay.paymentState === \"unhydrated\" ||\n pay.paymentState === \"payment_unpaid\",\n `[PAY TOKEN] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`,\n );\n\n let hydratedOrder: DaimoPayHydratedOrderWithOrg;\n const { required, fees } = walletOption;\n const paymentAmount = BigInt(required.amount) + BigInt(fees.amount);\n if (pay.paymentState !== \"payment_unpaid\") {\n assert(\n required.token.token === fees.token.token,\n `[PAY TOKEN] required token ${debugJson(required)} does not match fees token ${debugJson(fees)}`,\n );\n\n // Will refund to ethWalletAddress if refundAddress was not set in payParams\n const res = await pay.hydrateOrder(ethWalletAddress);\n hydratedOrder = res.order;\n\n log(\n `[PAY TOKEN] hydrated order: ${debugJson(\n hydratedOrder,\n )}, paying ${paymentAmount} of token ${required.token.token}`,\n );\n } else {\n hydratedOrder = pay.order;\n }\n\n const paymentTxHash = await (async () => {\n const dest = walletOption.passthroughAddress ?? hydratedOrder.intentAddr;\n try {\n if (isNativeToken(getAddress(required.token.token))) {\n return await sendTransactionAsync({\n to: dest,\n value: paymentAmount,\n });\n } else {\n return await writeContractAsync({\n abi: erc20Abi,\n address: getAddress(required.token.token),\n functionName: \"transfer\",\n args: [dest, paymentAmount],\n });\n }\n } catch (e) {\n console.error(`[PAY TOKEN] error sending token: ${e}`);\n throw e;\n }\n })();\n\n // Special case. Handle Rabby bug, where it returns the *Safe signature*\n // instead of a txHash for a queued, unsubmitted Safe transaction.\n if (!isHex(paymentTxHash) || paymentTxHash.length !== 66) {\n log(\n `[PAY TOKEN] wallet bug detected. ignoring invalid payment txHash: ${paymentTxHash}`,\n );\n return { success: true };\n }\n\n try {\n await pay.payEthSource({\n paymentTxHash,\n sourceChainId: required.token.chainId,\n payerAddress: ethWalletAddress,\n sourceToken: getAddress(required.token.token),\n sourceAmount: paymentAmount,\n });\n return { txHash: paymentTxHash, success: true };\n } catch {\n console.error(\n `[PAY TOKEN] could not verify payment tx on chain: ${paymentTxHash}`,\n );\n return { txHash: paymentTxHash, success: false };\n }\n };\n\n const payWithSolanaToken = async (\n inputToken: SolanaPublicKey,\n ): Promise<{ txHash: string; success: boolean }> => {\n const payerPublicKey = solanaWallet.publicKey;\n assert(\n payerPublicKey != null,\n \"[PAY SOLANA] null payerPublicKey when paying on solana\",\n );\n assert(\n pay.order?.id != null,\n \"[PAY SOLANA] null orderId when paying on solana\",\n );\n assert(\n pay.paymentState === \"preview\" ||\n pay.paymentState === \"unhydrated\" ||\n pay.paymentState === \"payment_unpaid\",\n `[PAY SOLANA] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`,\n );\n\n let hydratedOrder: DaimoPayHydratedOrderWithOrg;\n if (pay.paymentState !== \"payment_unpaid\") {\n const res = await pay.hydrateOrder();\n hydratedOrder = res.order;\n\n log(\n `[PAY SOLANA] Hydrated order: ${JSON.stringify(\n hydratedOrder,\n )}, checking out with Solana ${inputToken}`,\n );\n } else {\n hydratedOrder = pay.order;\n }\n\n const paymentTxHash = await (async () => {\n try {\n const serializedTx = await trpc.getSolanaSwapAndBurnTx.query({\n orderId: pay.order.id.toString(),\n userPublicKey: assertNotNull(\n payerPublicKey,\n \"[PAY SOLANA] wallet.publicKey cannot be null\",\n ).toString(),\n inputTokenMint: inputToken,\n });\n const tx = VersionedTransaction.deserialize(hexToBytes(serializedTx));\n const txHash = await solanaWallet.sendTransaction(tx, connection);\n return txHash;\n } catch (e) {\n console.error(e);\n throw e;\n }\n })();\n\n try {\n await pay.paySolanaSource({\n paymentTxHash: paymentTxHash,\n sourceToken: inputToken,\n });\n return { txHash: paymentTxHash, success: true };\n } catch {\n console.error(\n `[PAY SOLANA] could not verify payment tx on chain: ${paymentTxHash}`,\n );\n return { txHash: paymentTxHash, success: false };\n }\n };\n\n const payWithExternal = async (option: ExternalPaymentOptions) => {\n assert(pay.order != null, \"[PAY EXTERNAL] order cannot be null\");\n assert(platform != null, \"[PAY EXTERNAL] platform cannot be null\");\n\n const { order } = await pay.hydrateOrder();\n const externalPaymentOptionData =\n await trpc.getExternalPaymentOptionData.query({\n id: order.id.toString(),\n externalPaymentOption: option,\n platform,\n redirectReturnUrl,\n });\n assert(\n externalPaymentOptionData != null,\n \"[PAY EXTERNAL] missing externalPaymentOptionData\",\n );\n\n log(\n `[PAY EXTERNAL] hydrated order: ${debugJson(\n order,\n )}, checking out with external payment: ${option}`,\n );\n\n setPaymentWaitingMessage(externalPaymentOptionData.waitingMessage);\n\n return externalPaymentOptionData.url;\n };\n\n const payWithDepositAddress = async (\n option: DepositAddressPaymentOptions,\n ) => {\n const { order } = await pay.hydrateOrder();\n\n log(\n `[PAY DEPOSIT ADDRESS] hydrated order ${order.id} for ${order.usdValue} USD, checking out with deposit address: ${option}`,\n );\n\n const result = await trpc.getDepositAddressForOrder.query({\n orderId: order.id.toString(),\n option,\n });\n\n return \"error\" in result ? null : result;\n };\n\n const { isIOS } = useIsMobile();\n\n const openInWalletBrowser = (\n wallet: WalletConfigProps,\n amountUsd?: number,\n ) => {\n const paymentState = pay.paymentState;\n assert(\n paymentState === \"payment_unpaid\",\n `[OPEN IN WALLET BROWSER] paymentState is ${paymentState}, must be payment_unpaid`,\n );\n assert(\n wallet.getDaimoPayDeeplink != null,\n `openInWalletBrowser: missing deeplink for ${wallet.name}`,\n );\n\n const payId = writeDaimoPayOrderID(pay.order.id);\n const deeplink = wallet.getDaimoPayDeeplink(payId);\n // If we are in IOS, we don't open the deeplink in a new window, because it\n // will not work, the link will be opened in the page WAITING_WALLET\n if (!isIOS) {\n window.open(deeplink, \"_blank\");\n }\n setSelectedWallet(wallet);\n setSelectedWalletDeepLink(deeplink);\n setRoute(ROUTES.WAITING_WALLET, {\n amountUsd,\n payId,\n wallet_name: wallet.name,\n });\n };\n\n /** User picked a different deposit amount. */\n const setChosenUsd = (usd: number) => {\n assert(\n pay.paymentState === \"preview\",\n \"[SET CHOSEN USD] paymentState is not preview\",\n );\n\n // Too expensive to make an API call to regenerate preview order each time\n // the user changes the amount. Instead, we modify the order in memory.\n pay.setChosenUsd(usd);\n };\n\n const setPayId = useCallback(\n async (payId: string | undefined) => {\n if (lockPayParams || payId == null) return;\n const id = readDaimoPayOrderID(payId).toString();\n\n if (pay.order?.id && BigInt(id) == pay.order.id) {\n // Already loaded, ignore.\n return;\n }\n\n pay.reset();\n pay.setPayId(payId);\n },\n [lockPayParams, pay],\n );\n\n /** Called whenever params change. */\n const setPayParams = async (payParams: PayParams | undefined) => {\n if (lockPayParams) return;\n assert(payParams != null, \"[SET PAY PARAMS] payParams cannot be null\");\n\n log(\"[SET PAY PARAMS] setting payParams\", payParams);\n pay.reset();\n await pay.createPreviewOrder(payParams);\n setCurrPayParams(payParams);\n setIsDepositFlow(payParams.toUnits == null);\n };\n\n const generatePreviewOrder = async () => {\n pay.reset();\n if (currPayParams == null) return;\n await pay.createPreviewOrder(currPayParams);\n };\n\n const resetOrder = useCallback(\n async (payParams?: Partial<PayParams>) => {\n const mergedPayParams: PayParams | undefined =\n payParams != null && currPayParams != null\n ? { ...currPayParams, ...payParams }\n : currPayParams;\n\n // Clear the old order & state\n pay.reset();\n setSelectedExternalOption(undefined);\n setSelectedTokenOption(undefined);\n setSelectedSolanaTokenOption(undefined);\n setSelectedDepositAddressOption(undefined);\n setSelectedWallet(undefined);\n setSelectedWalletDeepLink(undefined);\n setPaymentWaitingMessage(undefined);\n\n // Set the new payParams\n if (mergedPayParams) {\n await pay.createPreviewOrder(mergedPayParams);\n setCurrPayParams(mergedPayParams);\n setIsDepositFlow(mergedPayParams.toUnits == null);\n }\n\n setRoute(ROUTES.SELECT_METHOD);\n },\n [setRoute, pay, currPayParams],\n );\n\n const [tokenMode, setTokenMode] = useState<\"evm\" | \"solana\" | \"showCoin\">(\n \"evm\",\n );\n\n return {\n buttonProps,\n setButtonProps,\n setPayId,\n setPayParams,\n tokenMode,\n setTokenMode,\n generatePreviewOrder,\n isDepositFlow,\n paymentWaitingMessage,\n selectedExternalOption,\n selectedTokenOption,\n selectedSolanaTokenOption,\n externalPaymentOptions,\n showSolanaPaymentMethod,\n selectedWallet,\n selectedWalletDeepLink,\n walletPaymentOptions,\n solanaPaymentOptions,\n depositAddressOptions,\n selectedDepositAddressOption,\n getOrderUsdLimit,\n resetOrder,\n setSelectedWallet,\n setSelectedWalletDeepLink,\n setPaymentWaitingMessage,\n setSelectedExternalOption,\n setSelectedTokenOption,\n setSelectedSolanaTokenOption,\n setSelectedDepositAddressOption,\n setChosenUsd,\n payWithToken,\n payWithExternal,\n payWithDepositAddress,\n payWithSolanaToken,\n openInWalletBrowser,\n senderEnsName: senderEnsName ?? undefined,\n untronAvailable,\n };\n}\n"],"names":["destChainId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePaymentState.js","sources":["../../../src/hooks/usePaymentState.ts"],"sourcesContent":["import {\n assert,\n assertNotNull,\n DaimoPayHydratedOrderWithOrg,\n debugJson,\n DepositAddressPaymentOptionData,\n DepositAddressPaymentOptionMetadata,\n DepositAddressPaymentOptions,\n ethereum,\n ExternalPaymentOptionMetadata,\n ExternalPaymentOptions,\n getOrderDestChainId,\n isCCTPV1Chain,\n isNativeToken,\n PlatformType,\n readDaimoPayOrderID,\n SolanaPublicKey,\n WalletPaymentOption,\n writeDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { VersionedTransaction } from \"@solana/web3.js\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { erc20Abi, getAddress, Hex, hexToBytes, isHex } from \"viem\";\nimport {\n useAccount,\n useEnsName,\n useSendTransaction,\n useWriteContract,\n} from \"wagmi\";\n\nimport { PayButtonPaymentProps } from \"../components/DaimoPayButton\";\nimport { ROUTES } from \"../constants/routes\";\nimport { PayParams } from \"../payment/paymentFsm\";\nimport { detectPlatform } from \"../utils/platform\";\nimport { TrpcClient } from \"../utils/trpc\";\nimport { WalletConfigProps } from \"../wallets/walletConfigs\";\nimport { useDaimoPay } from \"./useDaimoPay\";\nimport { useDepositAddressOptions } from \"./useDepositAddressOptions\";\nimport { useExternalPaymentOptions } from \"./useExternalPaymentOptions\";\nimport useIsMobile from \"./useIsMobile\";\nimport { useOrderUsdLimits } from \"./useOrderUsdLimits\";\nimport { useSolanaPaymentOptions } from \"./useSolanaPaymentOptions\";\nimport { useUntronAvailability } from \"./useUntronAvailability\";\nimport { useWalletPaymentOptions } from \"./useWalletPaymentOptions\";\n\n/** Wallet payment details, sent to processSourcePayment after submitting tx. */\nexport type SourcePayment = Parameters<\n TrpcClient[\"processSourcePayment\"][\"mutate\"]\n>[0];\n\n/** Creates (or loads) a payment and manages the corresponding modal. */\nexport interface PaymentState {\n generatePreviewOrder: () => void;\n resetOrder: (payParams?: Partial<PayParams>) => Promise<void>;\n\n /// DaimoPayButton props\n buttonProps: PayButtonPaymentProps | undefined;\n setButtonProps: (props: PayButtonPaymentProps | undefined) => void;\n\n /// Pay ID for loading an existing order\n setPayId: (id: string | undefined) => void;\n /// Pay params for creating an order on the fly,\n setPayParams: (payParams: PayParams | undefined) => Promise<void>;\n\n /// True if the user is entering an amount (deposit) vs preset (checkout).\n isDepositFlow: boolean;\n paymentWaitingMessage: string | undefined;\n /// External payment options, loaded from server and filtered by EITHER\n /// 1. the DaimoPayButton paymentOptions, or 2. those of daimoPayOrder\n externalPaymentOptions: ReturnType<typeof useExternalPaymentOptions>;\n selectedWallet: WalletConfigProps | undefined;\n selectedWalletDeepLink: string | undefined;\n showSolanaPaymentMethod: boolean;\n walletPaymentOptions: ReturnType<typeof useWalletPaymentOptions>;\n solanaPaymentOptions: ReturnType<typeof useSolanaPaymentOptions>;\n depositAddressOptions: ReturnType<typeof useDepositAddressOptions>;\n /** Whether Untron receivers are currently available. `null` when unknown. */\n untronAvailable: boolean | null;\n selectedExternalOption: ExternalPaymentOptionMetadata | undefined;\n selectedTokenOption: WalletPaymentOption | undefined;\n selectedSolanaTokenOption: WalletPaymentOption | undefined;\n selectedDepositAddressOption: DepositAddressPaymentOptionMetadata | undefined;\n getOrderUsdLimit: () => number;\n setPaymentWaitingMessage: (message: string | undefined) => void;\n tokenMode: \"evm\" | \"solana\" | \"all\";\n setTokenMode: (mode: \"evm\" | \"solana\" | \"all\") => void;\n setSelectedWallet: (wallet: WalletConfigProps | undefined) => void;\n setSelectedWalletDeepLink: (deepLink: string | undefined) => void;\n setSelectedExternalOption: (\n option: ExternalPaymentOptionMetadata | undefined,\n ) => void;\n setSelectedTokenOption: (option: WalletPaymentOption | undefined) => void;\n setSelectedSolanaTokenOption: (\n option: WalletPaymentOption | undefined,\n ) => void;\n setSelectedDepositAddressOption: (\n option: DepositAddressPaymentOptionMetadata | undefined,\n ) => void;\n setChosenUsd: (usd: number) => void;\n payWithToken: (\n walletOption: WalletPaymentOption,\n ) => Promise<{ txHash?: Hex; success: boolean }>;\n payWithExternal: (option: ExternalPaymentOptions) => Promise<string>;\n payWithDepositAddress: (\n option: DepositAddressPaymentOptions,\n ) => Promise<DepositAddressPaymentOptionData | null>;\n payWithSolanaToken: (\n inputToken: SolanaPublicKey,\n ) => Promise<{ txHash: string; success: boolean }>;\n openInWalletBrowser: (wallet: WalletConfigProps, amountUsd?: number) => void;\n senderEnsName: string | undefined;\n}\n\nexport function usePaymentState({\n trpc,\n lockPayParams,\n setRoute,\n log,\n redirectReturnUrl,\n}: {\n trpc: TrpcClient;\n lockPayParams: boolean;\n setRoute: (route: ROUTES, data?: Record<string, any>) => void;\n log: (...args: any[]) => void;\n redirectReturnUrl?: string;\n}): PaymentState {\n const pay = useDaimoPay();\n\n // Browser state.\n const [platform, setPlatform] = useState<PlatformType>();\n useEffect(() => {\n setPlatform(detectPlatform(window.navigator.userAgent));\n }, []);\n\n // Wallet state.\n const { address: ethWalletAddress } = useAccount();\n const { data: senderEnsName } = useEnsName({\n chainId: ethereum.chainId,\n address: ethWalletAddress,\n });\n const { sendTransactionAsync } = useSendTransaction();\n const { writeContractAsync } = useWriteContract();\n\n // Solana wallet state.\n const solanaWallet = useWallet();\n const { connection } = useConnection();\n const solanaPubKey = solanaWallet.publicKey?.toBase58();\n\n // Solana bridging is only supported on CCTPv1 chains.\n const destChainId = pay.order == null ? null : getOrderDestChainId(pay.order);\n const showSolanaPaymentMethod =\n destChainId != null && isCCTPV1Chain(destChainId);\n\n // From DaimoPayButton props\n const [buttonProps, setButtonProps] = useState<PayButtonPaymentProps>();\n const [currPayParams, setCurrPayParams] = useState<PayParams>();\n\n const [paymentWaitingMessage, setPaymentWaitingMessage] = useState<string>();\n const [isDepositFlow, setIsDepositFlow] = useState<boolean>(false);\n\n // UI state. Selection for external payment (Binance, etc) vs wallet payment.\n const externalPaymentOptions = useExternalPaymentOptions({\n trpc,\n // allow <DaimoPayButton payId={...} paymentOptions={override} />\n filterIds:\n buttonProps?.paymentOptions ?? pay.order?.metadata.payer?.paymentOptions,\n platform,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n mode: pay.order?.mode,\n });\n const walletPaymentOptions = useWalletPaymentOptions({\n trpc,\n address: ethWalletAddress,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n destChainId: pay.order?.destFinalCallTokenAmount.token.chainId,\n destAddress: pay.order?.destFinalCall.to,\n preferredChains: pay.order?.metadata.payer?.preferredChains,\n preferredTokens: pay.order?.metadata.payer?.preferredTokens,\n evmChains: pay.order?.metadata.payer?.evmChains,\n passthroughTokens: pay.order?.metadata.payer?.passthroughTokens,\n isDepositFlow,\n log,\n });\n const solanaPaymentOptions = useSolanaPaymentOptions({\n trpc,\n address: solanaPubKey,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n isDepositFlow,\n showSolanaPaymentMethod,\n });\n const depositAddressOptions = useDepositAddressOptions({\n trpc,\n usdRequired: pay.order?.destFinalCallTokenAmount.usd,\n mode: pay.order?.mode,\n });\n\n // Poll for Untron receiver availability so components can disable unsupported chains promptly.\n const { available: untronAvailable } = useUntronAvailability({ trpc });\n\n const chainOrderUsdLimits = useOrderUsdLimits({ trpc });\n\n const [selectedExternalOption, setSelectedExternalOption] =\n useState<ExternalPaymentOptionMetadata>();\n\n const [selectedTokenOption, setSelectedTokenOption] =\n useState<WalletPaymentOption>();\n\n const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] =\n useState<WalletPaymentOption>();\n\n const [selectedDepositAddressOption, setSelectedDepositAddressOption] =\n useState<DepositAddressPaymentOptionMetadata>();\n\n const [selectedWallet, setSelectedWallet] = useState<WalletConfigProps>();\n const [selectedWalletDeepLink, setSelectedWalletDeepLink] =\n useState<string>();\n\n const getOrderUsdLimit = () => {\n const DEFAULT_USD_LIMIT = 20000;\n if (pay.order == null || chainOrderUsdLimits.loading) {\n return DEFAULT_USD_LIMIT;\n }\n const destChainId = pay.order.destFinalCallTokenAmount.token.chainId;\n return destChainId in chainOrderUsdLimits.limits\n ? chainOrderUsdLimits.limits[destChainId]\n : DEFAULT_USD_LIMIT;\n };\n\n /** Commit to a token + amount = initiate payment. */\n const payWithToken = async (\n walletOption: WalletPaymentOption,\n ): Promise<{ txHash?: Hex; success: boolean }> => {\n assert(\n ethWalletAddress != null,\n `[PAY TOKEN] null ethWalletAddress when paying on ethereum`,\n );\n assert(\n pay.paymentState === \"preview\" ||\n pay.paymentState === \"unhydrated\" ||\n pay.paymentState === \"payment_unpaid\",\n `[PAY TOKEN] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`,\n );\n\n let hydratedOrder: DaimoPayHydratedOrderWithOrg;\n const { required, fees } = walletOption;\n const paymentAmount = BigInt(required.amount) + BigInt(fees.amount);\n if (pay.paymentState !== \"payment_unpaid\") {\n assert(\n required.token.token === fees.token.token,\n `[PAY TOKEN] required token ${debugJson(required)} does not match fees token ${debugJson(fees)}`,\n );\n\n // Will refund to ethWalletAddress if refundAddress was not set in payParams\n const res = await pay.hydrateOrder(ethWalletAddress);\n hydratedOrder = res.order;\n\n log(\n `[PAY TOKEN] hydrated order: ${debugJson(\n hydratedOrder,\n )}, paying ${paymentAmount} of token ${required.token.token}`,\n );\n } else {\n hydratedOrder = pay.order;\n }\n\n const paymentTxHash = await (async () => {\n const dest = walletOption.passthroughAddress ?? hydratedOrder.intentAddr;\n try {\n if (isNativeToken(getAddress(required.token.token))) {\n return await sendTransactionAsync({\n to: dest,\n value: paymentAmount,\n });\n } else {\n return await writeContractAsync({\n abi: erc20Abi,\n address: getAddress(required.token.token),\n functionName: \"transfer\",\n args: [dest, paymentAmount],\n });\n }\n } catch (e) {\n console.error(`[PAY TOKEN] error sending token: ${e}`);\n throw e;\n }\n })();\n\n // Special case. Handle Rabby bug, where it returns the *Safe signature*\n // instead of a txHash for a queued, unsubmitted Safe transaction.\n if (!isHex(paymentTxHash) || paymentTxHash.length !== 66) {\n log(\n `[PAY TOKEN] wallet bug detected. ignoring invalid payment txHash: ${paymentTxHash}`,\n );\n return { success: true };\n }\n\n try {\n await pay.payEthSource({\n paymentTxHash,\n sourceChainId: required.token.chainId,\n payerAddress: ethWalletAddress,\n sourceToken: getAddress(required.token.token),\n sourceAmount: paymentAmount,\n });\n return { txHash: paymentTxHash, success: true };\n } catch {\n console.error(\n `[PAY TOKEN] could not verify payment tx on chain: ${paymentTxHash}`,\n );\n return { txHash: paymentTxHash, success: false };\n }\n };\n\n const payWithSolanaToken = async (\n inputToken: SolanaPublicKey,\n ): Promise<{ txHash: string; success: boolean }> => {\n const payerPublicKey = solanaWallet.publicKey;\n assert(\n payerPublicKey != null,\n \"[PAY SOLANA] null payerPublicKey when paying on solana\",\n );\n assert(\n pay.order?.id != null,\n \"[PAY SOLANA] null orderId when paying on solana\",\n );\n assert(\n pay.paymentState === \"preview\" ||\n pay.paymentState === \"unhydrated\" ||\n pay.paymentState === \"payment_unpaid\",\n `[PAY SOLANA] paymentState is ${pay.paymentState}, must be preview or unhydrated or payment_unpaid`,\n );\n\n let hydratedOrder: DaimoPayHydratedOrderWithOrg;\n if (pay.paymentState !== \"payment_unpaid\") {\n const res = await pay.hydrateOrder();\n hydratedOrder = res.order;\n\n log(\n `[PAY SOLANA] Hydrated order: ${JSON.stringify(\n hydratedOrder,\n )}, checking out with Solana ${inputToken}`,\n );\n } else {\n hydratedOrder = pay.order;\n }\n\n const paymentTxHash = await (async () => {\n try {\n const serializedTx = await trpc.getSolanaSwapAndBurnTx.query({\n orderId: pay.order.id.toString(),\n userPublicKey: assertNotNull(\n payerPublicKey,\n \"[PAY SOLANA] wallet.publicKey cannot be null\",\n ).toString(),\n inputTokenMint: inputToken,\n });\n const tx = VersionedTransaction.deserialize(hexToBytes(serializedTx));\n const txHash = await solanaWallet.sendTransaction(tx, connection);\n return txHash;\n } catch (e) {\n console.error(e);\n throw e;\n }\n })();\n\n try {\n await pay.paySolanaSource({\n paymentTxHash: paymentTxHash,\n sourceToken: inputToken,\n });\n return { txHash: paymentTxHash, success: true };\n } catch {\n console.error(\n `[PAY SOLANA] could not verify payment tx on chain: ${paymentTxHash}`,\n );\n return { txHash: paymentTxHash, success: false };\n }\n };\n\n const payWithExternal = async (option: ExternalPaymentOptions) => {\n assert(pay.order != null, \"[PAY EXTERNAL] order cannot be null\");\n assert(platform != null, \"[PAY EXTERNAL] platform cannot be null\");\n\n const { order } = await pay.hydrateOrder();\n const externalPaymentOptionData =\n await trpc.getExternalPaymentOptionData.query({\n id: order.id.toString(),\n externalPaymentOption: option,\n platform,\n redirectReturnUrl,\n });\n assert(\n externalPaymentOptionData != null,\n \"[PAY EXTERNAL] missing externalPaymentOptionData\",\n );\n\n log(\n `[PAY EXTERNAL] hydrated order: ${debugJson(\n order,\n )}, checking out with external payment: ${option}`,\n );\n\n setPaymentWaitingMessage(externalPaymentOptionData.waitingMessage);\n\n return externalPaymentOptionData.url;\n };\n\n const payWithDepositAddress = async (\n option: DepositAddressPaymentOptions,\n ) => {\n const { order } = await pay.hydrateOrder();\n\n log(\n `[PAY DEPOSIT ADDRESS] hydrated order ${order.id} for ${order.usdValue} USD, checking out with deposit address: ${option}`,\n );\n\n const result = await trpc.getDepositAddressForOrder.query({\n orderId: order.id.toString(),\n option,\n });\n\n return \"error\" in result ? null : result;\n };\n\n const { isIOS } = useIsMobile();\n\n const openInWalletBrowser = (\n wallet: WalletConfigProps,\n amountUsd?: number,\n ) => {\n const paymentState = pay.paymentState;\n assert(\n paymentState === \"payment_unpaid\",\n `[OPEN IN WALLET BROWSER] paymentState is ${paymentState}, must be payment_unpaid`,\n );\n assert(\n wallet.getDaimoPayDeeplink != null,\n `openInWalletBrowser: missing deeplink for ${wallet.name}`,\n );\n\n const payId = writeDaimoPayOrderID(pay.order.id);\n const deeplink = wallet.getDaimoPayDeeplink(payId);\n // If we are in IOS, we don't open the deeplink in a new window, because it\n // will not work, the link will be opened in the page WAITING_WALLET\n if (!isIOS) {\n window.open(deeplink, \"_blank\");\n }\n setSelectedWallet(wallet);\n setSelectedWalletDeepLink(deeplink);\n setRoute(ROUTES.WAITING_WALLET, {\n amountUsd,\n payId,\n wallet_name: wallet.name,\n });\n };\n\n /** User picked a different deposit amount. */\n const setChosenUsd = (usd: number) => {\n assert(\n pay.paymentState === \"preview\",\n \"[SET CHOSEN USD] paymentState is not preview\",\n );\n\n // Too expensive to make an API call to regenerate preview order each time\n // the user changes the amount. Instead, we modify the order in memory.\n pay.setChosenUsd(usd);\n };\n\n const setPayId = useCallback(\n async (payId: string | undefined) => {\n if (lockPayParams || payId == null) return;\n const id = readDaimoPayOrderID(payId).toString();\n\n if (pay.order?.id && BigInt(id) == pay.order.id) {\n // Already loaded, ignore.\n return;\n }\n\n pay.reset();\n pay.setPayId(payId);\n },\n [lockPayParams, pay],\n );\n\n /** Called whenever params change. */\n const setPayParams = async (payParams: PayParams | undefined) => {\n if (lockPayParams) return;\n assert(payParams != null, \"[SET PAY PARAMS] payParams cannot be null\");\n\n log(\"[SET PAY PARAMS] setting payParams\", payParams);\n pay.reset();\n await pay.createPreviewOrder(payParams);\n setCurrPayParams(payParams);\n setIsDepositFlow(payParams.toUnits == null);\n };\n\n const generatePreviewOrder = async () => {\n pay.reset();\n if (currPayParams == null) return;\n await pay.createPreviewOrder(currPayParams);\n };\n\n const resetOrder = useCallback(\n async (payParams?: Partial<PayParams>) => {\n const mergedPayParams: PayParams | undefined =\n payParams != null && currPayParams != null\n ? { ...currPayParams, ...payParams }\n : currPayParams;\n\n // Clear the old order & state\n pay.reset();\n setSelectedExternalOption(undefined);\n setSelectedTokenOption(undefined);\n setSelectedSolanaTokenOption(undefined);\n setSelectedDepositAddressOption(undefined);\n setSelectedWallet(undefined);\n setSelectedWalletDeepLink(undefined);\n setPaymentWaitingMessage(undefined);\n\n // Set the new payParams\n if (mergedPayParams) {\n await pay.createPreviewOrder(mergedPayParams);\n setCurrPayParams(mergedPayParams);\n setIsDepositFlow(mergedPayParams.toUnits == null);\n }\n\n setRoute(ROUTES.SELECT_METHOD);\n },\n [setRoute, pay, currPayParams],\n );\n\n const [tokenMode, setTokenMode] = useState<\"evm\" | \"solana\" | \"all\">(\"evm\");\n\n return {\n buttonProps,\n setButtonProps,\n setPayId,\n setPayParams,\n tokenMode,\n setTokenMode,\n generatePreviewOrder,\n isDepositFlow,\n paymentWaitingMessage,\n selectedExternalOption,\n selectedTokenOption,\n selectedSolanaTokenOption,\n externalPaymentOptions,\n showSolanaPaymentMethod,\n selectedWallet,\n selectedWalletDeepLink,\n walletPaymentOptions,\n solanaPaymentOptions,\n depositAddressOptions,\n selectedDepositAddressOption,\n getOrderUsdLimit,\n resetOrder,\n setSelectedWallet,\n setSelectedWalletDeepLink,\n setPaymentWaitingMessage,\n setSelectedExternalOption,\n setSelectedTokenOption,\n setSelectedSolanaTokenOption,\n setSelectedDepositAddressOption,\n setChosenUsd,\n payWithToken,\n payWithExternal,\n payWithDepositAddress,\n payWithSolanaToken,\n openInWalletBrowser,\n senderEnsName: senderEnsName ?? undefined,\n untronAvailable,\n };\n}\n"],"names":["destChainId"],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ function useTokenOptions(mode) {
|
|
|
24
24
|
const nonPassthroughToken = isPassthrough ? pay.order?.destFinalCallTokenAmount.token : void 0;
|
|
25
25
|
let optionsList = [];
|
|
26
26
|
let isLoading = false;
|
|
27
|
-
if (["evm", "
|
|
27
|
+
if (["evm", "all"].includes(mode)) {
|
|
28
28
|
optionsList.push(
|
|
29
29
|
...getEvmTokenOptions(
|
|
30
30
|
walletPaymentOptions.options ?? [],
|
|
@@ -37,7 +37,7 @@ function useTokenOptions(mode) {
|
|
|
37
37
|
);
|
|
38
38
|
isLoading ||= walletPaymentOptions.isLoading;
|
|
39
39
|
}
|
|
40
|
-
if (["solana", "
|
|
40
|
+
if (["solana", "all"].includes(mode)) {
|
|
41
41
|
optionsList.push(
|
|
42
42
|
...getSolanaTokenOptions(
|
|
43
43
|
solanaPaymentOptions.options ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenOptions.js","sources":["../../../src/hooks/useTokenOptions.tsx"],"sourcesContent":["/// Gets token options when paying from a connected wallet. Supports both EVM\n\nimport {\n DaimoPayToken,\n getChainName,\n Token,\n WalletPaymentOption,\n} from \"@daimo/pay-common\";\nimport { Option } from \"../components/Common/OptionsList\";\nimport TokenChainLogo from \"../components/Common/TokenChainLogo\";\nimport { ROUTES } from \"../constants/routes\";\nimport { flattenChildren } from \"../utils\";\nimport { formatUsd, roundTokenAmount } from \"../utils/format\";\nimport { useDaimoPay } from \"./useDaimoPay\";\nimport useLocales from \"./useLocales\";\nimport { usePayContext } from \"./usePayContext\";\n\n/// and Solana tokens. See OptionsList.\nexport function useTokenOptions(mode: \"evm\" | \"solana\" | \"showCoin\"): {\n optionsList: Option[];\n isLoading: boolean;\n} {\n const { setRoute, paymentState } = usePayContext();\n const {\n isDepositFlow,\n walletPaymentOptions,\n solanaPaymentOptions,\n setSelectedTokenOption,\n setSelectedSolanaTokenOption,\n } = paymentState;\n\n // Get translations once and pass down to helpers to avoid violating\n // the Rules-of-Hooks (hooks can only be called inside React components\n // or custom hooks).\n const locales = useLocales();\n const onString = flattenChildren(locales.on).join(\"\");\n\n // HACK: special handling for portfolio deposits\n const pay = useDaimoPay();\n const isPassthrough = !!pay.order?.metadata.payer?.passthroughTokens?.length;\n const nonPassthroughToken = isPassthrough\n ? pay.order?.destFinalCallTokenAmount.token\n : undefined;\n\n let optionsList: Option[] = [];\n let isLoading = false;\n if ([\"evm\", \"showCoin\"].includes(mode)) {\n optionsList.push(\n ...getEvmTokenOptions(\n walletPaymentOptions.options ?? [],\n isDepositFlow,\n setSelectedTokenOption,\n setRoute,\n onString,\n nonPassthroughToken,\n ),\n );\n isLoading ||= walletPaymentOptions.isLoading;\n }\n if ([\"solana\", \"showCoin\"].includes(mode)) {\n optionsList.push(\n ...getSolanaTokenOptions(\n solanaPaymentOptions.options ?? [],\n isDepositFlow,\n setSelectedSolanaTokenOption,\n setRoute,\n onString,\n ),\n );\n isLoading ||= solanaPaymentOptions.isLoading;\n }\n\n optionsList.sort((a, b) => {\n const dDisabled = (a.disabled ? 1 : 0) - (b.disabled ? 1 : 0);\n if (dDisabled !== 0) return dDisabled;\n const dSort = (b.sortValue ?? 0) - (a.sortValue ?? 0);\n return dSort;\n });\n\n return { optionsList, isLoading };\n}\n\nfunction getEvmTokenOptions(\n options: WalletPaymentOption[],\n isDepositFlow: boolean,\n setSelectedTokenOption: (option: WalletPaymentOption) => void,\n setRoute: (route: ROUTES, meta?: any) => void,\n onString: string,\n nonPassthroughToken?: Token,\n) {\n return options.map((option) => {\n const chainName = getChainName(option.balance.token.chainId);\n const titlePrice = isDepositFlow\n ? formatUsd(option.balance.usd)\n : roundTokenAmount(option.required.amount, option.required.token);\n const title = `${titlePrice} ${option.balance.token.symbol} ${onString} ${chainName}`;\n\n const balanceStr = `${roundTokenAmount(option.balance.amount, option.balance.token)} ${option.balance.token.symbol}`;\n let subtitle =\n option.disabledReason ??\n `${isDepositFlow ? \"\" : \"Balance: \"}${balanceStr}`;\n const disabled = option.disabledReason != null;\n\n // HACK: special handling for portfolio deposits\n if (nonPassthroughToken != null) {\n const defaultSym = nonPassthroughToken.symbol;\n const optSym = option.balance.token.symbol;\n if (option.passthroughAddress == null && optSym !== defaultSym) {\n subtitle = `Convert to ${defaultSym}`;\n } else {\n subtitle = `Deposit ${optSym}`;\n }\n }\n const sortValue =\n option.balance.usd + (option.passthroughAddress == null ? 0 : 1e9);\n\n return {\n id: getDaimoTokenKey(option.balance.token),\n sortValue,\n title,\n subtitle,\n icons: [\n <TokenChainLogo\n key={getDaimoTokenKey(option.balance.token)}\n token={option.balance.token}\n />,\n ],\n onClick: () => {\n setSelectedTokenOption(option);\n const meta = {\n event: \"click-token\",\n tokenSymbol: option.balance.token.symbol,\n chainId: option.balance.token.chainId,\n };\n if (isDepositFlow) {\n setRoute(ROUTES.SELECT_AMOUNT, meta);\n } else {\n setRoute(ROUTES.PAY_WITH_TOKEN, meta);\n }\n },\n disabled,\n };\n });\n}\n\nfunction getSolanaTokenOptions(\n options: WalletPaymentOption[],\n isDepositFlow: boolean,\n setSelectedSolanaTokenOption: (option: WalletPaymentOption) => void,\n setRoute: (route: ROUTES, meta?: any) => void,\n onString: string,\n) {\n return options.map((option) => {\n const titlePrice = isDepositFlow\n ? formatUsd(option.balance.usd)\n : roundTokenAmount(option.required.amount, option.required.token);\n const title = `${titlePrice} ${option.balance.token.symbol} ${onString} Solana`;\n const balanceStr = `${roundTokenAmount(option.balance.amount, option.balance.token)} ${option.balance.token.symbol}`;\n const subtitle =\n option.disabledReason ??\n `${isDepositFlow ? \"\" : \"Balance: \"}${balanceStr}`;\n const disabled = option.disabledReason != null;\n\n return {\n id: getDaimoTokenKey(option.balance.token),\n sortValue: option.balance.usd,\n title,\n subtitle,\n icons: [\n <TokenChainLogo\n key={getDaimoTokenKey(option.balance.token)}\n token={option.balance.token}\n />,\n ],\n onClick: () => {\n setSelectedSolanaTokenOption(option);\n const meta = {\n event: \"click-solana-token\",\n tokenSymbol: option.balance.token.symbol,\n chainId: option.balance.token.chainId,\n };\n if (isDepositFlow) {\n setRoute(ROUTES.SOLANA_SELECT_AMOUNT, meta);\n } else {\n setRoute(ROUTES.SOLANA_PAY_WITH_TOKEN, meta);\n }\n },\n disabled,\n };\n });\n}\n\nfunction getDaimoTokenKey(token: DaimoPayToken) {\n return `${token.chainId}-${token.token}`;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTokenOptions.js","sources":["../../../src/hooks/useTokenOptions.tsx"],"sourcesContent":["/// Gets token options when paying from a connected wallet. Supports both EVM\n\nimport {\n DaimoPayToken,\n getChainName,\n Token,\n WalletPaymentOption,\n} from \"@daimo/pay-common\";\nimport { Option } from \"../components/Common/OptionsList\";\nimport TokenChainLogo from \"../components/Common/TokenChainLogo\";\nimport { ROUTES } from \"../constants/routes\";\nimport { flattenChildren } from \"../utils\";\nimport { formatUsd, roundTokenAmount } from \"../utils/format\";\nimport { useDaimoPay } from \"./useDaimoPay\";\nimport useLocales from \"./useLocales\";\nimport { usePayContext } from \"./usePayContext\";\n\n/// and Solana tokens. See OptionsList.\nexport function useTokenOptions(mode: \"evm\" | \"solana\" | \"all\"): {\n optionsList: Option[];\n isLoading: boolean;\n} {\n const { setRoute, paymentState } = usePayContext();\n const {\n isDepositFlow,\n walletPaymentOptions,\n solanaPaymentOptions,\n setSelectedTokenOption,\n setSelectedSolanaTokenOption,\n } = paymentState;\n\n // Get translations once and pass down to helpers to avoid violating\n // the Rules-of-Hooks (hooks can only be called inside React components\n // or custom hooks).\n const locales = useLocales();\n const onString = flattenChildren(locales.on).join(\"\");\n\n // HACK: special handling for portfolio deposits\n const pay = useDaimoPay();\n const isPassthrough = !!pay.order?.metadata.payer?.passthroughTokens?.length;\n const nonPassthroughToken = isPassthrough\n ? pay.order?.destFinalCallTokenAmount.token\n : undefined;\n\n let optionsList: Option[] = [];\n let isLoading = false;\n if ([\"evm\", \"all\"].includes(mode)) {\n optionsList.push(\n ...getEvmTokenOptions(\n walletPaymentOptions.options ?? [],\n isDepositFlow,\n setSelectedTokenOption,\n setRoute,\n onString,\n nonPassthroughToken,\n ),\n );\n isLoading ||= walletPaymentOptions.isLoading;\n }\n if ([\"solana\", \"all\"].includes(mode)) {\n optionsList.push(\n ...getSolanaTokenOptions(\n solanaPaymentOptions.options ?? [],\n isDepositFlow,\n setSelectedSolanaTokenOption,\n setRoute,\n onString,\n ),\n );\n isLoading ||= solanaPaymentOptions.isLoading;\n }\n\n optionsList.sort((a, b) => {\n const dDisabled = (a.disabled ? 1 : 0) - (b.disabled ? 1 : 0);\n if (dDisabled !== 0) return dDisabled;\n const dSort = (b.sortValue ?? 0) - (a.sortValue ?? 0);\n return dSort;\n });\n\n return { optionsList, isLoading };\n}\n\nfunction getEvmTokenOptions(\n options: WalletPaymentOption[],\n isDepositFlow: boolean,\n setSelectedTokenOption: (option: WalletPaymentOption) => void,\n setRoute: (route: ROUTES, meta?: any) => void,\n onString: string,\n nonPassthroughToken?: Token,\n) {\n return options.map((option) => {\n const chainName = getChainName(option.balance.token.chainId);\n const titlePrice = isDepositFlow\n ? formatUsd(option.balance.usd)\n : roundTokenAmount(option.required.amount, option.required.token);\n const title = `${titlePrice} ${option.balance.token.symbol} ${onString} ${chainName}`;\n\n const balanceStr = `${roundTokenAmount(option.balance.amount, option.balance.token)} ${option.balance.token.symbol}`;\n let subtitle =\n option.disabledReason ??\n `${isDepositFlow ? \"\" : \"Balance: \"}${balanceStr}`;\n const disabled = option.disabledReason != null;\n\n // HACK: special handling for portfolio deposits\n if (nonPassthroughToken != null) {\n const defaultSym = nonPassthroughToken.symbol;\n const optSym = option.balance.token.symbol;\n if (option.passthroughAddress == null && optSym !== defaultSym) {\n subtitle = `Convert to ${defaultSym}`;\n } else {\n subtitle = `Deposit ${optSym}`;\n }\n }\n const sortValue =\n option.balance.usd + (option.passthroughAddress == null ? 0 : 1e9);\n\n return {\n id: getDaimoTokenKey(option.balance.token),\n sortValue,\n title,\n subtitle,\n icons: [\n <TokenChainLogo\n key={getDaimoTokenKey(option.balance.token)}\n token={option.balance.token}\n />,\n ],\n onClick: () => {\n setSelectedTokenOption(option);\n const meta = {\n event: \"click-token\",\n tokenSymbol: option.balance.token.symbol,\n chainId: option.balance.token.chainId,\n };\n if (isDepositFlow) {\n setRoute(ROUTES.SELECT_AMOUNT, meta);\n } else {\n setRoute(ROUTES.PAY_WITH_TOKEN, meta);\n }\n },\n disabled,\n };\n });\n}\n\nfunction getSolanaTokenOptions(\n options: WalletPaymentOption[],\n isDepositFlow: boolean,\n setSelectedSolanaTokenOption: (option: WalletPaymentOption) => void,\n setRoute: (route: ROUTES, meta?: any) => void,\n onString: string,\n) {\n return options.map((option) => {\n const titlePrice = isDepositFlow\n ? formatUsd(option.balance.usd)\n : roundTokenAmount(option.required.amount, option.required.token);\n const title = `${titlePrice} ${option.balance.token.symbol} ${onString} Solana`;\n const balanceStr = `${roundTokenAmount(option.balance.amount, option.balance.token)} ${option.balance.token.symbol}`;\n const subtitle =\n option.disabledReason ??\n `${isDepositFlow ? \"\" : \"Balance: \"}${balanceStr}`;\n const disabled = option.disabledReason != null;\n\n return {\n id: getDaimoTokenKey(option.balance.token),\n sortValue: option.balance.usd,\n title,\n subtitle,\n icons: [\n <TokenChainLogo\n key={getDaimoTokenKey(option.balance.token)}\n token={option.balance.token}\n />,\n ],\n onClick: () => {\n setSelectedSolanaTokenOption(option);\n const meta = {\n event: \"click-solana-token\",\n tokenSymbol: option.balance.token.symbol,\n chainId: option.balance.token.chainId,\n };\n if (isDepositFlow) {\n setRoute(ROUTES.SOLANA_SELECT_AMOUNT, meta);\n } else {\n setRoute(ROUTES.SOLANA_PAY_WITH_TOKEN, meta);\n }\n },\n disabled,\n };\n });\n}\n\nfunction getDaimoTokenKey(token: DaimoPayToken) {\n return `${token.chainId}-${token.token}`;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@daimo/pay",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.16.
|
|
4
|
+
"version": "1.16.9",
|
|
5
5
|
"author": "Daimo",
|
|
6
6
|
"homepage": "https://pay.daimo.com",
|
|
7
7
|
"license": "BSD-2-Clause license",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"lint": "eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings=0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@daimo/pay-common": "1.16.
|
|
36
|
+
"@daimo/pay-common": "1.16.9",
|
|
37
37
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
38
38
|
"@solana/wallet-adapter-react": "^0.15.35",
|
|
39
39
|
"@solana/web3.js": "^1.95.4",
|