@b3dotfun/sdk 0.0.83-test.0 → 0.0.84-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/anyspend/constants/index.d.ts +1 -1
- package/dist/cjs/anyspend/constants/index.js +2 -2
- package/dist/cjs/anyspend/react/components/AnySpend.js +21 -12
- package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.js +1 -1
- package/dist/cjs/anyspend/react/components/AnySpendCustom.js +4 -6
- package/dist/cjs/anyspend/react/components/common/CryptoPaySection.js +2 -4
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +47 -177
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethodDisplay.d.ts +15 -0
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethodDisplay.js +28 -0
- package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +1 -1
- package/dist/cjs/anyspend/react/components/common/OrderDetails.js +5 -4
- package/dist/cjs/anyspend/react/components/common/OrderToken.js +2 -2
- package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +1 -1
- package/dist/cjs/anyspend/react/components/common/OrderTokenAmountFiat.js +1 -1
- package/dist/cjs/anyspend/react/components/common/OrderTokenAmountNew.js +2 -2
- package/dist/cjs/anyspend/react/components/common/PaymentStripeWeb2.js +4 -6
- package/dist/cjs/anyspend/react/components/common/PaymentVendorUI.js +41 -2
- package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +1 -1
- package/dist/cjs/anyspend/react/components/webview/WebviewOnrampPayment.js +2 -3
- package/dist/cjs/anyspend/react/hooks/index.d.ts +1 -0
- package/dist/cjs/anyspend/react/hooks/index.js +1 -0
- package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +0 -3
- package/dist/cjs/anyspend/react/hooks/useConnectedUserProfile.d.ts +2 -1
- package/dist/cjs/anyspend/react/hooks/useConnectedUserProfile.js +5 -8
- package/dist/cjs/anyspend/react/hooks/useConnectedWalletDisplay.d.ts +0 -2
- package/dist/cjs/anyspend/react/hooks/useConnectedWalletDisplay.js +2 -12
- package/dist/cjs/anyspend/react/hooks/useHyperliquidTransfer.d.ts +37 -0
- package/dist/cjs/anyspend/react/hooks/useHyperliquidTransfer.js +133 -0
- package/dist/cjs/anyspend/react/providers/AnyspendProvider.js +1 -13
- package/dist/cjs/anyspend/types/chain.d.ts +10 -2
- package/dist/cjs/anyspend/types/chain.js +1 -0
- package/dist/cjs/anyspend/utils/address.d.ts +11 -0
- package/dist/cjs/anyspend/utils/address.js +15 -0
- package/dist/cjs/anyspend/utils/chain.d.ts +58 -1
- package/dist/cjs/anyspend/utils/chain.js +94 -4
- package/dist/cjs/anyspend/utils/token.d.ts +4 -0
- package/dist/cjs/anyspend/utils/token.js +35 -6
- package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +1 -1
- package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +3 -4
- package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +12 -57
- package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStep.js +1 -1
- package/dist/cjs/global-account/react/hooks/index.d.ts +0 -2
- package/dist/cjs/global-account/react/hooks/index.js +1 -5
- package/dist/cjs/global-account/react/hooks/useAccountWallet.js +11 -10
- package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/cjs/global-account/react/hooks/useAuthentication.js +63 -72
- package/dist/cjs/global-account/react/hooks/useTWAuth.d.ts +0 -3
- package/dist/cjs/global-account/react/hooks/useTWAuth.js +0 -8
- package/dist/cjs/global-account/react/hooks/useTurnkeyAuth.js +24 -54
- package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +1 -1
- package/dist/cjs/shared/utils/payment.utils.d.ts +1 -0
- package/dist/cjs/shared/utils/payment.utils.js +9 -0
- package/dist/esm/anyspend/constants/index.d.ts +1 -1
- package/dist/esm/anyspend/constants/index.js +1 -1
- package/dist/esm/anyspend/react/components/AnySpend.js +22 -13
- package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.js +1 -1
- package/dist/esm/anyspend/react/components/AnySpendCustom.js +5 -7
- package/dist/esm/anyspend/react/components/common/CryptoPaySection.js +4 -6
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +45 -175
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethodDisplay.d.ts +15 -0
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethodDisplay.js +25 -0
- package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
- package/dist/esm/anyspend/react/components/common/OrderDetails.js +6 -5
- package/dist/esm/anyspend/react/components/common/OrderToken.js +3 -3
- package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +2 -2
- package/dist/esm/anyspend/react/components/common/OrderTokenAmountFiat.js +2 -2
- package/dist/esm/anyspend/react/components/common/OrderTokenAmountNew.js +3 -3
- package/dist/esm/anyspend/react/components/common/PaymentStripeWeb2.js +2 -4
- package/dist/esm/anyspend/react/components/common/PaymentVendorUI.js +9 -3
- package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
- package/dist/esm/anyspend/react/components/webview/WebviewOnrampPayment.js +3 -4
- package/dist/esm/anyspend/react/hooks/index.d.ts +1 -0
- package/dist/esm/anyspend/react/hooks/index.js +1 -0
- package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +0 -3
- package/dist/esm/anyspend/react/hooks/useConnectedUserProfile.d.ts +2 -1
- package/dist/esm/anyspend/react/hooks/useConnectedUserProfile.js +6 -9
- package/dist/esm/anyspend/react/hooks/useConnectedWalletDisplay.d.ts +0 -2
- package/dist/esm/anyspend/react/hooks/useConnectedWalletDisplay.js +2 -12
- package/dist/esm/anyspend/react/hooks/useHyperliquidTransfer.d.ts +37 -0
- package/dist/esm/anyspend/react/hooks/useHyperliquidTransfer.js +127 -0
- package/dist/esm/anyspend/react/providers/AnyspendProvider.js +1 -13
- package/dist/esm/anyspend/types/chain.d.ts +10 -2
- package/dist/esm/anyspend/types/chain.js +1 -0
- package/dist/esm/anyspend/utils/address.d.ts +11 -0
- package/dist/esm/anyspend/utils/address.js +14 -0
- package/dist/esm/anyspend/utils/chain.d.ts +58 -1
- package/dist/esm/anyspend/utils/chain.js +91 -4
- package/dist/esm/anyspend/utils/token.d.ts +4 -0
- package/dist/esm/anyspend/utils/token.js +32 -6
- package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +2 -2
- package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +4 -5
- package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +12 -57
- package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStep.js +1 -1
- package/dist/esm/global-account/react/hooks/index.d.ts +0 -2
- package/dist/esm/global-account/react/hooks/index.js +0 -2
- package/dist/esm/global-account/react/hooks/useAccountWallet.js +11 -10
- package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/esm/global-account/react/hooks/useAuthentication.js +63 -72
- package/dist/esm/global-account/react/hooks/useTWAuth.d.ts +0 -3
- package/dist/esm/global-account/react/hooks/useTWAuth.js +0 -8
- package/dist/esm/global-account/react/hooks/useTurnkeyAuth.js +24 -54
- package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +1 -1
- package/dist/esm/shared/utils/payment.utils.d.ts +1 -0
- package/dist/esm/shared/utils/payment.utils.js +9 -1
- package/dist/styles/index.css +1 -1
- package/dist/types/anyspend/constants/index.d.ts +1 -1
- package/dist/types/anyspend/react/components/common/CryptoPaymentMethodDisplay.d.ts +15 -0
- package/dist/types/anyspend/react/hooks/index.d.ts +1 -0
- package/dist/types/anyspend/react/hooks/useConnectedUserProfile.d.ts +2 -1
- package/dist/types/anyspend/react/hooks/useConnectedWalletDisplay.d.ts +0 -2
- package/dist/types/anyspend/react/hooks/useHyperliquidTransfer.d.ts +37 -0
- package/dist/types/anyspend/types/chain.d.ts +10 -2
- package/dist/types/anyspend/utils/address.d.ts +11 -0
- package/dist/types/anyspend/utils/chain.d.ts +58 -1
- package/dist/types/anyspend/utils/token.d.ts +4 -0
- package/dist/types/global-account/react/hooks/index.d.ts +0 -2
- package/dist/types/global-account/react/hooks/useAuthentication.d.ts +2 -2
- package/dist/types/global-account/react/hooks/useTWAuth.d.ts +0 -3
- package/dist/types/global-account/react/hooks/useUserQuery.d.ts +1 -1
- package/dist/types/shared/utils/payment.utils.d.ts +1 -0
- package/package.json +1 -1
- package/src/anyspend/constants/index.ts +1 -1
- package/src/anyspend/react/components/AnySpend.tsx +31 -13
- package/src/anyspend/react/components/AnySpendCollectorClubPurchase.tsx +1 -1
- package/src/anyspend/react/components/AnySpendCustom.tsx +9 -29
- package/src/anyspend/react/components/common/CryptoPaySection.tsx +7 -30
- package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +22 -253
- package/src/anyspend/react/components/common/CryptoPaymentMethodDisplay.tsx +64 -0
- package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +2 -2
- package/src/anyspend/react/components/common/OrderDetails.tsx +6 -5
- package/src/anyspend/react/components/common/OrderToken.tsx +5 -5
- package/src/anyspend/react/components/common/OrderTokenAmount.tsx +3 -3
- package/src/anyspend/react/components/common/OrderTokenAmountFiat.tsx +3 -3
- package/src/anyspend/react/components/common/OrderTokenAmountNew.tsx +6 -6
- package/src/anyspend/react/components/common/PaymentStripeWeb2.tsx +3 -5
- package/src/anyspend/react/components/common/PaymentVendorUI.tsx +26 -2
- package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +2 -2
- package/src/anyspend/react/components/webview/WebviewOnrampPayment.tsx +3 -5
- package/src/anyspend/react/hooks/index.ts +1 -0
- package/src/anyspend/react/hooks/useAnyspendFlow.ts +0 -4
- package/src/anyspend/react/hooks/useConnectedUserProfile.ts +7 -10
- package/src/anyspend/react/hooks/useConnectedWalletDisplay.ts +2 -15
- package/src/anyspend/react/hooks/useHyperliquidTransfer.ts +152 -0
- package/src/anyspend/react/providers/AnyspendProvider.tsx +7 -22
- package/src/anyspend/types/chain.ts +10 -1
- package/src/anyspend/utils/address.ts +15 -0
- package/src/anyspend/utils/chain.ts +115 -5
- package/src/anyspend/utils/token.ts +36 -7
- package/src/global-account/react/components/B3Provider/B3Provider.tsx +6 -2
- package/src/global-account/react/components/SignInWithB3/SignIn.tsx +4 -6
- package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +22 -77
- package/src/global-account/react/components/SignInWithB3/steps/LoginStep.tsx +1 -1
- package/src/global-account/react/hooks/index.ts +0 -2
- package/src/global-account/react/hooks/useAccountWallet.tsx +12 -11
- package/src/global-account/react/hooks/useAuthentication.ts +85 -88
- package/src/global-account/react/hooks/useTWAuth.tsx +0 -10
- package/src/global-account/react/hooks/useTurnkeyAuth.ts +26 -59
- package/src/shared/utils/payment.utils.ts +10 -1
- package/dist/cjs/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.d.ts +0 -10
- package/dist/cjs/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.js +0 -73
- package/dist/cjs/global-account/react/hooks/useAuth.d.ts +0 -76
- package/dist/cjs/global-account/react/hooks/useAuth.js +0 -338
- package/dist/cjs/global-account/react/hooks/useBestTransactionPath.d.ts +0 -41
- package/dist/cjs/global-account/react/hooks/useBestTransactionPath.js +0 -148
- package/dist/esm/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.d.ts +0 -10
- package/dist/esm/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.js +0 -70
- package/dist/esm/global-account/react/hooks/useAuth.d.ts +0 -76
- package/dist/esm/global-account/react/hooks/useAuth.js +0 -332
- package/dist/esm/global-account/react/hooks/useBestTransactionPath.d.ts +0 -41
- package/dist/esm/global-account/react/hooks/useBestTransactionPath.js +0 -145
- package/dist/types/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.d.ts +0 -10
- package/dist/types/global-account/react/hooks/useAuth.d.ts +0 -76
- package/dist/types/global-account/react/hooks/useBestTransactionPath.d.ts +0 -41
- package/src/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.ts +0 -80
- package/src/global-account/react/hooks/useAuth.ts +0 -380
- package/src/global-account/react/hooks/useBestTransactionPath.tsx +0 -201
|
@@ -4,13 +4,8 @@ import { toast, useAccountWallet, WalletImage } from "@b3dotfun/sdk/global-accou
|
|
|
4
4
|
import { cn } from "@b3dotfun/sdk/shared/utils/cn";
|
|
5
5
|
import { shortenAddress } from "@b3dotfun/sdk/shared/utils/formatAddress";
|
|
6
6
|
import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
|
|
7
|
-
import { WalletCoinbase, WalletMetamask, WalletRainbow, WalletWalletConnect } from "@web3icons/react";
|
|
8
7
|
import { ChevronLeft, ChevronRightCircle, Wallet, X, ZapIcon } from "lucide-react";
|
|
9
|
-
import {
|
|
10
|
-
import { createPortal } from "react-dom";
|
|
11
|
-
import { useSetActiveWallet, useWalletInfo } from "thirdweb/react";
|
|
12
|
-
import { createWallet, WalletId } from "thirdweb/wallets";
|
|
13
|
-
import { useAccount, useConnect, useDisconnect, useWalletClient } from "wagmi";
|
|
8
|
+
import { useConnectModal, useDisconnect, useWalletInfo } from "thirdweb/react";
|
|
14
9
|
import { useConnectedWalletDisplay } from "../../hooks/useConnectedWalletDisplay";
|
|
15
10
|
|
|
16
11
|
export enum CryptoPaymentMethodType {
|
|
@@ -35,128 +30,32 @@ export function CryptoPaymentMethod({
|
|
|
35
30
|
onBack,
|
|
36
31
|
onSelectPaymentMethod,
|
|
37
32
|
}: CryptoPaymentMethodProps) {
|
|
38
|
-
const { connectedEOAWallet
|
|
39
|
-
const { connector, address } = useAccount();
|
|
40
|
-
const { connect, connectors, isPending } = useConnect();
|
|
33
|
+
const { connectedEOAWallet, connectedSmartWallet } = useAccountWallet();
|
|
41
34
|
const { disconnect } = useDisconnect();
|
|
42
|
-
const {
|
|
43
|
-
const [showWalletModal, setShowWalletModal] = useState(false);
|
|
44
|
-
const setActiveWallet = useSetActiveWallet();
|
|
35
|
+
const { connect: openConnectModal } = useConnectModal();
|
|
45
36
|
const { data: eoaWalletInfo } = useWalletInfo(connectedEOAWallet?.id);
|
|
46
37
|
|
|
47
|
-
const isConnected = !!connectedEOAWallet;
|
|
48
38
|
const globalAddress = connectedSmartWallet?.getAccount()?.address;
|
|
49
39
|
|
|
50
40
|
// Use custom hook to determine wallet display logic
|
|
51
|
-
const { shouldShowConnectedEOA
|
|
52
|
-
console.log("shouldShowWagmiWallet :", shouldShowWagmiWallet);
|
|
41
|
+
const { shouldShowConnectedEOA } = useConnectedWalletDisplay(selectedPaymentMethod);
|
|
53
42
|
|
|
54
|
-
//
|
|
55
|
-
const
|
|
56
|
-
const walletMap: Record<string, WalletId> = {
|
|
57
|
-
MetaMask: "io.metamask",
|
|
58
|
-
"Coinbase Wallet": "com.coinbase.wallet",
|
|
59
|
-
Rainbow: "me.rainbow",
|
|
60
|
-
WalletConnect: "walletConnect",
|
|
61
|
-
Phantom: "app.phantom",
|
|
62
|
-
};
|
|
63
|
-
return walletMap[connectorName] || null;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
// Create thirdweb wallet from wagmi connector
|
|
67
|
-
const createThirdwebWalletFromConnector = async (connectorName: string) => {
|
|
68
|
-
const walletId = getThirdwebWalletId(connectorName);
|
|
69
|
-
if (!walletId) {
|
|
70
|
-
console.warn(`No thirdweb wallet ID found for connector: ${connectorName}`);
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
try {
|
|
75
|
-
const thirdwebWallet = createWallet(walletId);
|
|
76
|
-
// Connect the wallet to sync with the existing wagmi connection
|
|
77
|
-
await thirdwebWallet.connect({ client });
|
|
78
|
-
return thirdwebWallet;
|
|
79
|
-
} catch (error) {
|
|
80
|
-
console.error(`Failed to create thirdweb wallet for ${connectorName}:`, error);
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
// Define available wallet connectors
|
|
86
|
-
const availableConnectors = connectors.filter(connector =>
|
|
87
|
-
["MetaMask", "WalletConnect", "Coinbase Wallet", "Rainbow", "Phantom"].includes(connector.name),
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
// Define wallet options with icons and info
|
|
91
|
-
const walletOptions = [
|
|
92
|
-
{
|
|
93
|
-
id: "metamask",
|
|
94
|
-
name: "MetaMask",
|
|
95
|
-
icon: <WalletMetamask size={48} />,
|
|
96
|
-
description: "Connect using MetaMask browser extension",
|
|
97
|
-
connector: availableConnectors.find(c => c.name === "MetaMask"),
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
id: "coinbase",
|
|
101
|
-
name: "Coinbase Wallet",
|
|
102
|
-
icon: <WalletCoinbase size={48} />,
|
|
103
|
-
description: "Connect using Coinbase Wallet",
|
|
104
|
-
connector: availableConnectors.find(c => c.name === "Coinbase Wallet"),
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
id: "rainbow",
|
|
108
|
-
name: "Rainbow",
|
|
109
|
-
icon: <WalletRainbow size={48} />,
|
|
110
|
-
description: "Connect using Rainbow wallet",
|
|
111
|
-
connector: availableConnectors.find(c => c.name === "Rainbow"),
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
id: "walletconnect",
|
|
115
|
-
name: "WalletConnect",
|
|
116
|
-
icon: <WalletWalletConnect size={48} />,
|
|
117
|
-
description: "Connect using WalletConnect protocol",
|
|
118
|
-
connector: availableConnectors.find(c => c.name === "WalletConnect"),
|
|
119
|
-
},
|
|
120
|
-
].filter(wallet => wallet.connector); // Only show wallets that have available connectors
|
|
121
|
-
|
|
122
|
-
// Reset modal state when closing
|
|
123
|
-
const handleCloseModal = () => {
|
|
124
|
-
setShowWalletModal(false);
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
// Function to request wallet permissions for specific wallet
|
|
128
|
-
const requestWalletPermissions = async (walletConnector?: any) => {
|
|
43
|
+
// Handle wallet connection using thirdweb modal
|
|
44
|
+
const handleConnectWallet = async () => {
|
|
129
45
|
try {
|
|
130
|
-
//
|
|
131
|
-
if (
|
|
132
|
-
|
|
133
|
-
// if (isConnected) {
|
|
134
|
-
// disconnect();
|
|
135
|
-
// // Small delay to ensure disconnection
|
|
136
|
-
// await new Promise(resolve => setTimeout(resolve, 100));
|
|
137
|
-
// }
|
|
138
|
-
await connect({ connector: walletConnector });
|
|
139
|
-
setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
140
|
-
onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
141
|
-
toast.success(`Connected to ${walletConnector.name}`);
|
|
142
|
-
return;
|
|
46
|
+
// Disconnect current wallet before connecting a new one
|
|
47
|
+
if (connectedEOAWallet) {
|
|
48
|
+
await disconnect(connectedEOAWallet);
|
|
143
49
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
await walletClient.request({
|
|
148
|
-
method: "wallet_requestPermissions",
|
|
149
|
-
params: [{ eth_accounts: {} }],
|
|
150
|
-
});
|
|
151
|
-
toast.success("Account selection completed");
|
|
50
|
+
const wallet = await openConnectModal({ client, setActive: false });
|
|
51
|
+
if (wallet) {
|
|
52
|
+
// setActiveWallet(wallet);
|
|
152
53
|
setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
153
54
|
onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
154
|
-
|
|
155
|
-
// Fallback: show modal for manual wallet selection
|
|
156
|
-
setShowWalletModal(true);
|
|
55
|
+
toast.success("Wallet connected");
|
|
157
56
|
}
|
|
158
57
|
} catch (error) {
|
|
159
|
-
console.error("Failed to
|
|
58
|
+
console.error("Failed to connect wallet:", error);
|
|
160
59
|
if (error && typeof error === "object" && "message" in error) {
|
|
161
60
|
const errorMessage = (error as any).message.toLowerCase();
|
|
162
61
|
if (
|
|
@@ -164,12 +63,10 @@ export function CryptoPaymentMethod({
|
|
|
164
63
|
errorMessage.includes("denied") ||
|
|
165
64
|
errorMessage.includes("cancelled")
|
|
166
65
|
) {
|
|
167
|
-
|
|
66
|
+
// User cancelled - no toast needed
|
|
168
67
|
} else {
|
|
169
|
-
toast.error("Failed to
|
|
68
|
+
toast.error("Failed to connect wallet");
|
|
170
69
|
}
|
|
171
|
-
} else {
|
|
172
|
-
toast.error("Failed to open account selection");
|
|
173
70
|
}
|
|
174
71
|
}
|
|
175
72
|
};
|
|
@@ -236,7 +133,7 @@ export function CryptoPaymentMethod({
|
|
|
236
133
|
{/* Payment Methods */}
|
|
237
134
|
<div className="crypto-payment-methods flex flex-col gap-4">
|
|
238
135
|
{/* Installed Wallets Section */}
|
|
239
|
-
{(shouldShowConnectedEOA ||
|
|
136
|
+
{(shouldShowConnectedEOA || globalAddress) && (
|
|
240
137
|
<div className="installed-wallets">
|
|
241
138
|
<h3 className="text-as-primary/80 mb-3 text-sm font-medium">Connected wallets</h3>
|
|
242
139
|
<div className="space-y-2">
|
|
@@ -247,10 +144,7 @@ export function CryptoPaymentMethod({
|
|
|
247
144
|
onClick={() => {
|
|
248
145
|
setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
249
146
|
onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
250
|
-
|
|
251
|
-
setActiveWallet(connectedEOAWallet);
|
|
252
|
-
}
|
|
253
|
-
toast.success(`Selected ${eoaWalletInfo?.name || connector?.name || "wallet"}`);
|
|
147
|
+
toast.success(`Selected ${eoaWalletInfo?.name || "wallet"}`);
|
|
254
148
|
}}
|
|
255
149
|
className={cn(
|
|
256
150
|
"crypto-payment-method-connect-wallet eoa-wallet w-full rounded-xl border p-4 text-left transition-all hover:shadow-md",
|
|
@@ -266,7 +160,7 @@ export function CryptoPaymentMethod({
|
|
|
266
160
|
</div>
|
|
267
161
|
<div className="flex flex-col">
|
|
268
162
|
<span className="text-as-primary font-semibold">
|
|
269
|
-
{eoaWalletInfo?.name ||
|
|
163
|
+
{eoaWalletInfo?.name || "Connected Wallet"}
|
|
270
164
|
</span>
|
|
271
165
|
<span className="text-as-primary/60 text-sm">
|
|
272
166
|
{shortenAddress(connectedEOAWallet?.getAccount()?.address || "")}
|
|
@@ -280,62 +174,9 @@ export function CryptoPaymentMethod({
|
|
|
280
174
|
<button
|
|
281
175
|
onClick={e => {
|
|
282
176
|
e.stopPropagation();
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
if (selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
|
|
286
|
-
setSelectedPaymentMethod(CryptoPaymentMethodType.NONE);
|
|
177
|
+
if (connectedEOAWallet) {
|
|
178
|
+
disconnect(connectedEOAWallet);
|
|
287
179
|
}
|
|
288
|
-
}}
|
|
289
|
-
className="text-as-primary/60 hover:text-as-primary/80 rounded-lg p-1.5 transition-colors"
|
|
290
|
-
>
|
|
291
|
-
<X className="h-4 w-4" />
|
|
292
|
-
</button>
|
|
293
|
-
</div>
|
|
294
|
-
</div>
|
|
295
|
-
</button>
|
|
296
|
-
)}
|
|
297
|
-
|
|
298
|
-
{shouldShowWagmiWallet && (
|
|
299
|
-
<button
|
|
300
|
-
onClick={async () => {
|
|
301
|
-
setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
302
|
-
onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
|
|
303
|
-
|
|
304
|
-
// Create thirdweb wallet from wagmi connector
|
|
305
|
-
if (connector?.name) {
|
|
306
|
-
const thirdwebWallet = await createThirdwebWalletFromConnector(connector.name);
|
|
307
|
-
if (thirdwebWallet) {
|
|
308
|
-
setActiveWallet(thirdwebWallet);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
toast.success(`Selected ${connector?.name || "wallet"}`);
|
|
313
|
-
}}
|
|
314
|
-
className={cn(
|
|
315
|
-
"crypto-payment-method-connect-wallet wagmi-wallet w-full rounded-xl border p-4 text-left transition-all hover:shadow-md",
|
|
316
|
-
selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET
|
|
317
|
-
? "connected-wallet border-as-brand bg-as-brand/5"
|
|
318
|
-
: "border-as-border-secondary bg-as-surface-primary hover:border-as-secondary/80",
|
|
319
|
-
)}
|
|
320
|
-
>
|
|
321
|
-
<div className="flex items-center justify-between">
|
|
322
|
-
<div className="flex items-center gap-3">
|
|
323
|
-
<div className="wallet-icon flex h-10 w-10 items-center justify-center rounded-full bg-blue-100">
|
|
324
|
-
<Wallet className="h-5 w-5 text-blue-600" />
|
|
325
|
-
</div>
|
|
326
|
-
<div className="flex flex-col">
|
|
327
|
-
<span className="text-as-primary font-semibold">{connector?.name || "Connected Wallet"}</span>
|
|
328
|
-
<span className="text-as-primary/60 text-sm">{shortenAddress(address || "")}</span>
|
|
329
|
-
</div>
|
|
330
|
-
</div>
|
|
331
|
-
<div className="flex items-center gap-2">
|
|
332
|
-
{selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET && (
|
|
333
|
-
<div className="h-2 w-2 rounded-full bg-green-500"></div>
|
|
334
|
-
)}
|
|
335
|
-
<button
|
|
336
|
-
onClick={e => {
|
|
337
|
-
e.stopPropagation();
|
|
338
|
-
disconnect();
|
|
339
180
|
toast.success("Wallet disconnected");
|
|
340
181
|
if (selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
|
|
341
182
|
setSelectedPaymentMethod(CryptoPaymentMethodType.NONE);
|
|
@@ -398,10 +239,7 @@ export function CryptoPaymentMethod({
|
|
|
398
239
|
<div className="space-y-3">
|
|
399
240
|
{/* Connect Wallet Section */}
|
|
400
241
|
<button
|
|
401
|
-
onClick={
|
|
402
|
-
// Always show wallet selection modal first
|
|
403
|
-
setShowWalletModal(true);
|
|
404
|
-
}}
|
|
242
|
+
onClick={handleConnectWallet}
|
|
405
243
|
className="crypto-payment-method-connect-wallet bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md"
|
|
406
244
|
>
|
|
407
245
|
<div className="flex items-center gap-3">
|
|
@@ -438,75 +276,6 @@ export function CryptoPaymentMethod({
|
|
|
438
276
|
</div>
|
|
439
277
|
</div>
|
|
440
278
|
</div>
|
|
441
|
-
|
|
442
|
-
{/* Wallet Connection Modal */}
|
|
443
|
-
{showWalletModal &&
|
|
444
|
-
createPortal(
|
|
445
|
-
<div className="wallet-connection-modal pointer-events-auto fixed inset-0 z-[9999] flex items-center justify-center bg-black/50">
|
|
446
|
-
<div className="max-h-[80vh] w-[400px] max-w-[90vw] overflow-auto rounded-xl bg-white p-6 dark:bg-gray-900">
|
|
447
|
-
<div className="mb-4 flex items-center justify-between">
|
|
448
|
-
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
|
|
449
|
-
{isConnected ? "Switch wallet or account" : "Choose wallet to connect"}
|
|
450
|
-
</h3>
|
|
451
|
-
<button
|
|
452
|
-
onClick={handleCloseModal}
|
|
453
|
-
className="text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"
|
|
454
|
-
>
|
|
455
|
-
<X className="h-5 w-5" />
|
|
456
|
-
</button>
|
|
457
|
-
</div>
|
|
458
|
-
|
|
459
|
-
<div className="space-y-4">
|
|
460
|
-
{/* Custom wallet options */}
|
|
461
|
-
<div className="space-y-3">
|
|
462
|
-
{walletOptions.map(walletOption => {
|
|
463
|
-
const isCurrentWallet = isConnected && connector?.name === walletOption.connector?.name;
|
|
464
|
-
|
|
465
|
-
return (
|
|
466
|
-
<button
|
|
467
|
-
key={walletOption.id}
|
|
468
|
-
onClick={async () => {
|
|
469
|
-
handleCloseModal();
|
|
470
|
-
await requestWalletPermissions(walletOption.connector);
|
|
471
|
-
}}
|
|
472
|
-
disabled={isPending}
|
|
473
|
-
className={`wallet-option w-full rounded-xl border p-4 text-left transition-all hover:shadow-md disabled:opacity-50 ${
|
|
474
|
-
isCurrentWallet
|
|
475
|
-
? "wallet-option--active border-blue-500 bg-blue-50 dark:bg-blue-900/20"
|
|
476
|
-
: "border-gray-200 bg-white hover:border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:hover:border-gray-500"
|
|
477
|
-
}`}
|
|
478
|
-
>
|
|
479
|
-
<div className="flex items-center justify-between">
|
|
480
|
-
<div className="flex items-center gap-3">
|
|
481
|
-
{walletOption.icon}
|
|
482
|
-
|
|
483
|
-
<div>
|
|
484
|
-
<div className="wallet-option-name flex items-center gap-2">
|
|
485
|
-
<div className="text-sm font-semibold text-gray-900 dark:text-white">
|
|
486
|
-
{walletOption.name}
|
|
487
|
-
</div>
|
|
488
|
-
{isCurrentWallet && (
|
|
489
|
-
<span className="rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-700 dark:bg-blue-800 dark:text-blue-200">
|
|
490
|
-
Connected
|
|
491
|
-
</span>
|
|
492
|
-
)}
|
|
493
|
-
</div>
|
|
494
|
-
<div className="text-xs text-gray-500 dark:text-gray-400">
|
|
495
|
-
{isCurrentWallet ? "Switch account or reconnect" : walletOption.description}
|
|
496
|
-
</div>
|
|
497
|
-
</div>
|
|
498
|
-
</div>
|
|
499
|
-
<ChevronRightCircle className="h-5 w-5 text-gray-400" />
|
|
500
|
-
</div>
|
|
501
|
-
</button>
|
|
502
|
-
);
|
|
503
|
-
})}
|
|
504
|
-
</div>
|
|
505
|
-
</div>
|
|
506
|
-
</div>
|
|
507
|
-
</div>,
|
|
508
|
-
typeof window !== "undefined" ? document.getElementById("b3-root") || document.body : document.body,
|
|
509
|
-
)}
|
|
510
279
|
</div>
|
|
511
280
|
);
|
|
512
281
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { formatUsername } from "@b3dotfun/sdk/shared/utils";
|
|
2
|
+
import { shortenAddress } from "@b3dotfun/sdk/shared/utils/formatAddress";
|
|
3
|
+
import { ChevronRight } from "lucide-react";
|
|
4
|
+
import { CryptoPaymentMethodType } from "./CryptoPaymentMethod";
|
|
5
|
+
|
|
6
|
+
interface CryptoPaymentMethodDisplayProps {
|
|
7
|
+
paymentMethod: CryptoPaymentMethodType;
|
|
8
|
+
connectedAddress?: string | null;
|
|
9
|
+
connectedName?: string | null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Displays the selected crypto payment method with appropriate label
|
|
14
|
+
* - CONNECT_WALLET: Shows wallet address/name or "Connect wallet"
|
|
15
|
+
* - GLOBAL_WALLET: Shows "Global Account"
|
|
16
|
+
* - TRANSFER_CRYPTO: Shows "Transfer crypto"
|
|
17
|
+
* - NONE: Shows "Select payment method"
|
|
18
|
+
*/
|
|
19
|
+
export function CryptoPaymentMethodDisplay({
|
|
20
|
+
paymentMethod,
|
|
21
|
+
connectedAddress,
|
|
22
|
+
connectedName,
|
|
23
|
+
}: CryptoPaymentMethodDisplayProps) {
|
|
24
|
+
if (paymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
|
|
25
|
+
return (
|
|
26
|
+
<>
|
|
27
|
+
{connectedAddress ? (
|
|
28
|
+
<span className="text-as-tertiarry whitespace-nowrap">
|
|
29
|
+
{connectedName ? formatUsername(connectedName) : shortenAddress(connectedAddress)}
|
|
30
|
+
</span>
|
|
31
|
+
) : (
|
|
32
|
+
<span className="whitespace-nowrap">Connect wallet</span>
|
|
33
|
+
)}
|
|
34
|
+
<ChevronRight className="h-4 w-4 shrink-0" />
|
|
35
|
+
</>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (paymentMethod === CryptoPaymentMethodType.GLOBAL_WALLET) {
|
|
40
|
+
return (
|
|
41
|
+
<>
|
|
42
|
+
<span className="whitespace-nowrap">Global Account</span>
|
|
43
|
+
<ChevronRight className="h-4 w-4 shrink-0" />
|
|
44
|
+
</>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (paymentMethod === CryptoPaymentMethodType.TRANSFER_CRYPTO) {
|
|
49
|
+
return (
|
|
50
|
+
<>
|
|
51
|
+
<span className="whitespace-nowrap">Transfer crypto</span>
|
|
52
|
+
<ChevronRight className="h-4 w-4 shrink-0" />
|
|
53
|
+
</>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// NONE or any other case
|
|
58
|
+
return (
|
|
59
|
+
<>
|
|
60
|
+
<span className="whitespace-nowrap">Select payment method</span>
|
|
61
|
+
<ChevronRight className="h-4 w-4 shrink-0" />
|
|
62
|
+
</>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
ALL_CHAINS,
|
|
5
5
|
getChainName,
|
|
6
6
|
getPaymentUrl,
|
|
7
|
-
RELAY_ETH_ADDRESS,
|
|
8
7
|
RELAY_SOLANA_MAINNET_CHAIN_ID,
|
|
8
|
+
ZERO_ADDRESS,
|
|
9
9
|
} from "@b3dotfun/sdk/anyspend";
|
|
10
10
|
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
11
11
|
import { Badge, CopyToClipboard, ShinyButton, TextLoop } from "@b3dotfun/sdk/global-account/react";
|
|
@@ -121,7 +121,7 @@ export function InsufficientDepositPayment({
|
|
|
121
121
|
value={getPaymentUrl(
|
|
122
122
|
order.globalAddress,
|
|
123
123
|
BigInt(depositDeficit),
|
|
124
|
-
order.srcTokenAddress ===
|
|
124
|
+
order.srcTokenAddress === ZERO_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress,
|
|
125
125
|
order.srcChain,
|
|
126
126
|
srcToken?.decimals,
|
|
127
127
|
)}
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
getPaymentUrl,
|
|
9
9
|
getStatusDisplay,
|
|
10
10
|
isNativeToken,
|
|
11
|
-
RELAY_ETH_ADDRESS,
|
|
12
11
|
RELAY_SOLANA_MAINNET_CHAIN_ID,
|
|
12
|
+
ZERO_ADDRESS,
|
|
13
13
|
} from "@b3dotfun/sdk/anyspend";
|
|
14
14
|
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
15
15
|
import {
|
|
@@ -327,16 +327,17 @@ export const OrderDetails = memo(function OrderDetails({
|
|
|
327
327
|
// Main payment handler that triggers chain switch and payment
|
|
328
328
|
const handlePayment = useCallback(async () => {
|
|
329
329
|
console.log("Initiating payment process. Target chain:", order.srcChain, "Current chain:", walletClient?.chain?.id);
|
|
330
|
+
const amountToSend = depositDeficit > BigInt(0) ? depositDeficit.toString() : order.srcAmount;
|
|
330
331
|
if (order.srcChain === RELAY_SOLANA_MAINNET_CHAIN_ID) {
|
|
331
|
-
//
|
|
332
|
-
const amountToSend = depositDeficit > BigInt(0) ? depositDeficit.toString() : order.srcAmount;
|
|
332
|
+
// Solana payment flow
|
|
333
333
|
await initiatePhantomTransfer({
|
|
334
334
|
amountLamports: amountToSend,
|
|
335
335
|
tokenAddress: order.srcTokenAddress,
|
|
336
336
|
recipientAddress: order.globalAddress,
|
|
337
337
|
});
|
|
338
338
|
} else {
|
|
339
|
-
//
|
|
339
|
+
// EVM payment flow (EOA and AA wallets)
|
|
340
|
+
// Note: Hyperliquid is NOT supported as source chain, only as destination chain
|
|
340
341
|
await handleUnifiedPaymentProcess();
|
|
341
342
|
}
|
|
342
343
|
}, [order, walletClient?.chain?.id, depositDeficit, handleUnifiedPaymentProcess, initiatePhantomTransfer]);
|
|
@@ -1039,7 +1040,7 @@ export const OrderDetails = memo(function OrderDetails({
|
|
|
1039
1040
|
value={getPaymentUrl(
|
|
1040
1041
|
order.globalAddress,
|
|
1041
1042
|
BigInt(order.srcAmount),
|
|
1042
|
-
order.srcTokenAddress ===
|
|
1043
|
+
order.srcTokenAddress === ZERO_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress,
|
|
1043
1044
|
order.srcChain,
|
|
1044
1045
|
srcToken?.decimals,
|
|
1045
1046
|
)}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { ALL_CHAINS,
|
|
3
|
+
import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, ZERO_ADDRESS, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
|
|
4
|
+
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
4
5
|
import { Button, useAccountWallet, useTokenBalancesByChain } from "@b3dotfun/sdk/global-account/react";
|
|
5
6
|
import { cn } from "@b3dotfun/sdk/shared/utils";
|
|
6
7
|
import { formatTokenAmount } from "@b3dotfun/sdk/shared/utils/number";
|
|
@@ -9,7 +10,6 @@ import { TokenSelector } from "@relayprotocol/relay-kit-ui";
|
|
|
9
10
|
import { CheckCircle2, ChevronsUpDown } from "lucide-react";
|
|
10
11
|
import { useMemo } from "react";
|
|
11
12
|
import { ChainTokenIcon } from "./ChainTokenIcon";
|
|
12
|
-
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
13
13
|
|
|
14
14
|
export function OrderToken({
|
|
15
15
|
context,
|
|
@@ -44,7 +44,7 @@ export function OrderToken({
|
|
|
44
44
|
// Get balance for the selected token
|
|
45
45
|
let balance: bigint | null = null;
|
|
46
46
|
if (token && wallet?.address) {
|
|
47
|
-
if (token.address ===
|
|
47
|
+
if (token.address === ZERO_ADDRESS) {
|
|
48
48
|
// Native token
|
|
49
49
|
const nativeToken = nativeTokens?.find(t => t.chainId === chainId);
|
|
50
50
|
balance = nativeToken?.value ?? null;
|
|
@@ -69,12 +69,12 @@ export function OrderToken({
|
|
|
69
69
|
return (
|
|
70
70
|
<TokenSelector
|
|
71
71
|
address={address}
|
|
72
|
-
chainIdsFilter={
|
|
72
|
+
chainIdsFilter={getAvailableChainIds(context)}
|
|
73
73
|
context={context}
|
|
74
74
|
fromChainWalletVMSupported={true}
|
|
75
75
|
isValidAddress={true}
|
|
76
76
|
key={undefined}
|
|
77
|
-
lockedChainIds={
|
|
77
|
+
lockedChainIds={getAvailableChainIds(context)}
|
|
78
78
|
multiWalletSupportEnabled={true}
|
|
79
79
|
onAnalyticEvent={undefined}
|
|
80
80
|
popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
|
|
@@ -5,7 +5,7 @@ import { useEffect, useRef } from "react";
|
|
|
5
5
|
import { NumericFormat } from "react-number-format";
|
|
6
6
|
import { formatUnits } from "viem";
|
|
7
7
|
|
|
8
|
-
import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend";
|
|
8
|
+
import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
|
|
9
9
|
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
10
10
|
import { getNativeRequired } from "@b3dotfun/sdk/anyspend/utils/chain";
|
|
11
11
|
import { isNativeToken } from "@b3dotfun/sdk/anyspend/utils/token";
|
|
@@ -163,12 +163,12 @@ export function OrderTokenAmount({
|
|
|
163
163
|
{!hideTokenSelect && (
|
|
164
164
|
<TokenSelector
|
|
165
165
|
address={address}
|
|
166
|
-
chainIdsFilter={
|
|
166
|
+
chainIdsFilter={getAvailableChainIds(context)}
|
|
167
167
|
context={context}
|
|
168
168
|
fromChainWalletVMSupported={true}
|
|
169
169
|
isValidAddress={true}
|
|
170
170
|
key={`selector-${context}-${token.address}-${chainId}`}
|
|
171
|
-
lockedChainIds={
|
|
171
|
+
lockedChainIds={getAvailableChainIds(context)}
|
|
172
172
|
multiWalletSupportEnabled={true}
|
|
173
173
|
onAnalyticEvent={undefined}
|
|
174
174
|
popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
|
|
@@ -4,7 +4,7 @@ import { ChevronsUpDown } from "lucide-react";
|
|
|
4
4
|
import { useEffect, useRef } from "react";
|
|
5
5
|
import { NumericFormat } from "react-number-format";
|
|
6
6
|
|
|
7
|
-
import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend";
|
|
7
|
+
import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
|
|
8
8
|
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
9
9
|
import { cn } from "@b3dotfun/sdk/shared/utils";
|
|
10
10
|
import { TokenSelector } from "@relayprotocol/relay-kit-ui";
|
|
@@ -79,12 +79,12 @@ export function OrderTokenAmountFiat({
|
|
|
79
79
|
return (
|
|
80
80
|
<TokenSelector
|
|
81
81
|
address={address}
|
|
82
|
-
chainIdsFilter={
|
|
82
|
+
chainIdsFilter={getAvailableChainIds(context)}
|
|
83
83
|
context={context}
|
|
84
84
|
fromChainWalletVMSupported={true}
|
|
85
85
|
isValidAddress={true}
|
|
86
86
|
key={`selector-${context}-${token.address}-${chainId}`}
|
|
87
|
-
lockedChainIds={
|
|
87
|
+
lockedChainIds={getAvailableChainIds(context)}
|
|
88
88
|
multiWalletSupportEnabled={true}
|
|
89
89
|
onAnalyticEvent={undefined}
|
|
90
90
|
popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
|
|
@@ -4,12 +4,12 @@ import { ChevronsUpDown } from "lucide-react";
|
|
|
4
4
|
import { useEffect, useRef } from "react";
|
|
5
5
|
import { NumericFormat } from "react-number-format";
|
|
6
6
|
|
|
7
|
-
import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend";
|
|
7
|
+
import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
|
|
8
|
+
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
8
9
|
import { Button } from "@b3dotfun/sdk/global-account/react";
|
|
9
10
|
import { cn } from "@b3dotfun/sdk/shared/utils";
|
|
10
11
|
import { TokenSelector } from "@relayprotocol/relay-kit-ui";
|
|
11
12
|
import { ChainTokenIcon } from "./ChainTokenIcon";
|
|
12
|
-
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
13
13
|
|
|
14
14
|
export function OrderTokenAmountFiat({
|
|
15
15
|
disabled,
|
|
@@ -118,12 +118,12 @@ export function OrderTokenAmountFiat({
|
|
|
118
118
|
{!hideTokenSelect && (
|
|
119
119
|
<TokenSelector
|
|
120
120
|
address={address}
|
|
121
|
-
chainIdsFilter={
|
|
121
|
+
chainIdsFilter={getAvailableChainIds(context)}
|
|
122
122
|
context={context}
|
|
123
123
|
fromChainWalletVMSupported={true}
|
|
124
124
|
isValidAddress={true}
|
|
125
125
|
key={`selector-${context}-${token.address}-${chainId}`}
|
|
126
|
-
lockedChainIds={
|
|
126
|
+
lockedChainIds={getAvailableChainIds(context)}
|
|
127
127
|
multiWalletSupportEnabled={true}
|
|
128
128
|
onAnalyticEvent={undefined}
|
|
129
129
|
popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
|
|
@@ -173,12 +173,12 @@ export function OrderTokenAmountFiat({
|
|
|
173
173
|
{!hideTokenSelect && (
|
|
174
174
|
<TokenSelector
|
|
175
175
|
address={address}
|
|
176
|
-
chainIdsFilter={
|
|
176
|
+
chainIdsFilter={getAvailableChainIds(context)}
|
|
177
177
|
context={context}
|
|
178
178
|
fromChainWalletVMSupported={true}
|
|
179
179
|
isValidAddress={true}
|
|
180
180
|
key={`selector-${context}-${token.address}-${chainId}`}
|
|
181
|
-
lockedChainIds={
|
|
181
|
+
lockedChainIds={getAvailableChainIds(context)}
|
|
182
182
|
multiWalletSupportEnabled={true}
|
|
183
183
|
onAnalyticEvent={undefined}
|
|
184
184
|
popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getStripePromise } from "@b3dotfun/sdk/shared/utils/payment.utils";
|
|
2
2
|
import { OrderDetailsCollapsible, useStripeClientSecret } from "@b3dotfun/sdk/anyspend/react";
|
|
3
3
|
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
4
4
|
import { ShinyButton, useB3, useModalStore, useProfile } from "@b3dotfun/sdk/global-account/react";
|
|
5
5
|
import { formatTokenAmount } from "@b3dotfun/sdk/shared/utils/number";
|
|
6
6
|
import { formatStripeAmount } from "@b3dotfun/sdk/shared/utils/payment.utils";
|
|
7
7
|
import { AddressElement, Elements, PaymentElement, useElements, useStripe } from "@stripe/react-stripe-js";
|
|
8
|
-
import {
|
|
8
|
+
import { PaymentIntentResult, StripePaymentElementOptions } from "@stripe/stripe-js";
|
|
9
9
|
import { X } from "lucide-react";
|
|
10
10
|
import { useEffect, useState } from "react";
|
|
11
11
|
import { AnySpendFingerprintWrapper, getFingerprintConfig } from "../AnySpendFingerprintWrapper";
|
|
12
12
|
import HowItWorks from "./HowItWorks";
|
|
13
13
|
import PaymentMethodIcons from "./PaymentMethodIcons";
|
|
14
14
|
|
|
15
|
-
const stripePromise = loadStripe(STRIPE_CONFIG.publishableKey);
|
|
16
|
-
|
|
17
15
|
interface PaymentStripeWeb2Props {
|
|
18
16
|
order: components["schemas"]["Order"];
|
|
19
17
|
stripePaymentIntentId: string;
|
|
@@ -38,7 +36,7 @@ export default function PaymentStripeWeb2({ order, stripePaymentIntentId, onPaym
|
|
|
38
36
|
return (
|
|
39
37
|
<AnySpendFingerprintWrapper fingerprint={fingerprintConfig}>
|
|
40
38
|
<Elements
|
|
41
|
-
stripe={
|
|
39
|
+
stripe={getStripePromise()}
|
|
42
40
|
options={{
|
|
43
41
|
clientSecret: clientSecret || undefined,
|
|
44
42
|
appearance: { theme: theme === "light" ? "stripe" : "night" },
|