@cromix-dev/payment-component 0.0.12 → 0.0.13
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.
|
@@ -622,8 +622,8 @@ const Dropdown = ({
|
|
|
622
622
|
maxHeight: type === "token" ? "257px" : "202px"
|
|
623
623
|
},
|
|
624
624
|
children: lists.map((item, index) => {
|
|
625
|
-
const iconSrc = type === "token" ?
|
|
626
|
-
const altText = type === "token" ?
|
|
625
|
+
const iconSrc = type === "token" ? item.tokenIcon : type === "network" ? item.chainIcon : null;
|
|
626
|
+
const altText = type === "token" ? item.tokenName : type === "network" ? getNetworkName(item.chainId) : "";
|
|
627
627
|
return /*#__PURE__*/_jsxs("div", {
|
|
628
628
|
className: styles.dropdownItem,
|
|
629
629
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoPayment.js","names":["useState","useEffect","useCallback","useRef","useMemo","useAccount","useWalletClient","usePublicClient","useSwitchChain","useDisconnect","useChains","useBalance","useReadContract","useEstimateFeesPerGas","useAppKit","mainnet","erc20Abi","formatUnits","maxUint256","toast","PaymentRouterAbi","ETH","mainnetUSDTAbi","USDT_ADDRESSES","styles","jsxs","_jsxs","jsx","_jsx","Fragment","_Fragment","isNativeCoin","tokenAddress","toLowerCase","isMainnetUSDT","chainId","id","CryptoPayment","paymentConfig","usdAmount","onEstimateTokenAmount","onCreatePayment","onGetSignature","onSuccess","onCancel","address","chain","isConnected","publicClient","data","walletClient","switchChain","disconnect","open","chains","estimatedTokenAmount","setEstimatedTokenAmount","status","setStatus","selectedPaymentRouter","setSelectedPaymentRouter","selectedPaymentSetting","setSelectedPaymentSetting","needsApproval","setNeedsApproval","currentAllowance","setCurrentAllowance","error","setError","availableNetworks","paymentSettings","filter","s","tokenSymbol","balance","isSupported","isLoading","useTokenBalance","decimals","tokenDecimals","Number","estimatedFeesPerGas","undefined","query","enabled","Boolean","estimatedFee","maxFeePerGas","gasPrice","estimatedGas","nativeCoinSymbol","find","c","nativeCurrency","symbol","linkPre","document","createElement","href","rel","head","appendChild","link","removeChild","length","firstToken","fetchEstimatedTokenAmount","paymentSetting","selectedRouter","paymentRouters","router","success","className","walletConnectSuccess","children","slice","containerId","getNetworkName","name","handleSwitch","Promise","res","setTimeout","handleConnectWallet","checkAllowance","parseInt","allowance","readContract","abi","functionName","args","err","console","handleSwitchNetwork","Error","message","handleApprove","request","revokeRequest","simulateContract","account","revokeHash","writeContract","waitForTransactionReceipt","hash","approveRequest","approveHash","handlePay","createdPaymentId","toString","sender","paymentData","signature","erc20","BigInt","receiver","feeRate","expirationTimestamp","value","amount","debug","receipt","overlay","wrapper","style","height","wallet","walletInput","walletLink","cursor","onClick","UnLinkSVG","LinkSVG","walletAddress","switchBtn","closeBtn","CloseLargeSVG","paymentWrapper","paymentTitle","Dropdown","type","active","Math","round","items","Array","from","Map","map","item","values","onSelect","paymentAmountWrapper","paymentAmount","paymentAmountTotal","chevronDownLarge","ChevronDownLargeSVG","summaryWrapper","summaryItemWrapper","marginBottom","summaryItemTitle","summaryItemValue","fontSize","summaryTotal","connectWallet","disabled","switchNetworkButton","payButton","fontFamily","fontWeight","backgroundColor","color","token","evmWallet","isErc20","evmNative","evmErc20","raw","lists","setLists","setOpen","search","setSearch","ref","handleClickOutside","e","current","contains","target","addEventListener","removeEventListener","trim","handleSearch","q","includes","iconSrc","tokenIcon","chainIcon","altText","tokenName","paymentTokenNetworkWrapper","paymentTokenNetwork","dropdownItem","paddingLeft","paddingRight","icon24","src","alt","dropdownItemMiddle","dropdownItemText","dropdownItemBalance","chevronDown","transform","ChevronDownSVG","dropdownWrapper","display","dropdownSearch","placeholder","dropdownInput","onChange","onKeyDown","key","SearchSVG","dropdownItemWrapper","maxHeight","index","width","viewBox","fill","xmlns","d","stroke","opacity"],"sources":["../../src/components/CryptoPayment.tsx"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from \"react\";\nimport {\n useAccount,\n useWalletClient,\n usePublicClient,\n useSwitchChain,\n useDisconnect,\n useChains,\n useBalance,\n useReadContract,\n useEstimateFeesPerGas,\n} from \"wagmi\";\nimport { useAppKit } from \"@reown/appkit/react\";\nimport { mainnet } from \"@reown/appkit/networks\";\nimport {\n type Address,\n type Hex,\n Chain,\n erc20Abi,\n formatUnits,\n maxUint256,\n} from \"viem\";\nimport { Decimal } from \"decimal.js\";\nimport { toast } from \"react-toastify\";\nimport {\n PaymentRouterAbi,\n ETH,\n mainnetUSDTAbi,\n USDT_ADDRESSES,\n} from \"@cromix-dev/evm\";\nimport {\n type PaymentRouter,\n type PaymentSetting,\n type PaymentConfig,\n type CreatePaymentRequest,\n type CreatePaymentResponse,\n type GetSignatureResponse,\n} from \"../types/index.js\";\nimport * as styles from \"../styles/Crypto.css.js\";\n\n// checkers for native coins\nconst isNativeCoin = (tokenAddress: string): boolean =>\n tokenAddress.toLowerCase() === ETH.toLowerCase();\n\n// checkers for non-standard ERC20 tokens\nconst isMainnetUSDT = (chainId: number, tokenAddress: string): boolean =>\n chainId === mainnet.id &&\n tokenAddress.toLowerCase() === USDT_ADDRESSES[mainnet.id].toLowerCase();\n\ninterface CryptoPaymentProps {\n paymentConfig: PaymentConfig;\n usdAmount: Decimal.Value;\n onEstimateTokenAmount: (\n usdAmount: number,\n token: { chainId: string; tokenSymbol: string; tokenAddress: string },\n ) => Promise<number>;\n onCreatePayment: (\n request: CreatePaymentRequest,\n ) => Promise<CreatePaymentResponse>;\n onGetSignature: (id: string) => Promise<GetSignatureResponse>;\n onSuccess: (id: string) => void;\n onCancel: () => void;\n}\n\nexport default function CryptoPayment({\n paymentConfig,\n usdAmount,\n onEstimateTokenAmount,\n onCreatePayment,\n onGetSignature,\n onSuccess,\n onCancel,\n}: CryptoPaymentProps) {\n const { address, chain, isConnected } = useAccount();\n const publicClient = usePublicClient();\n const { data: walletClient } = useWalletClient();\n const { switchChain } = useSwitchChain();\n const { disconnect } = useDisconnect();\n const { open } = useAppKit();\n const chains = useChains();\n\n const [estimatedTokenAmount, setEstimatedTokenAmount] = useState(0);\n\n const [status, setStatus] = useState<\n | \"idle\"\n | \"switching\"\n | \"checking_allowance\"\n | \"approving\"\n | \"creating\"\n | \"signing\"\n | \"sending\"\n | \"confirming\"\n | \"success\"\n >(\"idle\");\n const [selectedPaymentRouter, setSelectedPaymentRouter] =\n useState<PaymentRouter | null>(null);\n const [selectedPaymentSetting, setSelectedPaymentSetting] =\n useState<PaymentSetting | null>(null);\n const [needsApproval, setNeedsApproval] = useState<boolean | null>(null);\n const [currentAllowance, setCurrentAllowance] = useState<bigint>(0n);\n const [error, setError] = useState<string | null>(null);\n\n const availableNetworks = useMemo(() => {\n if (!selectedPaymentSetting) return [];\n return paymentConfig.paymentSettings.filter(\n (s) => s.tokenSymbol === selectedPaymentSetting.tokenSymbol,\n );\n }, [paymentConfig.paymentSettings, selectedPaymentSetting]);\n\n const { balance, isSupported, isLoading } = useTokenBalance(\n {\n tokenAddress: selectedPaymentSetting?.tokenAddress as string,\n decimals: selectedPaymentSetting?.tokenDecimals as number,\n chainId: Number(selectedPaymentSetting?.chainId as string),\n },\n address,\n );\n\n const { data: estimatedFeesPerGas } = useEstimateFeesPerGas({\n chainId: selectedPaymentSetting\n ? Number(selectedPaymentSetting.chainId)\n : undefined,\n query: {\n enabled: Boolean(selectedPaymentSetting?.chainId),\n },\n });\n\n const estimatedFee = useMemo(() => {\n if (!estimatedFeesPerGas) return \"0\";\n const maxFeePerGas =\n estimatedFeesPerGas.maxFeePerGas ?? estimatedFeesPerGas.gasPrice;\n if (!maxFeePerGas) return \"0\";\n const estimatedGas = 21000n;\n return formatUnits(estimatedGas * maxFeePerGas, 18);\n }, [estimatedFeesPerGas]);\n\n const nativeCoinSymbol = useMemo(() => {\n if (!selectedPaymentSetting) return \"\";\n const chain = chains.find(\n (c) => c.id === Number(selectedPaymentSetting.chainId),\n );\n return chain?.nativeCurrency?.symbol ?? \"ETH\";\n }, [selectedPaymentSetting, chains]);\n\n useEffect(() => {\n const linkPre = document.createElement(\"link\");\n linkPre.href =\n \"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.6/dist/web/static/pretendard-dynamic-subset.css\";\n linkPre.rel = \"stylesheet\";\n document.head.appendChild(linkPre);\n\n const link = document.createElement(\"link\");\n link.href =\n \"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@600&family=Inter:opsz,wght@14..32,500&display=swap\";\n link.rel = \"stylesheet\";\n document.head.appendChild(link);\n\n return () => {\n document.head.removeChild(linkPre);\n document.head.removeChild(link);\n };\n }, []);\n\n useEffect(() => {\n if (paymentConfig.paymentSettings.length === 0) {\n setSelectedPaymentSetting(null);\n return;\n }\n const firstToken = paymentConfig.paymentSettings[0];\n setSelectedPaymentSetting(firstToken);\n }, [paymentConfig]);\n\n useEffect(() => {\n if (!selectedPaymentSetting) return;\n\n async function fetchEstimatedTokenAmount(paymentSetting: PaymentSetting) {\n const estimatedTokenAmount = await onEstimateTokenAmount(\n Number(usdAmount),\n {\n chainId: paymentSetting.chainId,\n tokenSymbol: paymentSetting.tokenSymbol,\n tokenAddress: paymentSetting.tokenAddress,\n },\n );\n setEstimatedTokenAmount(estimatedTokenAmount);\n }\n\n fetchEstimatedTokenAmount(selectedPaymentSetting);\n }, [selectedPaymentSetting, onEstimateTokenAmount, usdAmount]);\n\n useEffect(() => {\n if (!selectedPaymentSetting) {\n setSelectedPaymentRouter(null);\n return;\n }\n const selectedRouter = paymentConfig.paymentRouters.find(\n (router) => router.chainId === selectedPaymentSetting.chainId,\n );\n setSelectedPaymentRouter(selectedRouter ?? null);\n }, [selectedPaymentSetting, paymentConfig.paymentRouters]);\n\n useEffect(() => {\n if (isConnected && address) {\n toast.success(\n <div className={styles.walletConnectSuccess}>\n Connected to Wallet {address.slice(0, 5)}...{address.slice(-5)}\n </div>,\n { containerId: \"payment-component\" },\n );\n }\n }, [isConnected, address]);\n\n const getNetworkName = (chainId: string) => {\n const chain = chains.find((c) => c.id === Number(chainId));\n\n return chain ? chain.name : chainId;\n };\n\n const handleSwitch = async () => {\n disconnect();\n await new Promise((res) => setTimeout(res, 500));\n open();\n };\n\n const handleConnectWallet = () => {\n open();\n };\n\n const checkAllowance = useCallback(async () => {\n if (\n !isConnected ||\n !address ||\n !chain ||\n !publicClient ||\n !selectedPaymentRouter ||\n !selectedPaymentSetting ||\n chain.id !== parseInt(selectedPaymentSetting.chainId)\n ) {\n setNeedsApproval(null);\n setCurrentAllowance(0n);\n return;\n }\n if (isNativeCoin(selectedPaymentSetting.tokenAddress)) {\n setNeedsApproval(false);\n setCurrentAllowance(0n);\n return;\n }\n\n try {\n setStatus(\"checking_allowance\");\n const allowance = await publicClient.readContract({\n address: selectedPaymentSetting.tokenAddress as Address,\n abi: erc20Abi,\n functionName: \"allowance\",\n args: [address, selectedPaymentRouter.address as Address],\n });\n setNeedsApproval(allowance === 0n);\n setCurrentAllowance(allowance);\n setStatus(\"idle\");\n } catch (err) {\n console.error(\"Failed to check allowance:\", err);\n setNeedsApproval(true);\n setCurrentAllowance(0n);\n setStatus(\"idle\");\n }\n }, [\n isConnected,\n address,\n chain,\n publicClient,\n selectedPaymentRouter,\n selectedPaymentSetting,\n ]);\n\n useEffect(() => {\n checkAllowance();\n }, [checkAllowance]);\n\n const handleSwitchNetwork = () => {\n if (!isConnected) return;\n if (!selectedPaymentRouter) return;\n\n setError(null);\n try {\n setStatus(\"switching\");\n switchChain({ chainId: parseInt(selectedPaymentRouter.chainId) });\n setStatus(\"idle\");\n } catch (err) {\n console.error(\"Failed to switch network:\", err);\n setError(err instanceof Error ? err.message : \"Failed to switch network\");\n setStatus(\"idle\");\n }\n };\n\n const handleApprove = async () => {\n if (!isConnected) return;\n if (!address) return;\n if (!chain) return;\n if (!publicClient) return;\n if (!walletClient) return;\n if (!selectedPaymentRouter) return;\n if (!selectedPaymentSetting) return;\n if (chain.id !== parseInt(selectedPaymentRouter.chainId)) {\n setError(`Please switch to Chain ID ${selectedPaymentRouter.chainId}`);\n return;\n }\n\n // setError(null);\n try {\n setStatus(\"approving\");\n // if the token is ethereum USDT, then revoke existing allowance first\n if (\n isMainnetUSDT(chain.id, selectedPaymentSetting.tokenAddress) &&\n currentAllowance > 0n\n ) {\n const { request: revokeRequest } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentSetting.tokenAddress as Address,\n abi: mainnetUSDTAbi,\n functionName: \"approve\",\n args: [selectedPaymentRouter.address as Address, 0n],\n });\n const revokeHash = await walletClient.writeContract(revokeRequest);\n await publicClient.waitForTransactionReceipt({ hash: revokeHash });\n }\n\n // approve infinite\n const { request: approveRequest } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentSetting.tokenAddress as Address,\n abi: isMainnetUSDT(chain.id, selectedPaymentSetting.tokenAddress)\n ? mainnetUSDTAbi\n : erc20Abi,\n functionName: \"approve\",\n args: [selectedPaymentRouter.address as Address, maxUint256],\n });\n const approveHash = await walletClient.writeContract(approveRequest);\n await publicClient.waitForTransactionReceipt({ hash: approveHash });\n // re-check allowance after approval\n await checkAllowance();\n setStatus(\"idle\");\n } catch (err) {\n console.error(\"Failed to approve token:\", err);\n toast.error(\n `Approval failed. Please ensure your wallet has enough ${selectedPaymentSetting.tokenSymbol} to complete payment and ${chains.find((c) => c.id === chain.id)?.nativeCurrency?.symbol ?? \"native coin\"} to cover gas fees.`,\n { containerId: \"payment-component\" },\n );\n setStatus(\"idle\");\n }\n };\n\n const handlePay = async () => {\n if (!isConnected) return;\n if (!address) return;\n if (!chain) return;\n if (!publicClient) return;\n if (!walletClient) return;\n if (!selectedPaymentRouter) return;\n if (!selectedPaymentSetting) return;\n if (chain.id !== parseInt(selectedPaymentSetting.chainId)) {\n setError(`Please switch to Chain ID ${selectedPaymentRouter.chainId}`);\n return;\n }\n\n // setError(null);\n try {\n setStatus(\"creating\");\n // Create payment via merchant's API\n const { id: createdPaymentId } = await onCreatePayment({\n usdAmount: usdAmount.toString(),\n chainId: selectedPaymentSetting.chainId,\n tokenAddress: selectedPaymentSetting.tokenAddress,\n sender: address,\n });\n\n setStatus(\"signing\");\n // Get signature from merchant's API\n const { paymentData, signature } = await onGetSignature(createdPaymentId);\n\n setStatus(\"sending\");\n // Send transaction to PaymentRouter contract\n let hash: Hex;\n if (isNativeCoin(paymentData.erc20)) {\n const { request } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentRouter.address as Address,\n abi: PaymentRouterAbi,\n functionName: \"payETH\",\n args: [\n BigInt(paymentData.id),\n paymentData.receiver as Address,\n BigInt(paymentData.feeRate),\n BigInt(paymentData.expirationTimestamp),\n signature as Hex,\n ],\n value: BigInt(paymentData.amount),\n });\n hash = await walletClient.writeContract(request);\n } else {\n const { request } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentRouter.address as Address,\n abi: PaymentRouterAbi,\n functionName: \"payERC20\",\n args: [\n BigInt(paymentData.id),\n paymentData.erc20 as Address,\n paymentData.receiver as Address,\n BigInt(paymentData.amount),\n BigInt(paymentData.feeRate),\n BigInt(paymentData.expirationTimestamp),\n signature as Hex,\n ],\n });\n hash = await walletClient.writeContract(request);\n }\n console.debug(\"Payment transaction sent:\", hash);\n\n setStatus(\"confirming\");\n // Confirm payment transaction\n const receipt = await publicClient.waitForTransactionReceipt({ hash });\n if (!receipt) {\n throw new Error(\"Transaction receipt not found\");\n }\n console.debug(\"Payment transaction confirmed:\", receipt);\n\n setStatus(\"success\");\n // Call onSuccess callback\n onSuccess(createdPaymentId);\n } catch (err) {\n console.error(\"Failed to process payment:\", err);\n toast.error(\n `Payment failed. Please ensure your wallet has enough ${selectedPaymentSetting.tokenSymbol} to complete payment and ${chains.find((c) => c.id === chain.id)?.nativeCurrency?.symbol ?? \"native coin\"} to cover gas fees.`,\n { containerId: \"payment-component\" },\n );\n setStatus(\"idle\");\n }\n };\n\n return (\n <div className={styles.overlay}>\n <div\n className={styles.wrapper}\n style={{\n height: isConnected ? \"570px\" : \"575px\",\n }}\n >\n <div className={styles.wallet}>\n <div className={styles.walletInput}>\n <div\n className={styles.walletLink}\n style={{\n cursor: isConnected ? \"pointer\" : \"default\",\n }}\n onClick={() => (isConnected ? disconnect() : undefined)}\n >\n {isConnected ? <UnLinkSVG /> : <LinkSVG />}\n </div>\n <div className={styles.walletAddress}>\n {address\n ? `${address.slice(0, 5)}...${address.slice(-5)}`\n : \"Wallet Not Connected\"}\n </div>\n {isConnected && (\n <div className={styles.switchBtn} onClick={handleSwitch}>\n Switch\n </div>\n )}\n </div>\n <div className={styles.closeBtn} onClick={onCancel}>\n <CloseLargeSVG />\n </div>\n </div>\n\n <div className={styles.paymentWrapper}>\n <h4 className={styles.paymentTitle}>Select Payment Currency</h4>\n <Dropdown\n type=\"token\"\n chains={chains}\n active={selectedPaymentSetting}\n balance={Math.round(Number(balance)).toString()}\n items={Array.from(\n new Map(\n paymentConfig.paymentSettings.map((item) => [\n item.tokenSymbol,\n item,\n ]),\n ).values(),\n )}\n onSelect={(item) => setSelectedPaymentSetting(item)}\n />\n <Dropdown\n type=\"network\"\n chains={chains}\n active={selectedPaymentSetting}\n balance={`${estimatedFee} ${nativeCoinSymbol}`}\n items={availableNetworks}\n onSelect={(item) => setSelectedPaymentSetting(item)}\n />\n <div className={styles.paymentAmountWrapper}>\n <p className={styles.paymentAmount}>Payment amount</p>\n <p className={styles.paymentAmountTotal}>{`${usdAmount} $`}</p>\n </div>\n </div>\n <div className={styles.chevronDownLarge}>\n <ChevronDownLargeSVG />\n </div>\n <div className={styles.summaryWrapper}>\n <div\n className={styles.summaryItemWrapper}\n style={{ marginBottom: \"4px\" }}\n >\n <p className={styles.summaryItemTitle}>Token</p>\n <p className={styles.summaryItemValue}>\n {selectedPaymentSetting?.tokenSymbol}\n </p>\n </div>\n <div\n className={styles.summaryItemWrapper}\n style={{ marginBottom: \"12px\" }}\n >\n <p className={styles.summaryItemTitle}>Network</p>\n <p className={styles.summaryItemValue}>\n {getNetworkName(selectedPaymentSetting?.chainId as string)}\n </p>\n </div>\n <div className={styles.summaryItemWrapper}>\n <p className={styles.summaryItemValue} style={{ fontSize: \"14px\" }}>\n Amount\n </p>\n <p className={styles.summaryTotal}>\n {estimatedTokenAmount} {selectedPaymentSetting?.tokenSymbol}\n </p>\n </div>\n </div>\n\n {/* Payment Execution */}\n {/* {isConnected && selectedPaymentRouter && selectedPaymentSetting && (\n <div className=\"space-y-4\">\n {status !== \"idle\" && (\n <div className=\"bg-blue-900 bg-opacity-30 border border-blue-700 p-3 rounded text-sm text-blue-300\">\n {status === \"switching\" && \"Switching network...\"}\n {status === \"checking_allowance\" && \"Checking allowance...\"}\n {status === \"approving\" && \"Approving token...\"}\n {status === \"creating\" && \"Creating payment...\"}\n {status === \"signing\" && \"Getting signature...\"}\n {status === \"sending\" && \"Sending transaction...\"}\n {status === \"confirming\" && \"Confirming...\"}\n {status === \"success\" && \"✓ Payment successful!\"}\n </div>\n )}\n\n <div className=\"flex gap-3\">\n <button\n onClick={() => {\n setSelectedPaymentRouter(null);\n setSelectedPaymentSetting(null);\n }}\n disabled={status !== \"idle\"}\n className=\"flex-1 bg-gray-600 text-white py-3 rounded hover:bg-gray-700 disabled:opacity-50 transition\"\n >\n Back\n </button>\n {needsApproval ? (\n <button\n onClick={handleApprove}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId)\n }\n className=\"flex-1 bg-orange-600 text-white py-3 rounded hover:bg-orange-700 disabled:opacity-50 font-semibold transition\"\n >\n {status === \"idle\"\n ? `Approve ${selectedPaymentSetting.tokenSymbol}`\n : \"Processing...\"}\n </button>\n ) : (\n <button\n onClick={handlePay}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId) ||\n needsApproval === null\n }\n className=\"flex-1 bg-blue-600 text-white py-3 rounded hover:bg-blue-700 disabled:opacity-50 font-semibold transition\"\n >\n {status === \"idle\"\n ? `Pay ${selectedPaymentSetting.tokenSymbol}`\n : \"Processing...\"}\n </button>\n )}\n </div>\n </div>\n )} */}\n\n {/* Connect To Wallet */}\n {!isConnected && (\n <button\n className={styles.connectWallet}\n onClick={handleConnectWallet}\n disabled={status !== \"idle\"}\n >\n Wallet Connect\n </button>\n )}\n\n {isConnected && selectedPaymentRouter && selectedPaymentSetting && (\n <>\n {chain && chain.id !== parseInt(selectedPaymentRouter.chainId) && (\n <button\n onClick={handleSwitchNetwork}\n disabled={status === \"switching\"}\n className={styles.switchNetworkButton}\n >\n {status === \"switching\" ? \"Switching...\" : \"Switch Network\"}\n </button>\n )}\n\n {/* Payment */}\n {chain && chain.id === parseInt(selectedPaymentRouter.chainId) && (\n <>\n {needsApproval ? (\n <button\n onClick={handleApprove}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId)\n }\n className={styles.payButton}\n style={{\n fontFamily: '\"Inter\", sans-serif',\n fontWeight: \"500\",\n backgroundColor: \"#646464\",\n color: \"#FFFFFF\",\n }}\n >\n {status === \"idle\" ? \"Approve\" : \"Processing...\"}\n </button>\n ) : (\n <button\n onClick={handlePay}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId)\n // || needsApproval === null\n }\n className={styles.payButton}\n style={{\n fontFamily: '\"IBM Plex Mono\", monospace',\n fontWeight: \"600\",\n backgroundColor: \"#FFED2B\",\n color: \"#000000\",\n }}\n >\n {status === \"idle\" ? \"Pay\" : \"Processing...\"}\n </button>\n )}\n </>\n )}\n </>\n )}\n </div>\n </div>\n );\n}\n\nconst useTokenBalance = (\n token: {\n tokenAddress: `0x${string}` | string;\n decimals: number;\n chainId: number;\n },\n evmWallet?: `0x${string}`,\n) => {\n const isErc20 =\n Boolean(token.tokenAddress) && !isNativeCoin(token.tokenAddress);\n\n // Native balance\n const evmNative = useBalance({\n address: evmWallet,\n chainId: token.chainId,\n query: {\n enabled: !isErc20 && Boolean(evmWallet),\n },\n });\n\n // ERC-20 balance\n const evmErc20 = useReadContract({\n address: isErc20 ? (token.tokenAddress as `0x${string}`) : undefined,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: evmWallet ? [evmWallet] : undefined,\n chainId: token.chainId,\n query: {\n enabled: isErc20 && Boolean(evmWallet),\n },\n });\n\n const isLoading = isErc20 ? evmErc20.isLoading : evmNative.isLoading;\n\n const raw = isErc20 ? (evmErc20.data ?? 0n) : (evmNative.data?.value ?? 0n);\n\n return {\n isSupported: Boolean(token),\n isLoading: isLoading,\n balance: formatUnits(raw, token.decimals),\n };\n};\n\nconst Dropdown = ({\n type,\n chains,\n active,\n items,\n balance,\n onSelect,\n}: {\n type: \"token\" | \"network\";\n chains: readonly [Chain, ...Chain[]];\n active: PaymentSetting | null;\n items: Array<PaymentSetting>;\n balance: string;\n onSelect: (item: PaymentSetting) => void;\n}) => {\n const [lists, setLists] = useState<Array<PaymentSetting>>([]);\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n setLists(items);\n const handleClickOutside = (e: any) => {\n if (ref.current && !ref.current.contains(e.target)) {\n setOpen(false);\n setSearch(\"\");\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n setLists(items);\n }, [items]);\n\n useEffect(() => {\n if (search.trim().length === 0) {\n setLists(items);\n }\n }, [search]);\n\n const getNetworkName = (chainId: string) => {\n const chain = chains.find((c) => c.id === Number(chainId));\n\n return chain ? chain.name : chainId;\n };\n\n const handleSearch = () => {\n if (search.trim().length === 0) {\n setLists(items);\n return;\n }\n const q = search.trim().toLowerCase();\n setLists(\n items.filter((item) => item.tokenSymbol.toLowerCase().includes(q)),\n );\n };\n\n const iconSrc =\n type === \"token\"\n ? active?.tokenIcon\n : type === \"network\"\n ? active?.chainIcon\n : null;\n const altText =\n type === \"token\"\n ? active?.tokenName\n : type === \"network\"\n ? getNetworkName(active?.chainId as string)\n : \"\";\n\n return (\n <div ref={ref} className={styles.paymentTokenNetworkWrapper}>\n <div\n className={styles.paymentTokenNetwork}\n style={{ color: open ? \"#FFFFFF\" : \"#8D8D8D\" }}\n onClick={() => setOpen(!open)}\n >\n {active && (\n <div\n className={styles.dropdownItem}\n style={{ height: \"auto\", paddingLeft: 0, paddingRight: 0 }}\n >\n {iconSrc && (\n <div className={styles.icon24}>\n <img src={iconSrc} alt={altText} />\n </div>\n )}\n <div className={styles.dropdownItemMiddle}>\n <div className={styles.dropdownItemText}>\n {type === \"token\"\n ? active?.tokenSymbol\n : getNetworkName(active.chainId).slice(0, 16)}\n </div>\n <div className={styles.dropdownItemBalance}>{balance}</div>\n </div>\n <div\n className={styles.chevronDown}\n style={{ transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\" }}\n >\n <ChevronDownSVG />\n </div>\n </div>\n )}\n </div>\n <div\n className={styles.dropdownWrapper}\n style={{ display: open ? \"flex\" : \"none\" }}\n >\n {type === \"token\" && (\n <div className={styles.dropdownSearch}>\n <input\n type=\"text\"\n name=\"search\"\n placeholder=\"Search Token\"\n value={search}\n className={styles.dropdownInput}\n onChange={(e: any) => setSearch(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleSearch();\n }\n }}\n />\n <div\n className={styles.icon24}\n style={{ cursor: \"pointer\" }}\n onClick={handleSearch}\n >\n <SearchSVG />\n </div>\n </div>\n )}\n <div\n className={styles.dropdownItemWrapper}\n style={{ maxHeight: type === \"token\" ? \"257px\" : \"202px\" }}\n >\n {lists.map((item, index) => {\n const iconSrc =\n type === \"token\"\n ? active?.tokenIcon\n : type === \"network\"\n ? active?.chainIcon\n : null;\n const altText =\n type === \"token\"\n ? active?.tokenName\n : type === \"network\"\n ? getNetworkName(active?.chainId as string)\n : \"\";\n return (\n <div\n key={index}\n className={styles.dropdownItem}\n style={{\n backgroundColor:\n active?.id === item.id ? \"#1D1D1D\" : \"transparent\",\n }}\n onClick={() => {\n onSelect?.(item);\n setOpen(false);\n setSearch(\"\");\n setLists(items);\n }}\n >\n {iconSrc && (\n <div className={styles.icon24}>\n <img src={iconSrc} alt={altText} />\n </div>\n )}\n <div className={styles.dropdownItemText}>\n {type === \"token\"\n ? item.tokenSymbol\n : getNetworkName(item.chainId)}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nconst LinkSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.8284 9.17158L9.17156 14.8284M12.7071 16.9498L11.2929 18.364C9.73078 19.9261 7.19812 19.9261 5.63603 18.364C4.07393 16.8019 4.07393 14.2692 5.63603 12.7071L7.05024 11.2929M16.9497 12.7071L18.3639 11.2929C19.926 9.7308 19.926 7.19814 18.3639 5.63604C16.8019 4.07395 14.2692 4.07395 12.7071 5.63604L11.2929 7.05026\"\n stroke=\"#707070\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst UnLinkSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.8284 9.17158L9.17156 14.8284M12.7071 16.9498L11.2929 18.364C9.73078 19.9261 7.19812 19.9261 5.63603 18.364C4.07393 16.8019 4.07393 14.2692 5.63603 12.7071L7.05024 11.2929M16.9497 12.7071L18.3639 11.2929C19.926 9.7308 19.926 7.19814 18.3639 5.63604C16.8019 4.07395 14.2692 4.07395 12.7071 5.63604L11.2929 7.05026\"\n stroke=\"#FFED2B\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst CloseLargeSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21 21L12 12M12 12L3 3M12 12L21.0001 3M12 12L3 21.0001\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst SearchSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g opacity=\"0.2\">\n <path\n d=\"M15 15L21 21M10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10C17 13.866 13.866 17 10 17Z\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nconst ChevronDownSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.92004 9.75L11.9985 14.511L16.0815 9.75\"\n stroke=\"white\"\n stroke-miterlimit=\"10\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst ChevronDownLargeSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19 9L12 16L5 9\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CryptoPayment.js","names":["useState","useEffect","useCallback","useRef","useMemo","useAccount","useWalletClient","usePublicClient","useSwitchChain","useDisconnect","useChains","useBalance","useReadContract","useEstimateFeesPerGas","useAppKit","mainnet","erc20Abi","formatUnits","maxUint256","toast","PaymentRouterAbi","ETH","mainnetUSDTAbi","USDT_ADDRESSES","styles","jsxs","_jsxs","jsx","_jsx","Fragment","_Fragment","isNativeCoin","tokenAddress","toLowerCase","isMainnetUSDT","chainId","id","CryptoPayment","paymentConfig","usdAmount","onEstimateTokenAmount","onCreatePayment","onGetSignature","onSuccess","onCancel","address","chain","isConnected","publicClient","data","walletClient","switchChain","disconnect","open","chains","estimatedTokenAmount","setEstimatedTokenAmount","status","setStatus","selectedPaymentRouter","setSelectedPaymentRouter","selectedPaymentSetting","setSelectedPaymentSetting","needsApproval","setNeedsApproval","currentAllowance","setCurrentAllowance","error","setError","availableNetworks","paymentSettings","filter","s","tokenSymbol","balance","isSupported","isLoading","useTokenBalance","decimals","tokenDecimals","Number","estimatedFeesPerGas","undefined","query","enabled","Boolean","estimatedFee","maxFeePerGas","gasPrice","estimatedGas","nativeCoinSymbol","find","c","nativeCurrency","symbol","linkPre","document","createElement","href","rel","head","appendChild","link","removeChild","length","firstToken","fetchEstimatedTokenAmount","paymentSetting","selectedRouter","paymentRouters","router","success","className","walletConnectSuccess","children","slice","containerId","getNetworkName","name","handleSwitch","Promise","res","setTimeout","handleConnectWallet","checkAllowance","parseInt","allowance","readContract","abi","functionName","args","err","console","handleSwitchNetwork","Error","message","handleApprove","request","revokeRequest","simulateContract","account","revokeHash","writeContract","waitForTransactionReceipt","hash","approveRequest","approveHash","handlePay","createdPaymentId","toString","sender","paymentData","signature","erc20","BigInt","receiver","feeRate","expirationTimestamp","value","amount","debug","receipt","overlay","wrapper","style","height","wallet","walletInput","walletLink","cursor","onClick","UnLinkSVG","LinkSVG","walletAddress","switchBtn","closeBtn","CloseLargeSVG","paymentWrapper","paymentTitle","Dropdown","type","active","Math","round","items","Array","from","Map","map","item","values","onSelect","paymentAmountWrapper","paymentAmount","paymentAmountTotal","chevronDownLarge","ChevronDownLargeSVG","summaryWrapper","summaryItemWrapper","marginBottom","summaryItemTitle","summaryItemValue","fontSize","summaryTotal","connectWallet","disabled","switchNetworkButton","payButton","fontFamily","fontWeight","backgroundColor","color","token","evmWallet","isErc20","evmNative","evmErc20","raw","lists","setLists","setOpen","search","setSearch","ref","handleClickOutside","e","current","contains","target","addEventListener","removeEventListener","trim","handleSearch","q","includes","iconSrc","tokenIcon","chainIcon","altText","tokenName","paymentTokenNetworkWrapper","paymentTokenNetwork","dropdownItem","paddingLeft","paddingRight","icon24","src","alt","dropdownItemMiddle","dropdownItemText","dropdownItemBalance","chevronDown","transform","ChevronDownSVG","dropdownWrapper","display","dropdownSearch","placeholder","dropdownInput","onChange","onKeyDown","key","SearchSVG","dropdownItemWrapper","maxHeight","index","width","viewBox","fill","xmlns","d","stroke","opacity"],"sources":["../../src/components/CryptoPayment.tsx"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from \"react\";\nimport {\n useAccount,\n useWalletClient,\n usePublicClient,\n useSwitchChain,\n useDisconnect,\n useChains,\n useBalance,\n useReadContract,\n useEstimateFeesPerGas,\n} from \"wagmi\";\nimport { useAppKit } from \"@reown/appkit/react\";\nimport { mainnet } from \"@reown/appkit/networks\";\nimport {\n type Address,\n type Hex,\n Chain,\n erc20Abi,\n formatUnits,\n maxUint256,\n} from \"viem\";\nimport { Decimal } from \"decimal.js\";\nimport { toast } from \"react-toastify\";\nimport {\n PaymentRouterAbi,\n ETH,\n mainnetUSDTAbi,\n USDT_ADDRESSES,\n} from \"@cromix-dev/evm\";\nimport {\n type PaymentRouter,\n type PaymentSetting,\n type PaymentConfig,\n type CreatePaymentRequest,\n type CreatePaymentResponse,\n type GetSignatureResponse,\n} from \"../types/index.js\";\nimport * as styles from \"../styles/Crypto.css.js\";\n\n// checkers for native coins\nconst isNativeCoin = (tokenAddress: string): boolean =>\n tokenAddress.toLowerCase() === ETH.toLowerCase();\n\n// checkers for non-standard ERC20 tokens\nconst isMainnetUSDT = (chainId: number, tokenAddress: string): boolean =>\n chainId === mainnet.id &&\n tokenAddress.toLowerCase() === USDT_ADDRESSES[mainnet.id].toLowerCase();\n\ninterface CryptoPaymentProps {\n paymentConfig: PaymentConfig;\n usdAmount: Decimal.Value;\n onEstimateTokenAmount: (\n usdAmount: number,\n token: { chainId: string; tokenSymbol: string; tokenAddress: string },\n ) => Promise<number>;\n onCreatePayment: (\n request: CreatePaymentRequest,\n ) => Promise<CreatePaymentResponse>;\n onGetSignature: (id: string) => Promise<GetSignatureResponse>;\n onSuccess: (id: string) => void;\n onCancel: () => void;\n}\n\nexport default function CryptoPayment({\n paymentConfig,\n usdAmount,\n onEstimateTokenAmount,\n onCreatePayment,\n onGetSignature,\n onSuccess,\n onCancel,\n}: CryptoPaymentProps) {\n const { address, chain, isConnected } = useAccount();\n const publicClient = usePublicClient();\n const { data: walletClient } = useWalletClient();\n const { switchChain } = useSwitchChain();\n const { disconnect } = useDisconnect();\n const { open } = useAppKit();\n const chains = useChains();\n\n const [estimatedTokenAmount, setEstimatedTokenAmount] = useState(0);\n\n const [status, setStatus] = useState<\n | \"idle\"\n | \"switching\"\n | \"checking_allowance\"\n | \"approving\"\n | \"creating\"\n | \"signing\"\n | \"sending\"\n | \"confirming\"\n | \"success\"\n >(\"idle\");\n const [selectedPaymentRouter, setSelectedPaymentRouter] =\n useState<PaymentRouter | null>(null);\n const [selectedPaymentSetting, setSelectedPaymentSetting] =\n useState<PaymentSetting | null>(null);\n const [needsApproval, setNeedsApproval] = useState<boolean | null>(null);\n const [currentAllowance, setCurrentAllowance] = useState<bigint>(0n);\n const [error, setError] = useState<string | null>(null);\n\n const availableNetworks = useMemo(() => {\n if (!selectedPaymentSetting) return [];\n return paymentConfig.paymentSettings.filter(\n (s) => s.tokenSymbol === selectedPaymentSetting.tokenSymbol,\n );\n }, [paymentConfig.paymentSettings, selectedPaymentSetting]);\n\n const { balance, isSupported, isLoading } = useTokenBalance(\n {\n tokenAddress: selectedPaymentSetting?.tokenAddress as string,\n decimals: selectedPaymentSetting?.tokenDecimals as number,\n chainId: Number(selectedPaymentSetting?.chainId as string),\n },\n address,\n );\n\n const { data: estimatedFeesPerGas } = useEstimateFeesPerGas({\n chainId: selectedPaymentSetting\n ? Number(selectedPaymentSetting.chainId)\n : undefined,\n query: {\n enabled: Boolean(selectedPaymentSetting?.chainId),\n },\n });\n\n const estimatedFee = useMemo(() => {\n if (!estimatedFeesPerGas) return \"0\";\n const maxFeePerGas =\n estimatedFeesPerGas.maxFeePerGas ?? estimatedFeesPerGas.gasPrice;\n if (!maxFeePerGas) return \"0\";\n const estimatedGas = 21000n;\n return formatUnits(estimatedGas * maxFeePerGas, 18);\n }, [estimatedFeesPerGas]);\n\n const nativeCoinSymbol = useMemo(() => {\n if (!selectedPaymentSetting) return \"\";\n const chain = chains.find(\n (c) => c.id === Number(selectedPaymentSetting.chainId),\n );\n return chain?.nativeCurrency?.symbol ?? \"ETH\";\n }, [selectedPaymentSetting, chains]);\n\n useEffect(() => {\n const linkPre = document.createElement(\"link\");\n linkPre.href =\n \"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.6/dist/web/static/pretendard-dynamic-subset.css\";\n linkPre.rel = \"stylesheet\";\n document.head.appendChild(linkPre);\n\n const link = document.createElement(\"link\");\n link.href =\n \"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@600&family=Inter:opsz,wght@14..32,500&display=swap\";\n link.rel = \"stylesheet\";\n document.head.appendChild(link);\n\n return () => {\n document.head.removeChild(linkPre);\n document.head.removeChild(link);\n };\n }, []);\n\n useEffect(() => {\n if (paymentConfig.paymentSettings.length === 0) {\n setSelectedPaymentSetting(null);\n return;\n }\n const firstToken = paymentConfig.paymentSettings[0];\n setSelectedPaymentSetting(firstToken);\n }, [paymentConfig]);\n\n useEffect(() => {\n if (!selectedPaymentSetting) return;\n\n async function fetchEstimatedTokenAmount(paymentSetting: PaymentSetting) {\n const estimatedTokenAmount = await onEstimateTokenAmount(\n Number(usdAmount),\n {\n chainId: paymentSetting.chainId,\n tokenSymbol: paymentSetting.tokenSymbol,\n tokenAddress: paymentSetting.tokenAddress,\n },\n );\n setEstimatedTokenAmount(estimatedTokenAmount);\n }\n\n fetchEstimatedTokenAmount(selectedPaymentSetting);\n }, [selectedPaymentSetting, onEstimateTokenAmount, usdAmount]);\n\n useEffect(() => {\n if (!selectedPaymentSetting) {\n setSelectedPaymentRouter(null);\n return;\n }\n const selectedRouter = paymentConfig.paymentRouters.find(\n (router) => router.chainId === selectedPaymentSetting.chainId,\n );\n setSelectedPaymentRouter(selectedRouter ?? null);\n }, [selectedPaymentSetting, paymentConfig.paymentRouters]);\n\n useEffect(() => {\n if (isConnected && address) {\n toast.success(\n <div className={styles.walletConnectSuccess}>\n Connected to Wallet {address.slice(0, 5)}...{address.slice(-5)}\n </div>,\n { containerId: \"payment-component\" },\n );\n }\n }, [isConnected, address]);\n\n const getNetworkName = (chainId: string) => {\n const chain = chains.find((c) => c.id === Number(chainId));\n\n return chain ? chain.name : chainId;\n };\n\n const handleSwitch = async () => {\n disconnect();\n await new Promise((res) => setTimeout(res, 500));\n open();\n };\n\n const handleConnectWallet = () => {\n open();\n };\n\n const checkAllowance = useCallback(async () => {\n if (\n !isConnected ||\n !address ||\n !chain ||\n !publicClient ||\n !selectedPaymentRouter ||\n !selectedPaymentSetting ||\n chain.id !== parseInt(selectedPaymentSetting.chainId)\n ) {\n setNeedsApproval(null);\n setCurrentAllowance(0n);\n return;\n }\n if (isNativeCoin(selectedPaymentSetting.tokenAddress)) {\n setNeedsApproval(false);\n setCurrentAllowance(0n);\n return;\n }\n\n try {\n setStatus(\"checking_allowance\");\n const allowance = await publicClient.readContract({\n address: selectedPaymentSetting.tokenAddress as Address,\n abi: erc20Abi,\n functionName: \"allowance\",\n args: [address, selectedPaymentRouter.address as Address],\n });\n setNeedsApproval(allowance === 0n);\n setCurrentAllowance(allowance);\n setStatus(\"idle\");\n } catch (err) {\n console.error(\"Failed to check allowance:\", err);\n setNeedsApproval(true);\n setCurrentAllowance(0n);\n setStatus(\"idle\");\n }\n }, [\n isConnected,\n address,\n chain,\n publicClient,\n selectedPaymentRouter,\n selectedPaymentSetting,\n ]);\n\n useEffect(() => {\n checkAllowance();\n }, [checkAllowance]);\n\n const handleSwitchNetwork = () => {\n if (!isConnected) return;\n if (!selectedPaymentRouter) return;\n\n setError(null);\n try {\n setStatus(\"switching\");\n switchChain({ chainId: parseInt(selectedPaymentRouter.chainId) });\n setStatus(\"idle\");\n } catch (err) {\n console.error(\"Failed to switch network:\", err);\n setError(err instanceof Error ? err.message : \"Failed to switch network\");\n setStatus(\"idle\");\n }\n };\n\n const handleApprove = async () => {\n if (!isConnected) return;\n if (!address) return;\n if (!chain) return;\n if (!publicClient) return;\n if (!walletClient) return;\n if (!selectedPaymentRouter) return;\n if (!selectedPaymentSetting) return;\n if (chain.id !== parseInt(selectedPaymentRouter.chainId)) {\n setError(`Please switch to Chain ID ${selectedPaymentRouter.chainId}`);\n return;\n }\n\n // setError(null);\n try {\n setStatus(\"approving\");\n // if the token is ethereum USDT, then revoke existing allowance first\n if (\n isMainnetUSDT(chain.id, selectedPaymentSetting.tokenAddress) &&\n currentAllowance > 0n\n ) {\n const { request: revokeRequest } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentSetting.tokenAddress as Address,\n abi: mainnetUSDTAbi,\n functionName: \"approve\",\n args: [selectedPaymentRouter.address as Address, 0n],\n });\n const revokeHash = await walletClient.writeContract(revokeRequest);\n await publicClient.waitForTransactionReceipt({ hash: revokeHash });\n }\n\n // approve infinite\n const { request: approveRequest } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentSetting.tokenAddress as Address,\n abi: isMainnetUSDT(chain.id, selectedPaymentSetting.tokenAddress)\n ? mainnetUSDTAbi\n : erc20Abi,\n functionName: \"approve\",\n args: [selectedPaymentRouter.address as Address, maxUint256],\n });\n const approveHash = await walletClient.writeContract(approveRequest);\n await publicClient.waitForTransactionReceipt({ hash: approveHash });\n // re-check allowance after approval\n await checkAllowance();\n setStatus(\"idle\");\n } catch (err) {\n console.error(\"Failed to approve token:\", err);\n toast.error(\n `Approval failed. Please ensure your wallet has enough ${selectedPaymentSetting.tokenSymbol} to complete payment and ${chains.find((c) => c.id === chain.id)?.nativeCurrency?.symbol ?? \"native coin\"} to cover gas fees.`,\n { containerId: \"payment-component\" },\n );\n setStatus(\"idle\");\n }\n };\n\n const handlePay = async () => {\n if (!isConnected) return;\n if (!address) return;\n if (!chain) return;\n if (!publicClient) return;\n if (!walletClient) return;\n if (!selectedPaymentRouter) return;\n if (!selectedPaymentSetting) return;\n if (chain.id !== parseInt(selectedPaymentSetting.chainId)) {\n setError(`Please switch to Chain ID ${selectedPaymentRouter.chainId}`);\n return;\n }\n\n // setError(null);\n try {\n setStatus(\"creating\");\n // Create payment via merchant's API\n const { id: createdPaymentId } = await onCreatePayment({\n usdAmount: usdAmount.toString(),\n chainId: selectedPaymentSetting.chainId,\n tokenAddress: selectedPaymentSetting.tokenAddress,\n sender: address,\n });\n\n setStatus(\"signing\");\n // Get signature from merchant's API\n const { paymentData, signature } = await onGetSignature(createdPaymentId);\n\n setStatus(\"sending\");\n // Send transaction to PaymentRouter contract\n let hash: Hex;\n if (isNativeCoin(paymentData.erc20)) {\n const { request } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentRouter.address as Address,\n abi: PaymentRouterAbi,\n functionName: \"payETH\",\n args: [\n BigInt(paymentData.id),\n paymentData.receiver as Address,\n BigInt(paymentData.feeRate),\n BigInt(paymentData.expirationTimestamp),\n signature as Hex,\n ],\n value: BigInt(paymentData.amount),\n });\n hash = await walletClient.writeContract(request);\n } else {\n const { request } = await publicClient.simulateContract({\n account: address,\n address: selectedPaymentRouter.address as Address,\n abi: PaymentRouterAbi,\n functionName: \"payERC20\",\n args: [\n BigInt(paymentData.id),\n paymentData.erc20 as Address,\n paymentData.receiver as Address,\n BigInt(paymentData.amount),\n BigInt(paymentData.feeRate),\n BigInt(paymentData.expirationTimestamp),\n signature as Hex,\n ],\n });\n hash = await walletClient.writeContract(request);\n }\n console.debug(\"Payment transaction sent:\", hash);\n\n setStatus(\"confirming\");\n // Confirm payment transaction\n const receipt = await publicClient.waitForTransactionReceipt({ hash });\n if (!receipt) {\n throw new Error(\"Transaction receipt not found\");\n }\n console.debug(\"Payment transaction confirmed:\", receipt);\n\n setStatus(\"success\");\n // Call onSuccess callback\n onSuccess(createdPaymentId);\n } catch (err) {\n console.error(\"Failed to process payment:\", err);\n toast.error(\n `Payment failed. Please ensure your wallet has enough ${selectedPaymentSetting.tokenSymbol} to complete payment and ${chains.find((c) => c.id === chain.id)?.nativeCurrency?.symbol ?? \"native coin\"} to cover gas fees.`,\n { containerId: \"payment-component\" },\n );\n setStatus(\"idle\");\n }\n };\n\n return (\n <div className={styles.overlay}>\n <div\n className={styles.wrapper}\n style={{\n height: isConnected ? \"570px\" : \"575px\",\n }}\n >\n <div className={styles.wallet}>\n <div className={styles.walletInput}>\n <div\n className={styles.walletLink}\n style={{\n cursor: isConnected ? \"pointer\" : \"default\",\n }}\n onClick={() => (isConnected ? disconnect() : undefined)}\n >\n {isConnected ? <UnLinkSVG /> : <LinkSVG />}\n </div>\n <div className={styles.walletAddress}>\n {address\n ? `${address.slice(0, 5)}...${address.slice(-5)}`\n : \"Wallet Not Connected\"}\n </div>\n {isConnected && (\n <div className={styles.switchBtn} onClick={handleSwitch}>\n Switch\n </div>\n )}\n </div>\n <div className={styles.closeBtn} onClick={onCancel}>\n <CloseLargeSVG />\n </div>\n </div>\n\n <div className={styles.paymentWrapper}>\n <h4 className={styles.paymentTitle}>Select Payment Currency</h4>\n <Dropdown\n type=\"token\"\n chains={chains}\n active={selectedPaymentSetting}\n balance={Math.round(Number(balance)).toString()}\n items={Array.from(\n new Map(\n paymentConfig.paymentSettings.map((item) => [\n item.tokenSymbol,\n item,\n ]),\n ).values(),\n )}\n onSelect={(item) => setSelectedPaymentSetting(item)}\n />\n <Dropdown\n type=\"network\"\n chains={chains}\n active={selectedPaymentSetting}\n balance={`${estimatedFee} ${nativeCoinSymbol}`}\n items={availableNetworks}\n onSelect={(item) => setSelectedPaymentSetting(item)}\n />\n <div className={styles.paymentAmountWrapper}>\n <p className={styles.paymentAmount}>Payment amount</p>\n <p className={styles.paymentAmountTotal}>{`${usdAmount} $`}</p>\n </div>\n </div>\n <div className={styles.chevronDownLarge}>\n <ChevronDownLargeSVG />\n </div>\n <div className={styles.summaryWrapper}>\n <div\n className={styles.summaryItemWrapper}\n style={{ marginBottom: \"4px\" }}\n >\n <p className={styles.summaryItemTitle}>Token</p>\n <p className={styles.summaryItemValue}>\n {selectedPaymentSetting?.tokenSymbol}\n </p>\n </div>\n <div\n className={styles.summaryItemWrapper}\n style={{ marginBottom: \"12px\" }}\n >\n <p className={styles.summaryItemTitle}>Network</p>\n <p className={styles.summaryItemValue}>\n {getNetworkName(selectedPaymentSetting?.chainId as string)}\n </p>\n </div>\n <div className={styles.summaryItemWrapper}>\n <p className={styles.summaryItemValue} style={{ fontSize: \"14px\" }}>\n Amount\n </p>\n <p className={styles.summaryTotal}>\n {estimatedTokenAmount} {selectedPaymentSetting?.tokenSymbol}\n </p>\n </div>\n </div>\n\n {/* Payment Execution */}\n {/* {isConnected && selectedPaymentRouter && selectedPaymentSetting && (\n <div className=\"space-y-4\">\n {status !== \"idle\" && (\n <div className=\"bg-blue-900 bg-opacity-30 border border-blue-700 p-3 rounded text-sm text-blue-300\">\n {status === \"switching\" && \"Switching network...\"}\n {status === \"checking_allowance\" && \"Checking allowance...\"}\n {status === \"approving\" && \"Approving token...\"}\n {status === \"creating\" && \"Creating payment...\"}\n {status === \"signing\" && \"Getting signature...\"}\n {status === \"sending\" && \"Sending transaction...\"}\n {status === \"confirming\" && \"Confirming...\"}\n {status === \"success\" && \"✓ Payment successful!\"}\n </div>\n )}\n\n <div className=\"flex gap-3\">\n <button\n onClick={() => {\n setSelectedPaymentRouter(null);\n setSelectedPaymentSetting(null);\n }}\n disabled={status !== \"idle\"}\n className=\"flex-1 bg-gray-600 text-white py-3 rounded hover:bg-gray-700 disabled:opacity-50 transition\"\n >\n Back\n </button>\n {needsApproval ? (\n <button\n onClick={handleApprove}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId)\n }\n className=\"flex-1 bg-orange-600 text-white py-3 rounded hover:bg-orange-700 disabled:opacity-50 font-semibold transition\"\n >\n {status === \"idle\"\n ? `Approve ${selectedPaymentSetting.tokenSymbol}`\n : \"Processing...\"}\n </button>\n ) : (\n <button\n onClick={handlePay}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId) ||\n needsApproval === null\n }\n className=\"flex-1 bg-blue-600 text-white py-3 rounded hover:bg-blue-700 disabled:opacity-50 font-semibold transition\"\n >\n {status === \"idle\"\n ? `Pay ${selectedPaymentSetting.tokenSymbol}`\n : \"Processing...\"}\n </button>\n )}\n </div>\n </div>\n )} */}\n\n {/* Connect To Wallet */}\n {!isConnected && (\n <button\n className={styles.connectWallet}\n onClick={handleConnectWallet}\n disabled={status !== \"idle\"}\n >\n Wallet Connect\n </button>\n )}\n\n {isConnected && selectedPaymentRouter && selectedPaymentSetting && (\n <>\n {chain && chain.id !== parseInt(selectedPaymentRouter.chainId) && (\n <button\n onClick={handleSwitchNetwork}\n disabled={status === \"switching\"}\n className={styles.switchNetworkButton}\n >\n {status === \"switching\" ? \"Switching...\" : \"Switch Network\"}\n </button>\n )}\n\n {/* Payment */}\n {chain && chain.id === parseInt(selectedPaymentRouter.chainId) && (\n <>\n {needsApproval ? (\n <button\n onClick={handleApprove}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId)\n }\n className={styles.payButton}\n style={{\n fontFamily: '\"Inter\", sans-serif',\n fontWeight: \"500\",\n backgroundColor: \"#646464\",\n color: \"#FFFFFF\",\n }}\n >\n {status === \"idle\" ? \"Approve\" : \"Processing...\"}\n </button>\n ) : (\n <button\n onClick={handlePay}\n disabled={\n status !== \"idle\" ||\n !address ||\n !chain ||\n chain.id !== parseInt(selectedPaymentRouter.chainId)\n // || needsApproval === null\n }\n className={styles.payButton}\n style={{\n fontFamily: '\"IBM Plex Mono\", monospace',\n fontWeight: \"600\",\n backgroundColor: \"#FFED2B\",\n color: \"#000000\",\n }}\n >\n {status === \"idle\" ? \"Pay\" : \"Processing...\"}\n </button>\n )}\n </>\n )}\n </>\n )}\n </div>\n </div>\n );\n}\n\nconst useTokenBalance = (\n token: {\n tokenAddress: `0x${string}` | string;\n decimals: number;\n chainId: number;\n },\n evmWallet?: `0x${string}`,\n) => {\n const isErc20 =\n Boolean(token.tokenAddress) && !isNativeCoin(token.tokenAddress);\n\n // Native balance\n const evmNative = useBalance({\n address: evmWallet,\n chainId: token.chainId,\n query: {\n enabled: !isErc20 && Boolean(evmWallet),\n },\n });\n\n // ERC-20 balance\n const evmErc20 = useReadContract({\n address: isErc20 ? (token.tokenAddress as `0x${string}`) : undefined,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: evmWallet ? [evmWallet] : undefined,\n chainId: token.chainId,\n query: {\n enabled: isErc20 && Boolean(evmWallet),\n },\n });\n\n const isLoading = isErc20 ? evmErc20.isLoading : evmNative.isLoading;\n\n const raw = isErc20 ? (evmErc20.data ?? 0n) : (evmNative.data?.value ?? 0n);\n\n return {\n isSupported: Boolean(token),\n isLoading: isLoading,\n balance: formatUnits(raw, token.decimals),\n };\n};\n\nconst Dropdown = ({\n type,\n chains,\n active,\n items,\n balance,\n onSelect,\n}: {\n type: \"token\" | \"network\";\n chains: readonly [Chain, ...Chain[]];\n active: PaymentSetting | null;\n items: Array<PaymentSetting>;\n balance: string;\n onSelect: (item: PaymentSetting) => void;\n}) => {\n const [lists, setLists] = useState<Array<PaymentSetting>>([]);\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n setLists(items);\n const handleClickOutside = (e: any) => {\n if (ref.current && !ref.current.contains(e.target)) {\n setOpen(false);\n setSearch(\"\");\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n setLists(items);\n }, [items]);\n\n useEffect(() => {\n if (search.trim().length === 0) {\n setLists(items);\n }\n }, [search]);\n\n const getNetworkName = (chainId: string) => {\n const chain = chains.find((c) => c.id === Number(chainId));\n\n return chain ? chain.name : chainId;\n };\n\n const handleSearch = () => {\n if (search.trim().length === 0) {\n setLists(items);\n return;\n }\n const q = search.trim().toLowerCase();\n setLists(\n items.filter((item) => item.tokenSymbol.toLowerCase().includes(q)),\n );\n };\n\n const iconSrc =\n type === \"token\"\n ? active?.tokenIcon\n : type === \"network\"\n ? active?.chainIcon\n : null;\n const altText =\n type === \"token\"\n ? active?.tokenName\n : type === \"network\"\n ? getNetworkName(active?.chainId as string)\n : \"\";\n\n return (\n <div ref={ref} className={styles.paymentTokenNetworkWrapper}>\n <div\n className={styles.paymentTokenNetwork}\n style={{ color: open ? \"#FFFFFF\" : \"#8D8D8D\" }}\n onClick={() => setOpen(!open)}\n >\n {active && (\n <div\n className={styles.dropdownItem}\n style={{ height: \"auto\", paddingLeft: 0, paddingRight: 0 }}\n >\n {iconSrc && (\n <div className={styles.icon24}>\n <img src={iconSrc} alt={altText} />\n </div>\n )}\n <div className={styles.dropdownItemMiddle}>\n <div className={styles.dropdownItemText}>\n {type === \"token\"\n ? active?.tokenSymbol\n : getNetworkName(active.chainId).slice(0, 16)}\n </div>\n <div className={styles.dropdownItemBalance}>{balance}</div>\n </div>\n <div\n className={styles.chevronDown}\n style={{ transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\" }}\n >\n <ChevronDownSVG />\n </div>\n </div>\n )}\n </div>\n <div\n className={styles.dropdownWrapper}\n style={{ display: open ? \"flex\" : \"none\" }}\n >\n {type === \"token\" && (\n <div className={styles.dropdownSearch}>\n <input\n type=\"text\"\n name=\"search\"\n placeholder=\"Search Token\"\n value={search}\n className={styles.dropdownInput}\n onChange={(e: any) => setSearch(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleSearch();\n }\n }}\n />\n <div\n className={styles.icon24}\n style={{ cursor: \"pointer\" }}\n onClick={handleSearch}\n >\n <SearchSVG />\n </div>\n </div>\n )}\n <div\n className={styles.dropdownItemWrapper}\n style={{ maxHeight: type === \"token\" ? \"257px\" : \"202px\" }}\n >\n {lists.map((item, index) => {\n const iconSrc =\n type === \"token\"\n ? item.tokenIcon\n : type === \"network\"\n ? item.chainIcon\n : null;\n const altText =\n type === \"token\"\n ? item.tokenName\n : type === \"network\"\n ? getNetworkName(item.chainId)\n : \"\";\n return (\n <div\n key={index}\n className={styles.dropdownItem}\n style={{\n backgroundColor:\n active?.id === item.id ? \"#1D1D1D\" : \"transparent\",\n }}\n onClick={() => {\n onSelect?.(item);\n setOpen(false);\n setSearch(\"\");\n setLists(items);\n }}\n >\n {iconSrc && (\n <div className={styles.icon24}>\n <img src={iconSrc} alt={altText} />\n </div>\n )}\n <div className={styles.dropdownItemText}>\n {type === \"token\"\n ? item.tokenSymbol\n : getNetworkName(item.chainId)}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nconst LinkSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.8284 9.17158L9.17156 14.8284M12.7071 16.9498L11.2929 18.364C9.73078 19.9261 7.19812 19.9261 5.63603 18.364C4.07393 16.8019 4.07393 14.2692 5.63603 12.7071L7.05024 11.2929M16.9497 12.7071L18.3639 11.2929C19.926 9.7308 19.926 7.19814 18.3639 5.63604C16.8019 4.07395 14.2692 4.07395 12.7071 5.63604L11.2929 7.05026\"\n stroke=\"#707070\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst UnLinkSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.8284 9.17158L9.17156 14.8284M12.7071 16.9498L11.2929 18.364C9.73078 19.9261 7.19812 19.9261 5.63603 18.364C4.07393 16.8019 4.07393 14.2692 5.63603 12.7071L7.05024 11.2929M16.9497 12.7071L18.3639 11.2929C19.926 9.7308 19.926 7.19814 18.3639 5.63604C16.8019 4.07395 14.2692 4.07395 12.7071 5.63604L11.2929 7.05026\"\n stroke=\"#FFED2B\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst CloseLargeSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21 21L12 12M12 12L3 3M12 12L21.0001 3M12 12L3 21.0001\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst SearchSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g opacity=\"0.2\">\n <path\n d=\"M15 15L21 21M10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10C17 13.866 13.866 17 10 17Z\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nconst ChevronDownSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.92004 9.75L11.9985 14.511L16.0815 9.75\"\n stroke=\"white\"\n stroke-miterlimit=\"10\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst ChevronDownLargeSVG = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19 9L12 16L5 9\"\n stroke=\"white\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|