@funkit/connect 6.14.1 → 6.14.3
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/CHANGELOG.md +28 -0
- package/dist/consts/funkit.d.ts +1 -0
- package/dist/hooks/useCheckoutAccountBalanceTransfer.d.ts +1 -1
- package/dist/hooks/useCheckoutDirectExecution.d.ts +2 -1
- package/dist/hooks/useIsTokenWhitelisted.d.ts +30 -0
- package/dist/index.css +2 -2
- package/dist/index.js +551 -470
- package/dist/utils/checkout.d.ts +2 -1
- package/dist/utils/flags/config.d.ts +1 -9
- package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
- package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
- package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
- package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
- package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
- package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
- package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
- package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
- package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
- package/dist/wallets/walletConnectors/index.js +64 -64
- package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
- package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
- package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
- package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
- package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
- package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
- package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
- package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
- package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -519,13 +519,13 @@ import PrivyJS, {
|
|
|
519
519
|
} from "@privy-io/js-sdk-core";
|
|
520
520
|
import React227, {
|
|
521
521
|
createContext as createContext17,
|
|
522
|
-
useCallback as
|
|
522
|
+
useCallback as useCallback49,
|
|
523
523
|
useContext as useContext17,
|
|
524
524
|
useEffect as useEffect54,
|
|
525
|
-
useMemo as
|
|
525
|
+
useMemo as useMemo42,
|
|
526
526
|
useState as useState71
|
|
527
527
|
} from "react";
|
|
528
|
-
import { useConfig as
|
|
528
|
+
import { useConfig as useConfig7, useConnect as useConnect2, useDisconnect as useDisconnect2 } from "wagmi";
|
|
529
529
|
|
|
530
530
|
// src/components/ConnectButton/formatAccountName.ts
|
|
531
531
|
function formatAccountName(accountName, isEmail) {
|
|
@@ -565,7 +565,8 @@ var PLACEHOLDER_FUNKIT_USER_INFO = {
|
|
|
565
565
|
nameTruncated: "Guest",
|
|
566
566
|
type: "unknown",
|
|
567
567
|
typeLabel: "",
|
|
568
|
-
iconSrc: ""
|
|
568
|
+
iconSrc: "",
|
|
569
|
+
isConnected: false
|
|
569
570
|
};
|
|
570
571
|
|
|
571
572
|
// src/utils/funLogger.ts
|
|
@@ -824,6 +825,7 @@ function useFunkitConfig() {
|
|
|
824
825
|
// src/providers/provideFunkitConnectChains.ts
|
|
825
826
|
import {
|
|
826
827
|
BITCOIN_MAINNET_CHAIN_ID,
|
|
828
|
+
ETHEREAL_CHAIN_ID,
|
|
827
829
|
HYPERCORE_CHAIN_ID,
|
|
828
830
|
HYPER_EVM_CHAIN_ID,
|
|
829
831
|
KATANA_CHAIN_ID,
|
|
@@ -870,6 +872,10 @@ var ethereumIcon = {
|
|
|
870
872
|
iconBackground: "#484c50",
|
|
871
873
|
iconUrl: "https://sdk-cdn.fun.xyz/images/ethereum.svg"
|
|
872
874
|
};
|
|
875
|
+
var etherealIcon = {
|
|
876
|
+
iconBackground: "#000000",
|
|
877
|
+
iconUrl: "https://sdk-cdn.fun.xyz/images/ethereal.svg"
|
|
878
|
+
};
|
|
873
879
|
var hardhatIcon = {
|
|
874
880
|
iconBackground: "#f9f7ec",
|
|
875
881
|
iconUrl: "https://sdk-cdn.fun.xyz/images/hardhat.svg"
|
|
@@ -954,6 +960,7 @@ var chainMetadataByName = {
|
|
|
954
960
|
bscTestnet: { chainId: 97, name: "BSC Testnet", ...bscIcon },
|
|
955
961
|
cronos: { chainId: 25, name: "Cronos", ...cronosIcon },
|
|
956
962
|
cronosTestnet: { chainId: 338, name: "Cronos Testnet", ...cronosIcon },
|
|
963
|
+
ethereal: { chainId: ETHEREAL_CHAIN_ID, name: "Ethereal", ...etherealIcon },
|
|
957
964
|
goerli: { chainId: 5, name: "Goerli", ...ethereumIcon },
|
|
958
965
|
hardhat: { chainId: 31337, name: "Hardhat", ...hardhatIcon },
|
|
959
966
|
holesky: { chainId: 17e3, name: "Holesky", ...ethereumIcon },
|
|
@@ -1080,13 +1087,13 @@ var useInitialChainId = () => useContext4(FunkitConnectChainContext).initialChai
|
|
|
1080
1087
|
// src/providers/ModalContext.tsx
|
|
1081
1088
|
import React226, {
|
|
1082
1089
|
createContext as createContext16,
|
|
1083
|
-
useCallback as
|
|
1090
|
+
useCallback as useCallback48,
|
|
1084
1091
|
useContext as useContext16,
|
|
1085
1092
|
useEffect as useEffect53,
|
|
1086
|
-
useMemo as
|
|
1093
|
+
useMemo as useMemo41,
|
|
1087
1094
|
useState as useState70
|
|
1088
1095
|
} from "react";
|
|
1089
|
-
import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as
|
|
1096
|
+
import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig6 } from "wagmi";
|
|
1090
1097
|
|
|
1091
1098
|
// src/components/Dialog/Dialog.css.ts
|
|
1092
1099
|
var DialogAnimationTimeIn = 0.25;
|
|
@@ -1172,7 +1179,7 @@ import {
|
|
|
1172
1179
|
import { isNotNullish as isNotNullish3 } from "@funkit/utils";
|
|
1173
1180
|
import React14, {
|
|
1174
1181
|
createContext as createContext10,
|
|
1175
|
-
useCallback as
|
|
1182
|
+
useCallback as useCallback9,
|
|
1176
1183
|
useContext as useContext10,
|
|
1177
1184
|
useEffect as useEffect8,
|
|
1178
1185
|
useRef as useRef2,
|
|
@@ -1229,7 +1236,7 @@ import {
|
|
|
1229
1236
|
} from "@funkit/core";
|
|
1230
1237
|
import {
|
|
1231
1238
|
formatCryptoAndStringify,
|
|
1232
|
-
isTokenAddressEquivalent as
|
|
1239
|
+
isTokenAddressEquivalent as isTokenAddressEquivalent4,
|
|
1233
1240
|
round as round2,
|
|
1234
1241
|
roundUpToXDecimalPlaces
|
|
1235
1242
|
} from "@funkit/utils";
|
|
@@ -1683,7 +1690,8 @@ function GeneralWalletProvider({ children }) {
|
|
|
1683
1690
|
nameTruncated: ensName ? formatENS(ensName) : formatAddress2(address),
|
|
1684
1691
|
type: "eoa",
|
|
1685
1692
|
typeLabel: connector?.name || "",
|
|
1686
|
-
iconSrc: ensAvatar || ""
|
|
1693
|
+
iconSrc: ensAvatar || "",
|
|
1694
|
+
isConnected: true
|
|
1687
1695
|
};
|
|
1688
1696
|
}
|
|
1689
1697
|
return PLACEHOLDER_FUNKIT_USER_INFO;
|
|
@@ -2112,10 +2120,10 @@ import {
|
|
|
2112
2120
|
initializeCheckout as postApiInitializeCheckout
|
|
2113
2121
|
} from "@funkit/api-base";
|
|
2114
2122
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO3 } from "@funkit/chains";
|
|
2115
|
-
import { FlagKey as
|
|
2123
|
+
import { FlagKey as FlagKey6, isNotNullish as isNotNullish2 } from "@funkit/utils";
|
|
2116
2124
|
import React13, {
|
|
2117
2125
|
createContext as createContext9,
|
|
2118
|
-
useCallback as
|
|
2126
|
+
useCallback as useCallback8,
|
|
2119
2127
|
useContext as useContext9,
|
|
2120
2128
|
useEffect as useEffect7,
|
|
2121
2129
|
useState as useState6
|
|
@@ -2126,8 +2134,9 @@ import { v4 as uuid } from "uuid";
|
|
|
2126
2134
|
// src/hooks/useCheckoutDirectExecution.ts
|
|
2127
2135
|
import { DirectExecutionType, getCheckoutQuoteV2 } from "@funkit/api-base";
|
|
2128
2136
|
import { executeRelayQuote } from "@funkit/fun-relay";
|
|
2129
|
-
import {
|
|
2130
|
-
import {
|
|
2137
|
+
import { FlagKey as FlagKey4 } from "@funkit/utils";
|
|
2138
|
+
import { useCallback as useCallback5 } from "react";
|
|
2139
|
+
import { useConfig as useConfig2, useWalletClient } from "wagmi";
|
|
2131
2140
|
|
|
2132
2141
|
// src/consts/checkout.ts
|
|
2133
2142
|
var CHECKOUT_STEP_MESSAGE = {
|
|
@@ -2144,48 +2153,10 @@ var WEB3_ACCOUNT_BALANCE_MESSAGE = {
|
|
|
2144
2153
|
[2 /* APPROVE_TRANSFER */]: (tokenSymbol) => `Confirm ${tokenSymbol} transfer`
|
|
2145
2154
|
};
|
|
2146
2155
|
|
|
2147
|
-
// src/hooks/
|
|
2148
|
-
import {
|
|
2156
|
+
// src/hooks/useIsTokenWhitelisted.ts
|
|
2157
|
+
import { isTokenAddressEquivalent as isTokenAddressEquivalent2 } from "@funkit/utils";
|
|
2149
2158
|
import { useCallback as useCallback3, useMemo as useMemo7 } from "react";
|
|
2150
2159
|
|
|
2151
|
-
// src/consts/customers.ts
|
|
2152
|
-
import {
|
|
2153
|
-
BANKR_API_KEY,
|
|
2154
|
-
BASED_API_KEY,
|
|
2155
|
-
BSX_API_KEY,
|
|
2156
|
-
ETHEREAL_API_KEY,
|
|
2157
|
-
HYPERBEAT_API_KEY,
|
|
2158
|
-
KALSHI_API_KEY,
|
|
2159
|
-
KATANA_API_KEY,
|
|
2160
|
-
MONKEY_TILT_API_KEY,
|
|
2161
|
-
OSTIUM_API_KEY,
|
|
2162
|
-
POLYMARKET_API_KEY
|
|
2163
|
-
} from "@funkit/api-base";
|
|
2164
|
-
function isPolymarketCustomer(apiKey) {
|
|
2165
|
-
return apiKey === POLYMARKET_API_KEY;
|
|
2166
|
-
}
|
|
2167
|
-
function isOstiumCustomer(apiKey) {
|
|
2168
|
-
return apiKey === OSTIUM_API_KEY;
|
|
2169
|
-
}
|
|
2170
|
-
function isBankrCustomer(apiKey) {
|
|
2171
|
-
return apiKey === BANKR_API_KEY;
|
|
2172
|
-
}
|
|
2173
|
-
function isEtherealCustomer(apiKey) {
|
|
2174
|
-
return apiKey === ETHEREAL_API_KEY;
|
|
2175
|
-
}
|
|
2176
|
-
function isKatanaCustomer(apiKey) {
|
|
2177
|
-
return apiKey === KATANA_API_KEY;
|
|
2178
|
-
}
|
|
2179
|
-
function isHyperbeatCustomer(apiKey) {
|
|
2180
|
-
return apiKey === HYPERBEAT_API_KEY;
|
|
2181
|
-
}
|
|
2182
|
-
function isBasedCustomer(apiKey) {
|
|
2183
|
-
return apiKey === BASED_API_KEY;
|
|
2184
|
-
}
|
|
2185
|
-
function isKalshiCustomer(apiKey) {
|
|
2186
|
-
return apiKey === KALSHI_API_KEY;
|
|
2187
|
-
}
|
|
2188
|
-
|
|
2189
2160
|
// src/providers/FunkitFlagsProvider.tsx
|
|
2190
2161
|
import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
|
|
2191
2162
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
@@ -2198,19 +2169,19 @@ import React12, {
|
|
|
2198
2169
|
|
|
2199
2170
|
// src/utils/flags/config.ts
|
|
2200
2171
|
import {
|
|
2201
|
-
BANKR_API_KEY
|
|
2202
|
-
BASED_API_KEY
|
|
2172
|
+
BANKR_API_KEY,
|
|
2173
|
+
BASED_API_KEY,
|
|
2203
2174
|
CAMBRIA_API_KEY,
|
|
2204
2175
|
DEGEN_API_KEY,
|
|
2205
2176
|
DEV_API_KEY as DEV_API_KEY2,
|
|
2206
|
-
HYPERBEAT_API_KEY
|
|
2177
|
+
HYPERBEAT_API_KEY,
|
|
2207
2178
|
HYPERDASH_API_KEY,
|
|
2208
2179
|
HYPERSWAP_API_KEY,
|
|
2209
|
-
KALSHI_API_KEY
|
|
2210
|
-
KATANA_API_KEY
|
|
2211
|
-
MONKEY_TILT_API_KEY
|
|
2212
|
-
OSTIUM_API_KEY
|
|
2213
|
-
POLYMARKET_API_KEY
|
|
2180
|
+
KALSHI_API_KEY,
|
|
2181
|
+
KATANA_API_KEY,
|
|
2182
|
+
MONKEY_TILT_API_KEY,
|
|
2183
|
+
OSTIUM_API_KEY,
|
|
2184
|
+
POLYMARKET_API_KEY,
|
|
2214
2185
|
SUSHI_API_KEY,
|
|
2215
2186
|
VENTUALS_API_KEY
|
|
2216
2187
|
} from "@funkit/api-base";
|
|
@@ -2299,7 +2270,7 @@ var flagConfig = {
|
|
|
2299
2270
|
{
|
|
2300
2271
|
key: "apiKey",
|
|
2301
2272
|
type: "isAnyOf",
|
|
2302
|
-
values: [DEGEN_API_KEY,
|
|
2273
|
+
values: [DEGEN_API_KEY, BANKR_API_KEY, BASED_API_KEY]
|
|
2303
2274
|
}
|
|
2304
2275
|
],
|
|
2305
2276
|
// Do not block US for Degen, since its still pure slow flow
|
|
@@ -2313,7 +2284,7 @@ var flagConfig = {
|
|
|
2313
2284
|
{
|
|
2314
2285
|
key: "apiKey",
|
|
2315
2286
|
type: "isAnyOf",
|
|
2316
|
-
values: [
|
|
2287
|
+
values: [POLYMARKET_API_KEY, KATANA_API_KEY, KALSHI_API_KEY]
|
|
2317
2288
|
}
|
|
2318
2289
|
],
|
|
2319
2290
|
// Turn off geoblock for PM / Katana / Kalshi on our end.
|
|
@@ -2340,7 +2311,7 @@ var flagConfig = {
|
|
|
2340
2311
|
{
|
|
2341
2312
|
key: "apiKey",
|
|
2342
2313
|
type: "isAnyOf",
|
|
2343
|
-
values: [
|
|
2314
|
+
values: [KATANA_API_KEY]
|
|
2344
2315
|
}
|
|
2345
2316
|
],
|
|
2346
2317
|
value: true
|
|
@@ -2357,18 +2328,18 @@ var flagConfig = {
|
|
|
2357
2328
|
key: "apiKey",
|
|
2358
2329
|
type: "isAnyOf",
|
|
2359
2330
|
values: [
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2331
|
+
POLYMARKET_API_KEY,
|
|
2332
|
+
OSTIUM_API_KEY,
|
|
2333
|
+
BANKR_API_KEY,
|
|
2334
|
+
BASED_API_KEY,
|
|
2335
|
+
KATANA_API_KEY,
|
|
2365
2336
|
CAMBRIA_API_KEY,
|
|
2366
|
-
|
|
2337
|
+
HYPERBEAT_API_KEY,
|
|
2367
2338
|
HYPERSWAP_API_KEY,
|
|
2368
2339
|
HYPERDASH_API_KEY,
|
|
2369
|
-
|
|
2340
|
+
MONKEY_TILT_API_KEY,
|
|
2370
2341
|
VENTUALS_API_KEY,
|
|
2371
|
-
|
|
2342
|
+
KALSHI_API_KEY
|
|
2372
2343
|
]
|
|
2373
2344
|
}
|
|
2374
2345
|
],
|
|
@@ -2413,8 +2384,8 @@ var flagConfig = {
|
|
|
2413
2384
|
type: "isAnyOf",
|
|
2414
2385
|
values: [
|
|
2415
2386
|
DEV_API_KEY2,
|
|
2416
|
-
|
|
2417
|
-
|
|
2387
|
+
POLYMARKET_API_KEY,
|
|
2388
|
+
OSTIUM_API_KEY
|
|
2418
2389
|
// HYPERBEAT_API_KEY,
|
|
2419
2390
|
// HYPERDASH_API_KEY,
|
|
2420
2391
|
// BASED_API_KEY,
|
|
@@ -2473,10 +2444,10 @@ var flagConfig = {
|
|
|
2473
2444
|
key: "apiKey",
|
|
2474
2445
|
type: "isAnyOf",
|
|
2475
2446
|
values: [
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2447
|
+
POLYMARKET_API_KEY,
|
|
2448
|
+
OSTIUM_API_KEY,
|
|
2449
|
+
BANKR_API_KEY,
|
|
2450
|
+
KATANA_API_KEY
|
|
2480
2451
|
]
|
|
2481
2452
|
}
|
|
2482
2453
|
],
|
|
@@ -2500,7 +2471,7 @@ var flagConfig = {
|
|
|
2500
2471
|
{
|
|
2501
2472
|
key: "apiKey",
|
|
2502
2473
|
type: "isAnyOf",
|
|
2503
|
-
values: [
|
|
2474
|
+
values: [OSTIUM_API_KEY]
|
|
2504
2475
|
}
|
|
2505
2476
|
],
|
|
2506
2477
|
value: arbitrum.id.toString()
|
|
@@ -2510,7 +2481,7 @@ var flagConfig = {
|
|
|
2510
2481
|
{
|
|
2511
2482
|
key: "apiKey",
|
|
2512
2483
|
type: "isAnyOf",
|
|
2513
|
-
values: [
|
|
2484
|
+
values: [BANKR_API_KEY, KALSHI_API_KEY]
|
|
2514
2485
|
}
|
|
2515
2486
|
],
|
|
2516
2487
|
value: base3.id.toString()
|
|
@@ -2533,11 +2504,11 @@ var flagConfig = {
|
|
|
2533
2504
|
{
|
|
2534
2505
|
key: "apiKey",
|
|
2535
2506
|
type: "isAnyOf",
|
|
2536
|
-
values: [
|
|
2507
|
+
values: [POLYMARKET_API_KEY]
|
|
2537
2508
|
}
|
|
2538
2509
|
],
|
|
2539
2510
|
value: JSON.stringify({
|
|
2540
|
-
message: ""
|
|
2511
|
+
message: "Deposits on BSC are delayed and may take longer to process."
|
|
2541
2512
|
})
|
|
2542
2513
|
}
|
|
2543
2514
|
]
|
|
@@ -2651,7 +2622,7 @@ var flagConfig = {
|
|
|
2651
2622
|
{
|
|
2652
2623
|
key: "apiKey",
|
|
2653
2624
|
type: "isAnyOf",
|
|
2654
|
-
values: [
|
|
2625
|
+
values: [KATANA_API_KEY, KALSHI_API_KEY]
|
|
2655
2626
|
}
|
|
2656
2627
|
],
|
|
2657
2628
|
value: false
|
|
@@ -2735,13 +2706,13 @@ var flagConfig = {
|
|
|
2735
2706
|
values: [
|
|
2736
2707
|
SUSHI_API_KEY,
|
|
2737
2708
|
HYPERSWAP_API_KEY,
|
|
2738
|
-
|
|
2709
|
+
HYPERBEAT_API_KEY,
|
|
2739
2710
|
HYPERDASH_API_KEY,
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2711
|
+
BASED_API_KEY,
|
|
2712
|
+
OSTIUM_API_KEY,
|
|
2713
|
+
POLYMARKET_API_KEY,
|
|
2743
2714
|
VENTUALS_API_KEY,
|
|
2744
|
-
|
|
2715
|
+
KALSHI_API_KEY
|
|
2745
2716
|
]
|
|
2746
2717
|
}
|
|
2747
2718
|
],
|
|
@@ -2793,14 +2764,6 @@ var flagConfig = {
|
|
|
2793
2764
|
137: []
|
|
2794
2765
|
})
|
|
2795
2766
|
},
|
|
2796
|
-
[FlagKey.WithdrawalExcludeChains]: {
|
|
2797
|
-
type: "string",
|
|
2798
|
-
default_value: JSON.stringify([56, 10])
|
|
2799
|
-
},
|
|
2800
|
-
[FlagKey.EnableSourceNavigationWidget]: {
|
|
2801
|
-
type: "boolean",
|
|
2802
|
-
default_value: false
|
|
2803
|
-
},
|
|
2804
2767
|
[FlagKey.TokenTransferDefaultTokens]: {
|
|
2805
2768
|
type: "string",
|
|
2806
2769
|
default_value: "",
|
|
@@ -2810,7 +2773,7 @@ var flagConfig = {
|
|
|
2810
2773
|
{
|
|
2811
2774
|
key: "apiKey",
|
|
2812
2775
|
type: "isAnyOf",
|
|
2813
|
-
values: [
|
|
2776
|
+
values: [POLYMARKET_API_KEY]
|
|
2814
2777
|
}
|
|
2815
2778
|
],
|
|
2816
2779
|
value: JSON.stringify(["USDC", "USDC.e"])
|
|
@@ -2860,7 +2823,7 @@ var flagConfig = {
|
|
|
2860
2823
|
{
|
|
2861
2824
|
key: "apiKey",
|
|
2862
2825
|
type: "isAnyOf",
|
|
2863
|
-
values: [
|
|
2826
|
+
values: [BASED_API_KEY]
|
|
2864
2827
|
}
|
|
2865
2828
|
],
|
|
2866
2829
|
value: JSON.stringify({
|
|
@@ -3000,6 +2963,44 @@ import React11, {
|
|
|
3000
2963
|
} from "react";
|
|
3001
2964
|
import { FlagKey as FlagKey2 } from "@funkit/utils";
|
|
3002
2965
|
|
|
2966
|
+
// src/consts/customers.ts
|
|
2967
|
+
import {
|
|
2968
|
+
BANKR_API_KEY as BANKR_API_KEY2,
|
|
2969
|
+
BASED_API_KEY as BASED_API_KEY2,
|
|
2970
|
+
BSX_API_KEY,
|
|
2971
|
+
ETHEREAL_API_KEY,
|
|
2972
|
+
HYPERBEAT_API_KEY as HYPERBEAT_API_KEY2,
|
|
2973
|
+
KALSHI_API_KEY as KALSHI_API_KEY2,
|
|
2974
|
+
KATANA_API_KEY as KATANA_API_KEY2,
|
|
2975
|
+
MONKEY_TILT_API_KEY as MONKEY_TILT_API_KEY2,
|
|
2976
|
+
OSTIUM_API_KEY as OSTIUM_API_KEY2,
|
|
2977
|
+
POLYMARKET_API_KEY as POLYMARKET_API_KEY2
|
|
2978
|
+
} from "@funkit/api-base";
|
|
2979
|
+
function isPolymarketCustomer(apiKey) {
|
|
2980
|
+
return apiKey === POLYMARKET_API_KEY2;
|
|
2981
|
+
}
|
|
2982
|
+
function isOstiumCustomer(apiKey) {
|
|
2983
|
+
return apiKey === OSTIUM_API_KEY2;
|
|
2984
|
+
}
|
|
2985
|
+
function isBankrCustomer(apiKey) {
|
|
2986
|
+
return apiKey === BANKR_API_KEY2;
|
|
2987
|
+
}
|
|
2988
|
+
function isEtherealCustomer(apiKey) {
|
|
2989
|
+
return apiKey === ETHEREAL_API_KEY;
|
|
2990
|
+
}
|
|
2991
|
+
function isKatanaCustomer(apiKey) {
|
|
2992
|
+
return apiKey === KATANA_API_KEY2;
|
|
2993
|
+
}
|
|
2994
|
+
function isHyperbeatCustomer(apiKey) {
|
|
2995
|
+
return apiKey === HYPERBEAT_API_KEY2;
|
|
2996
|
+
}
|
|
2997
|
+
function isBasedCustomer(apiKey) {
|
|
2998
|
+
return apiKey === BASED_API_KEY2;
|
|
2999
|
+
}
|
|
3000
|
+
function isKalshiCustomer(apiKey) {
|
|
3001
|
+
return apiKey === KALSHI_API_KEY2;
|
|
3002
|
+
}
|
|
3003
|
+
|
|
3003
3004
|
// src/providers/FunkitSandboxContext.tsx
|
|
3004
3005
|
import { createContext as createContext6, useContext as useContext6 } from "react";
|
|
3005
3006
|
var FunkitSandboxContext = createContext6(false);
|
|
@@ -3209,13 +3210,57 @@ function safeJSONParse(src) {
|
|
|
3209
3210
|
});
|
|
3210
3211
|
}
|
|
3211
3212
|
|
|
3213
|
+
// src/hooks/useIsTokenWhitelisted.ts
|
|
3214
|
+
var MATCH_ALL = "*";
|
|
3215
|
+
var useIsTokenWhitelisted = (flagKey) => {
|
|
3216
|
+
const whitelistedTokensString = useFlag(flagKey);
|
|
3217
|
+
const whitelistedTokensByChainId = useMemo7(
|
|
3218
|
+
() => safeJSONParse(whitelistedTokensString),
|
|
3219
|
+
[whitelistedTokensString]
|
|
3220
|
+
);
|
|
3221
|
+
const isTokenWhitelisted = useCallback3(
|
|
3222
|
+
(chainId, tokenAddress) => {
|
|
3223
|
+
const tokensForChainId = toArrayIfString(whitelistedTokensByChainId?.[chainId]) ?? [];
|
|
3224
|
+
const tokensForAllChains = toArrayIfString(whitelistedTokensByChainId?.[MATCH_ALL]) ?? [];
|
|
3225
|
+
const tokens = [
|
|
3226
|
+
...tokensForChainId,
|
|
3227
|
+
// whitelisted tokens for the `chainId` provided
|
|
3228
|
+
...tokensForAllChains
|
|
3229
|
+
// whitelisted tokens for all chains
|
|
3230
|
+
];
|
|
3231
|
+
if (tokens.length === 0) {
|
|
3232
|
+
return false;
|
|
3233
|
+
}
|
|
3234
|
+
if (tokens.includes("*")) {
|
|
3235
|
+
return true;
|
|
3236
|
+
}
|
|
3237
|
+
return tokens.some(
|
|
3238
|
+
(currentTokenAddress) => isTokenAddressEquivalent2({
|
|
3239
|
+
firstTokenAddress: currentTokenAddress,
|
|
3240
|
+
secondTokenAddress: tokenAddress
|
|
3241
|
+
})
|
|
3242
|
+
);
|
|
3243
|
+
},
|
|
3244
|
+
[whitelistedTokensByChainId]
|
|
3245
|
+
);
|
|
3246
|
+
return isTokenWhitelisted;
|
|
3247
|
+
};
|
|
3248
|
+
var toArrayIfString = (value) => {
|
|
3249
|
+
if (typeof value === "string") {
|
|
3250
|
+
return [value];
|
|
3251
|
+
}
|
|
3252
|
+
return value;
|
|
3253
|
+
};
|
|
3254
|
+
|
|
3212
3255
|
// src/hooks/useRelayBypass.ts
|
|
3256
|
+
import { FlagKey as FlagKey3, isTokenAddressEquivalent as isTokenAddressEquivalent3 } from "@funkit/utils";
|
|
3257
|
+
import { useCallback as useCallback4, useMemo as useMemo8 } from "react";
|
|
3213
3258
|
var isTokenFlagEnabled = (tokenList, tokenAddress) => {
|
|
3214
3259
|
if (tokenList.includes("*")) {
|
|
3215
3260
|
return true;
|
|
3216
3261
|
}
|
|
3217
3262
|
return tokenList.some(
|
|
3218
|
-
(t) =>
|
|
3263
|
+
(t) => isTokenAddressEquivalent3({
|
|
3219
3264
|
firstTokenAddress: t,
|
|
3220
3265
|
secondTokenAddress: tokenAddress
|
|
3221
3266
|
})
|
|
@@ -3226,11 +3271,11 @@ function useSourceTokenRelayEnabled() {
|
|
|
3226
3271
|
const sourceTokensJsonString = useFlag(
|
|
3227
3272
|
FlagKey3.RelayBypassSourceChainsAndAssets
|
|
3228
3273
|
);
|
|
3229
|
-
const sourceTokens =
|
|
3274
|
+
const sourceTokens = useMemo8(
|
|
3230
3275
|
() => safeJSONParse(sourceTokensJsonString),
|
|
3231
3276
|
[sourceTokensJsonString]
|
|
3232
3277
|
);
|
|
3233
|
-
const isAllowed =
|
|
3278
|
+
const isAllowed = useCallback4(
|
|
3234
3279
|
(chainId, tokenAddress) => {
|
|
3235
3280
|
return isRelayBypassEnabled && isTokenFlagEnabled(
|
|
3236
3281
|
sourceTokens?.[Number.parseInt(`${chainId}`)] || [],
|
|
@@ -3256,7 +3301,7 @@ function useRelayBypass() {
|
|
|
3256
3301
|
const targetTokens = safeJSONParse(
|
|
3257
3302
|
targetTokensJsonString
|
|
3258
3303
|
);
|
|
3259
|
-
const paymentMethodWhitelistConfig =
|
|
3304
|
+
const paymentMethodWhitelistConfig = useMemo8(() => {
|
|
3260
3305
|
if (isKatanaCustomer(apiKey)) {
|
|
3261
3306
|
return {
|
|
3262
3307
|
relayPaymentMethods: [
|
|
@@ -3274,7 +3319,7 @@ function useRelayBypass() {
|
|
|
3274
3319
|
};
|
|
3275
3320
|
}, [apiKey]);
|
|
3276
3321
|
return {
|
|
3277
|
-
getIsRelayEnabled:
|
|
3322
|
+
getIsRelayEnabled: useCallback4(
|
|
3278
3323
|
({
|
|
3279
3324
|
fromChainId,
|
|
3280
3325
|
fromTokenAddress,
|
|
@@ -3321,7 +3366,9 @@ function useCheckoutDirectExecution() {
|
|
|
3321
3366
|
const { data: walletClient } = useWalletClient();
|
|
3322
3367
|
const { getIsRelayEnabled } = useRelayBypass();
|
|
3323
3368
|
const { apiKey } = useFunkitConfig();
|
|
3324
|
-
const
|
|
3369
|
+
const isPermitEnabledForToken = useIsTokenWhitelisted(FlagKey4.Permit2Tokens);
|
|
3370
|
+
const wagmiConfig = useConfig2();
|
|
3371
|
+
const getRelayDirectExecutionBaseQuote = useCallback5(
|
|
3325
3372
|
async (params) => {
|
|
3326
3373
|
const {
|
|
3327
3374
|
actionParams,
|
|
@@ -3332,6 +3379,13 @@ function useCheckoutDirectExecution() {
|
|
|
3332
3379
|
recipientAddress,
|
|
3333
3380
|
senderAddress = address
|
|
3334
3381
|
} = params;
|
|
3382
|
+
const doesHaveGasToken = await hasGasToken(
|
|
3383
|
+
wagmiConfig,
|
|
3384
|
+
address,
|
|
3385
|
+
fromChainId
|
|
3386
|
+
);
|
|
3387
|
+
const usePermit = doesHaveGasToken === false && // Check if the wallet has gas token (e.g. ETH > 0 on eth mainnet)
|
|
3388
|
+
isPermitEnabledForToken(fromChainId, fromTokenAddress);
|
|
3335
3389
|
const getCheckoutQuoteParams = {
|
|
3336
3390
|
actionParams,
|
|
3337
3391
|
apiKey,
|
|
@@ -3341,7 +3395,8 @@ function useCheckoutDirectExecution() {
|
|
|
3341
3395
|
recipientAddress,
|
|
3342
3396
|
toChainId,
|
|
3343
3397
|
toTokenAddress,
|
|
3344
|
-
userAddress: senderAddress
|
|
3398
|
+
userAddress: senderAddress,
|
|
3399
|
+
usePermit
|
|
3345
3400
|
};
|
|
3346
3401
|
if (params.isExactIn) {
|
|
3347
3402
|
const { fromTokenDecimals, fromTokenAmount } = params;
|
|
@@ -3358,9 +3413,9 @@ function useCheckoutDirectExecution() {
|
|
|
3358
3413
|
toAmountBaseUnit: BigInt(Math.floor(toTokenAmount * multiplier))
|
|
3359
3414
|
});
|
|
3360
3415
|
},
|
|
3361
|
-
[address, apiKey]
|
|
3416
|
+
[address, apiKey, isPermitEnabledForToken, wagmiConfig]
|
|
3362
3417
|
);
|
|
3363
|
-
const checkAndSwitchChains =
|
|
3418
|
+
const checkAndSwitchChains = useCallback5(
|
|
3364
3419
|
async ({
|
|
3365
3420
|
executionChainId,
|
|
3366
3421
|
stepMessageSetter
|
|
@@ -3384,7 +3439,7 @@ function useCheckoutDirectExecution() {
|
|
|
3384
3439
|
},
|
|
3385
3440
|
[connector, switchChainAsync]
|
|
3386
3441
|
);
|
|
3387
|
-
const startRelayDirectExecution =
|
|
3442
|
+
const startRelayDirectExecution = useCallback5(
|
|
3388
3443
|
async ({
|
|
3389
3444
|
checkoutItem,
|
|
3390
3445
|
latestQuote,
|
|
@@ -3461,7 +3516,7 @@ function useCheckoutDirectExecution() {
|
|
|
3461
3516
|
},
|
|
3462
3517
|
[walletClient, checkAndSwitchChains]
|
|
3463
3518
|
);
|
|
3464
|
-
const getDirectExecutionInfo =
|
|
3519
|
+
const getDirectExecutionInfo = useCallback5(
|
|
3465
3520
|
(checkoutItem) => {
|
|
3466
3521
|
const noop10 = {
|
|
3467
3522
|
isDirectExecution: false,
|
|
@@ -3499,7 +3554,7 @@ function useCheckoutDirectExecution() {
|
|
|
3499
3554
|
startRelayDirectExecution
|
|
3500
3555
|
]
|
|
3501
3556
|
);
|
|
3502
|
-
const getWithdrawalDirectExecution =
|
|
3557
|
+
const getWithdrawalDirectExecution = useCallback5(() => {
|
|
3503
3558
|
const quoteAction = getRelayDirectExecutionBaseQuote;
|
|
3504
3559
|
const executeAction = startRelayDirectExecution;
|
|
3505
3560
|
return {
|
|
@@ -3519,9 +3574,9 @@ function useCheckoutDirectExecution() {
|
|
|
3519
3574
|
import {
|
|
3520
3575
|
initializeCheckoutTokenTransferAddress
|
|
3521
3576
|
} from "@funkit/api-base";
|
|
3522
|
-
import { FlagKey as
|
|
3577
|
+
import { FlagKey as FlagKey5 } from "@funkit/utils";
|
|
3523
3578
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
3524
|
-
import { useCallback as
|
|
3579
|
+
import { useCallback as useCallback6 } from "react";
|
|
3525
3580
|
|
|
3526
3581
|
// src/domains/clientMetadata.ts
|
|
3527
3582
|
function generateClientMetadataForBackend({
|
|
@@ -3594,7 +3649,7 @@ var useCheckoutTransferInit = () => {
|
|
|
3594
3649
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
3595
3650
|
const { walletAddress, userInfo } = useGeneralWallet();
|
|
3596
3651
|
const { apiKey } = useFunkitConfig();
|
|
3597
|
-
const isQrCodeEnabled = useFlag(
|
|
3652
|
+
const isQrCodeEnabled = useFlag(FlagKey5.EnableTokenTransfer, false);
|
|
3598
3653
|
const recipientAddr = checkoutConfig?.customRecipient || walletAddress || "0x";
|
|
3599
3654
|
const queryKey = {
|
|
3600
3655
|
userId: userInfo.id || "",
|
|
@@ -3604,7 +3659,7 @@ var useCheckoutTransferInit = () => {
|
|
|
3604
3659
|
apiKey,
|
|
3605
3660
|
actionType: checkoutConfig?.qrcodeActionType
|
|
3606
3661
|
};
|
|
3607
|
-
const queryFunction =
|
|
3662
|
+
const queryFunction = useCallback6(
|
|
3608
3663
|
async (params) => {
|
|
3609
3664
|
return await initializeCheckoutTokenTransferAddress({
|
|
3610
3665
|
...params,
|
|
@@ -3636,13 +3691,13 @@ var useCheckoutTransferInit = () => {
|
|
|
3636
3691
|
};
|
|
3637
3692
|
|
|
3638
3693
|
// src/hooks/useEffectEvent.ts
|
|
3639
|
-
import { useCallback as
|
|
3694
|
+
import { useCallback as useCallback7, useInsertionEffect, useRef } from "react";
|
|
3640
3695
|
function useEffectEvent(fn) {
|
|
3641
3696
|
const savedCallback = useRef(fn);
|
|
3642
3697
|
useInsertionEffect(() => {
|
|
3643
3698
|
savedCallback.current = fn;
|
|
3644
3699
|
}, [fn]);
|
|
3645
|
-
return
|
|
3700
|
+
return useCallback7(
|
|
3646
3701
|
((...args) => {
|
|
3647
3702
|
const f = savedCallback.current;
|
|
3648
3703
|
return f(...args);
|
|
@@ -3712,13 +3767,13 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3712
3767
|
const [activeCheckout, setActiveCheckout] = useState6(null);
|
|
3713
3768
|
const [activeWithdrawal, setActiveWithdrawal] = useState6(null);
|
|
3714
3769
|
const [checkoutsProgress, setCheckoutsProgress] = useState6({});
|
|
3715
|
-
const getCheckoutProgress =
|
|
3770
|
+
const getCheckoutProgress = useCallback8(
|
|
3716
3771
|
(checkoutId) => {
|
|
3717
3772
|
return checkoutsProgress[checkoutId];
|
|
3718
3773
|
},
|
|
3719
3774
|
[checkoutsProgress]
|
|
3720
3775
|
);
|
|
3721
|
-
const setCheckoutProgress =
|
|
3776
|
+
const setCheckoutProgress = useCallback8(
|
|
3722
3777
|
(checkoutId, progress) => {
|
|
3723
3778
|
setCheckoutsProgress((data) => ({ ...data, [checkoutId]: progress }));
|
|
3724
3779
|
},
|
|
@@ -3740,7 +3795,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3740
3795
|
});
|
|
3741
3796
|
}
|
|
3742
3797
|
);
|
|
3743
|
-
const initNewWithdrawal =
|
|
3798
|
+
const initNewWithdrawal = useCallback8(
|
|
3744
3799
|
(props) => {
|
|
3745
3800
|
const { onWithdrawalConfirmation, onWithdrawalError, config } = props;
|
|
3746
3801
|
const newWithdrawalId = uuid();
|
|
@@ -3758,7 +3813,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3758
3813
|
},
|
|
3759
3814
|
[]
|
|
3760
3815
|
);
|
|
3761
|
-
const initNewCheckout =
|
|
3816
|
+
const initNewCheckout = useCallback8(
|
|
3762
3817
|
({ config, ...initSettings }) => {
|
|
3763
3818
|
const newCheckoutId = uuid();
|
|
3764
3819
|
const newActiveCheckoutItem = {
|
|
@@ -3833,7 +3888,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3833
3888
|
});
|
|
3834
3889
|
}
|
|
3835
3890
|
);
|
|
3836
|
-
const startDirectExecutionCheckout =
|
|
3891
|
+
const startDirectExecutionCheckout = useCallback8(
|
|
3837
3892
|
async ({
|
|
3838
3893
|
stepMessageSetter,
|
|
3839
3894
|
latestQuote,
|
|
@@ -3919,7 +3974,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3919
3974
|
manualFetch
|
|
3920
3975
|
]
|
|
3921
3976
|
);
|
|
3922
|
-
const startRegularCheckout =
|
|
3977
|
+
const startRegularCheckout = useCallback8(
|
|
3923
3978
|
async ({
|
|
3924
3979
|
stepMessageSetter,
|
|
3925
3980
|
latestQuote,
|
|
@@ -4119,15 +4174,15 @@ function useFunkitCheckout(props) {
|
|
|
4119
4174
|
const { openWithdrawalModal } = useWithdrawalModal();
|
|
4120
4175
|
const { connectModalOpen, openConnectModal } = useConnectModal();
|
|
4121
4176
|
const { isUserLoggedIn } = useGeneralWallet();
|
|
4122
|
-
const isCheckoutActivated = useFlag(
|
|
4123
|
-
const onErrorWrapper =
|
|
4177
|
+
const isCheckoutActivated = useFlag(FlagKey6.IsCheckoutActivated);
|
|
4178
|
+
const onErrorWrapper = useCallback8(
|
|
4124
4179
|
(payload) => {
|
|
4125
4180
|
logger.warn(payload.message, payload);
|
|
4126
4181
|
onError?.(payload);
|
|
4127
4182
|
},
|
|
4128
4183
|
[onError]
|
|
4129
4184
|
);
|
|
4130
|
-
const onOpenWrapper =
|
|
4185
|
+
const onOpenWrapper = useCallback8(
|
|
4131
4186
|
(newId) => {
|
|
4132
4187
|
props?.onOpen?.();
|
|
4133
4188
|
openFunCheckoutModal?.(newId);
|
|
@@ -4319,18 +4374,6 @@ async function validateCheckoutConfig(config) {
|
|
|
4319
4374
|
message: `Invalid targetChain configuration: Unsupported chain id ${config.targetChain} for checkout.`
|
|
4320
4375
|
};
|
|
4321
4376
|
}
|
|
4322
|
-
const chainCheckoutAssetWhitelist = FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO4[config.targetChain]?.checkoutAssetWhitelist || [];
|
|
4323
|
-
if (chainCheckoutAssetWhitelist?.[0] !== "*" && !chainCheckoutAssetWhitelist.some(
|
|
4324
|
-
(asset) => isTokenAddressEquivalent3({
|
|
4325
|
-
firstTokenAddress: asset,
|
|
4326
|
-
secondTokenAddress: config.targetAsset || ""
|
|
4327
|
-
})
|
|
4328
|
-
)) {
|
|
4329
|
-
return {
|
|
4330
|
-
isValid: false,
|
|
4331
|
-
message: `Invalid targetAsset ${config.targetAsset} for targetChain ${config.targetChain}.`
|
|
4332
|
-
};
|
|
4333
|
-
}
|
|
4334
4377
|
if (config.customRecipient && !isAddress(config.customRecipient)) {
|
|
4335
4378
|
return {
|
|
4336
4379
|
isValid: false,
|
|
@@ -4362,7 +4405,7 @@ async function validateCheckoutConfig(config) {
|
|
|
4362
4405
|
};
|
|
4363
4406
|
}
|
|
4364
4407
|
var hasSufficientBalance = async (wagmiConfig, walletAddress, tokenAddress, tokenChainId, requiredAssetAmount) => {
|
|
4365
|
-
const finalTokenAddress =
|
|
4408
|
+
const finalTokenAddress = isTokenAddressEquivalent4({
|
|
4366
4409
|
firstTokenAddress: tokenAddress,
|
|
4367
4410
|
secondTokenAddress: FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS2
|
|
4368
4411
|
}) ? void 0 : tokenAddress;
|
|
@@ -4383,6 +4426,27 @@ var hasSufficientBalance = async (wagmiConfig, walletAddress, tokenAddress, toke
|
|
|
4383
4426
|
}
|
|
4384
4427
|
return { balance, result: false, tokenTicker: null };
|
|
4385
4428
|
};
|
|
4429
|
+
var hasGasToken = async (wagmiConfig, walletAddress, chainId) => {
|
|
4430
|
+
try {
|
|
4431
|
+
const data = await getBalance(wagmiConfig, {
|
|
4432
|
+
address: walletAddress,
|
|
4433
|
+
chainId: Number(chainId),
|
|
4434
|
+
blockTag: "latest"
|
|
4435
|
+
});
|
|
4436
|
+
logger.log("hasGasToken_info", {
|
|
4437
|
+
data,
|
|
4438
|
+
walletAddress,
|
|
4439
|
+
chainId
|
|
4440
|
+
});
|
|
4441
|
+
return data.value > 0;
|
|
4442
|
+
} catch (err) {
|
|
4443
|
+
logger.error("hasGasToken_error", err, {
|
|
4444
|
+
walletAddress,
|
|
4445
|
+
chainId
|
|
4446
|
+
});
|
|
4447
|
+
return false;
|
|
4448
|
+
}
|
|
4449
|
+
};
|
|
4386
4450
|
function getFunkitEnvForCheckoutEstimation({
|
|
4387
4451
|
chainId,
|
|
4388
4452
|
bypassWalletInit
|
|
@@ -4705,7 +4769,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
4705
4769
|
const [isInited, setIsInited] = useState7(false);
|
|
4706
4770
|
const [isRefreshing, setIsRefreshing] = useState7(true);
|
|
4707
4771
|
const isGuestUserOnCheckoutHistory = !isUserLoggedIn && !!historyDepositAddress;
|
|
4708
|
-
const _refreshCheckoutHistory =
|
|
4772
|
+
const _refreshCheckoutHistory = useCallback9(async () => {
|
|
4709
4773
|
if (!funkitConfig.apiKey) {
|
|
4710
4774
|
return;
|
|
4711
4775
|
}
|
|
@@ -4773,7 +4837,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
4773
4837
|
clearInterval(intervalRef.current);
|
|
4774
4838
|
}
|
|
4775
4839
|
}, [logoutSymbol]);
|
|
4776
|
-
const startCheckoutHistoryListener =
|
|
4840
|
+
const startCheckoutHistoryListener = useCallback9(
|
|
4777
4841
|
(singleDepositAddr, expedited = false) => {
|
|
4778
4842
|
setHistoryDepositAddress(singleDepositAddr);
|
|
4779
4843
|
clearInterval(intervalRef.current);
|
|
@@ -4789,7 +4853,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
4789
4853
|
},
|
|
4790
4854
|
[triggerRefreshSymbol]
|
|
4791
4855
|
);
|
|
4792
|
-
const stopCheckoutHistoryListener =
|
|
4856
|
+
const stopCheckoutHistoryListener = useCallback9(
|
|
4793
4857
|
(cancelIntervalId) => {
|
|
4794
4858
|
clearInterval(cancelIntervalId);
|
|
4795
4859
|
if (cancelIntervalId === intervalRef.current) {
|
|
@@ -4941,7 +5005,7 @@ var useFunkitPostCheckoutInternal = (checkoutId) => {
|
|
|
4941
5005
|
};
|
|
4942
5006
|
|
|
4943
5007
|
// src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
|
|
4944
|
-
import React22, { useEffect as useEffect11, useMemo as
|
|
5008
|
+
import React22, { useEffect as useEffect11, useMemo as useMemo9, useState as useState10 } from "react";
|
|
4945
5009
|
|
|
4946
5010
|
// src/components/TransactionStatus/TransactionStatus.tsx
|
|
4947
5011
|
import {
|
|
@@ -4950,7 +5014,7 @@ import {
|
|
|
4950
5014
|
useAnimate
|
|
4951
5015
|
} from "motion/react";
|
|
4952
5016
|
import React21, {
|
|
4953
|
-
useCallback as
|
|
5017
|
+
useCallback as useCallback10,
|
|
4954
5018
|
useEffect as useEffect10,
|
|
4955
5019
|
useRef as useRef3,
|
|
4956
5020
|
useState as useState9
|
|
@@ -5673,11 +5737,11 @@ function TransactionStatus({
|
|
|
5673
5737
|
const [transitioningToStatus, setTransitioningToStatus] = useState9(status);
|
|
5674
5738
|
const [transitioningToStep, setTransitioningToStep] = useState9(step);
|
|
5675
5739
|
const spinAnimationRef = useRef3();
|
|
5676
|
-
const stopSpinning =
|
|
5740
|
+
const stopSpinning = useCallback10(() => {
|
|
5677
5741
|
spinAnimationRef.current?.cancel();
|
|
5678
5742
|
spinAnimationRef.current = void 0;
|
|
5679
5743
|
}, []);
|
|
5680
|
-
const startSpinning =
|
|
5744
|
+
const startSpinning = useCallback10(
|
|
5681
5745
|
(step2) => {
|
|
5682
5746
|
stopSpinning();
|
|
5683
5747
|
spinAnimationRef.current = animate(
|
|
@@ -5695,7 +5759,7 @@ function TransactionStatus({
|
|
|
5695
5759
|
},
|
|
5696
5760
|
[animate, stopSpinning]
|
|
5697
5761
|
);
|
|
5698
|
-
const animateCircleToSuccess =
|
|
5762
|
+
const animateCircleToSuccess = useCallback10(
|
|
5699
5763
|
async (step2) => {
|
|
5700
5764
|
const durationMs = 300;
|
|
5701
5765
|
const checkmarkDelayMs = 50;
|
|
@@ -6091,7 +6155,7 @@ function FunCheckoutStatusLoaded({
|
|
|
6091
6155
|
checkoutHistoryItem.state,
|
|
6092
6156
|
checkoutHistoryItem.refundState
|
|
6093
6157
|
);
|
|
6094
|
-
const startTimeMs =
|
|
6158
|
+
const startTimeMs = useMemo9(
|
|
6095
6159
|
() => extractStartTimeMs(
|
|
6096
6160
|
checkoutHistoryItem.clientMetadata.id,
|
|
6097
6161
|
activeCheckoutItem,
|
|
@@ -6347,7 +6411,7 @@ function isCustomWithdrawalConfig(config) {
|
|
|
6347
6411
|
import { isMobile as isMobile2, isSafari } from "@funkit/utils";
|
|
6348
6412
|
import clsx8 from "clsx";
|
|
6349
6413
|
import React43, {
|
|
6350
|
-
useCallback as
|
|
6414
|
+
useCallback as useCallback13,
|
|
6351
6415
|
useContext as useContext12,
|
|
6352
6416
|
useEffect as useEffect18,
|
|
6353
6417
|
useRef as useRef8
|
|
@@ -6663,7 +6727,7 @@ var ErrorFallback = () => /* @__PURE__ */ React31.createElement(
|
|
|
6663
6727
|
);
|
|
6664
6728
|
|
|
6665
6729
|
// src/components/FunBottomBar/FunBottomBar.tsx
|
|
6666
|
-
import { FlagKey as
|
|
6730
|
+
import { FlagKey as FlagKey7, isMobile } from "@funkit/utils";
|
|
6667
6731
|
import React35 from "react";
|
|
6668
6732
|
|
|
6669
6733
|
// src/components/FunButton/FunButton.tsx
|
|
@@ -6951,7 +7015,7 @@ var FunBottomBar = ({
|
|
|
6951
7015
|
onClose
|
|
6952
7016
|
}) => {
|
|
6953
7017
|
const { uiCustomizations } = useFunkitConfig();
|
|
6954
|
-
const showTagline = useFlag(
|
|
7018
|
+
const showTagline = useFlag(FlagKey7.ShowPoweredTagline);
|
|
6955
7019
|
const defaultBottomSection = showTagline ? /* @__PURE__ */ React35.createElement(FunPoweredTagline, null) : void 0;
|
|
6956
7020
|
const bottomSectionComponent = bottomSection ?? defaultBottomSection;
|
|
6957
7021
|
const hasMultipleButtons = !!onClose;
|
|
@@ -7084,7 +7148,7 @@ function FunDivider({
|
|
|
7084
7148
|
|
|
7085
7149
|
// src/components/FunTooltip/FunTooltip.tsx
|
|
7086
7150
|
import React40, {
|
|
7087
|
-
useCallback as
|
|
7151
|
+
useCallback as useCallback11,
|
|
7088
7152
|
useEffect as useEffect14,
|
|
7089
7153
|
useRef as useRef6,
|
|
7090
7154
|
useState as useState14
|
|
@@ -7175,7 +7239,7 @@ var FunTooltip = ({
|
|
|
7175
7239
|
const startDelayRef = useRef6();
|
|
7176
7240
|
const delayRef = useRef6();
|
|
7177
7241
|
const tooltipRef = useRef6(null);
|
|
7178
|
-
const show =
|
|
7242
|
+
const show = useCallback11(
|
|
7179
7243
|
(startHiding) => {
|
|
7180
7244
|
startDelayRef.current = setTimeout(() => {
|
|
7181
7245
|
setIsDisplayed(true);
|
|
@@ -7185,7 +7249,7 @@ var FunTooltip = ({
|
|
|
7185
7249
|
},
|
|
7186
7250
|
[startDelay]
|
|
7187
7251
|
);
|
|
7188
|
-
const hide =
|
|
7252
|
+
const hide = useCallback11(() => {
|
|
7189
7253
|
clearTimeout(startDelayRef.current);
|
|
7190
7254
|
delayRef.current = setTimeout(() => {
|
|
7191
7255
|
setIsDisplayed(false);
|
|
@@ -7298,7 +7362,7 @@ var HelpIcon = () => {
|
|
|
7298
7362
|
};
|
|
7299
7363
|
|
|
7300
7364
|
// src/components/Dialog/FocusTrap.tsx
|
|
7301
|
-
import React42, { useCallback as
|
|
7365
|
+
import React42, { useCallback as useCallback12, useEffect as useEffect15, useRef as useRef7 } from "react";
|
|
7302
7366
|
var moveFocusWithin = (element2, position) => {
|
|
7303
7367
|
const focusableElements = element2.querySelectorAll(
|
|
7304
7368
|
"button:not(:disabled), a[href]"
|
|
@@ -7331,7 +7395,7 @@ function FocusTrap(props) {
|
|
|
7331
7395
|
return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(
|
|
7332
7396
|
"div",
|
|
7333
7397
|
{
|
|
7334
|
-
onFocus:
|
|
7398
|
+
onFocus: useCallback12(
|
|
7335
7399
|
() => contentRef.current && moveFocusWithin(contentRef.current, "end"),
|
|
7336
7400
|
[]
|
|
7337
7401
|
),
|
|
@@ -7348,7 +7412,7 @@ function FocusTrap(props) {
|
|
|
7348
7412
|
), /* @__PURE__ */ React42.createElement(
|
|
7349
7413
|
"div",
|
|
7350
7414
|
{
|
|
7351
|
-
onFocus:
|
|
7415
|
+
onFocus: useCallback12(
|
|
7352
7416
|
() => contentRef.current && moveFocusWithin(contentRef.current, "start"),
|
|
7353
7417
|
[]
|
|
7354
7418
|
),
|
|
@@ -7484,7 +7548,7 @@ function Dialog({
|
|
|
7484
7548
|
}
|
|
7485
7549
|
return () => document.removeEventListener("keydown", handleEscape);
|
|
7486
7550
|
}, [open, onClose, isSmartCloseable]);
|
|
7487
|
-
const handleBackdropClick =
|
|
7551
|
+
const handleBackdropClick = useCallback13(
|
|
7488
7552
|
() => isSmartCloseable ? onClose() : () => void 0,
|
|
7489
7553
|
[isSmartCloseable, onClose]
|
|
7490
7554
|
);
|
|
@@ -7840,17 +7904,17 @@ Dialog.BottomBar = FunBottomBar;
|
|
|
7840
7904
|
// src/modals/WithdrwalModal/WithdrawalContent.tsx
|
|
7841
7905
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7 } from "@funkit/chains";
|
|
7842
7906
|
import {
|
|
7843
|
-
FlagKey as
|
|
7907
|
+
FlagKey as FlagKey14,
|
|
7844
7908
|
formatCryptoAndStringify as formatCryptoAndStringify2,
|
|
7845
7909
|
formatCurrencyAndStringify as formatCurrencyAndStringify3
|
|
7846
7910
|
} from "@funkit/utils";
|
|
7847
|
-
import React67, { useEffect as useEffect27, useMemo as
|
|
7911
|
+
import React67, { useEffect as useEffect27, useMemo as useMemo14, useState as useState26 } from "react";
|
|
7848
7912
|
import { createPortal as createPortal2 } from "react-dom";
|
|
7849
7913
|
import { useDebounce } from "use-debounce";
|
|
7850
7914
|
import { useAccount as useAccount3 } from "wagmi";
|
|
7851
7915
|
|
|
7852
7916
|
// src/components/AsyncImage/AsyncImage.tsx
|
|
7853
|
-
import React44, { useMemo as
|
|
7917
|
+
import React44, { useMemo as useMemo10, useReducer as useReducer2, useState as useState16 } from "react";
|
|
7854
7918
|
|
|
7855
7919
|
// src/components/AsyncImage/useAsyncImage.ts
|
|
7856
7920
|
import { useEffect as useEffect19, useReducer } from "react";
|
|
@@ -7918,7 +7982,7 @@ function AsyncImage({
|
|
|
7918
7982
|
const [hasError, setHasError] = useState16(
|
|
7919
7983
|
srcProp === void 0 && fallbackSrc === void 0
|
|
7920
7984
|
);
|
|
7921
|
-
const { asyncStyle, imgProps } =
|
|
7985
|
+
const { asyncStyle, imgProps } = useMemo10(() => {
|
|
7922
7986
|
const asyncStyle2 = !useAsImage ? getRemoteImageStyles(isRemoteImage, isRemoteImageLoaded, src) : {};
|
|
7923
7987
|
if (useAsImage || isRemoteImage) {
|
|
7924
7988
|
const imgProps2 = {
|
|
@@ -8020,13 +8084,13 @@ var getRemoteImageStyles = (isRemoteImage, isRemoteImageLoaded, src) => {
|
|
|
8020
8084
|
import React59 from "react";
|
|
8021
8085
|
|
|
8022
8086
|
// src/components/Dropdown/ChainDropdown.tsx
|
|
8023
|
-
import { FlagKey as
|
|
8087
|
+
import { FlagKey as FlagKey8 } from "@funkit/utils";
|
|
8024
8088
|
import React56 from "react";
|
|
8025
8089
|
|
|
8026
8090
|
// src/components/Dropdown/BaseDropdown.tsx
|
|
8027
8091
|
import { isMobile as isMobile3, noop as noop2 } from "@funkit/utils";
|
|
8028
8092
|
import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
|
|
8029
|
-
import React53, { useCallback as
|
|
8093
|
+
import React53, { useCallback as useCallback14, useEffect as useEffect22, useMemo as useMemo11, useRef as useRef10, useState as useState18 } from "react";
|
|
8030
8094
|
|
|
8031
8095
|
// src/consts/layout.ts
|
|
8032
8096
|
var VERTICAL_SECTION_GAP = "18";
|
|
@@ -8650,13 +8714,13 @@ function BaseDropdown({
|
|
|
8650
8714
|
const handleSearch = (event) => {
|
|
8651
8715
|
setSearchInput(event.target.value);
|
|
8652
8716
|
};
|
|
8653
|
-
const filteredOptions =
|
|
8717
|
+
const filteredOptions = useMemo11(
|
|
8654
8718
|
() => options.filter(
|
|
8655
8719
|
(singleOption) => singleOption.label.toLowerCase().includes(searchInput?.toLowerCase())
|
|
8656
8720
|
),
|
|
8657
8721
|
[options, searchInput]
|
|
8658
8722
|
);
|
|
8659
|
-
const closeDropdown =
|
|
8723
|
+
const closeDropdown = useCallback14(() => {
|
|
8660
8724
|
setIsOpened(false);
|
|
8661
8725
|
resetSearchOnClose && setSearchInput("");
|
|
8662
8726
|
}, [resetSearchOnClose]);
|
|
@@ -8929,9 +8993,9 @@ var ChainDropdown = ({
|
|
|
8929
8993
|
maxDropdownHeight,
|
|
8930
8994
|
tagComponent
|
|
8931
8995
|
}) => {
|
|
8932
|
-
const defaultChainIdJson = useFlag(
|
|
8996
|
+
const defaultChainIdJson = useFlag(FlagKey8.TokenTransferDefaultChainId);
|
|
8933
8997
|
const defaultChainId = safeJSONParse(defaultChainIdJson);
|
|
8934
|
-
const chainSortOrderJson = useFlag(
|
|
8998
|
+
const chainSortOrderJson = useFlag(FlagKey8.ChainIdSortOrder);
|
|
8935
8999
|
const chainSortOrder = safeJSONParse(chainSortOrderJson) || [];
|
|
8936
9000
|
const chainIds = getSortedChainIds();
|
|
8937
9001
|
const options = allowUnselect ? [DEFAULT_VALUE, ...chainIds] : chainIds;
|
|
@@ -9038,7 +9102,7 @@ var ChainDropdown = ({
|
|
|
9038
9102
|
};
|
|
9039
9103
|
|
|
9040
9104
|
// src/components/Dropdown/TokenDropdown.tsx
|
|
9041
|
-
import { FlagKey as
|
|
9105
|
+
import { FlagKey as FlagKey9, safeParseJson as safeParseJson3 } from "@funkit/utils";
|
|
9042
9106
|
import React58, { useState as useState19 } from "react";
|
|
9043
9107
|
|
|
9044
9108
|
// src/utils/flags/patches/enable-bitcoin-patch.ts
|
|
@@ -9179,12 +9243,12 @@ var NewTokenBadge = ({ iconSymbol }) => {
|
|
|
9179
9243
|
// src/components/Dropdown/TokenDropdown.tsx
|
|
9180
9244
|
var TOKEN_ICON_SIZE = 16;
|
|
9181
9245
|
var useNewTokens = () => {
|
|
9182
|
-
const enableBitcoin = useFlag(
|
|
9183
|
-
const bannerJson = useFlag(
|
|
9246
|
+
const enableBitcoin = useFlag(FlagKey9.EnableBitcoin);
|
|
9247
|
+
const bannerJson = useFlag(FlagKey9.NewTokenAssetSelectionBanner);
|
|
9184
9248
|
const bannerData = safeParseJson3(bannerJson);
|
|
9185
9249
|
const addBitcoinToNewTokensMiddleware = enableBitcoin ? addBitcoinToNewTokens : void 0;
|
|
9186
9250
|
const newBadgeTokensJson = useFlag(
|
|
9187
|
-
|
|
9251
|
+
FlagKey9.TokenTransferNewTokens,
|
|
9188
9252
|
void 0,
|
|
9189
9253
|
addBitcoinToNewTokensMiddleware
|
|
9190
9254
|
);
|
|
@@ -9204,7 +9268,7 @@ var TokenDropdown = ({
|
|
|
9204
9268
|
maxDropdownHeight,
|
|
9205
9269
|
hideNewTokenBadge
|
|
9206
9270
|
}) => {
|
|
9207
|
-
const defaultTokensJson = useFlag(
|
|
9271
|
+
const defaultTokensJson = useFlag(FlagKey9.TokenTransferDefaultTokens);
|
|
9208
9272
|
const defaultTokens = safeJSONParse(defaultTokensJson);
|
|
9209
9273
|
const enabledTokens = assets[selectedChainId];
|
|
9210
9274
|
const allTokens = getSortedTokens();
|
|
@@ -9604,7 +9668,7 @@ import {
|
|
|
9604
9668
|
formatPercent,
|
|
9605
9669
|
noop as noop4
|
|
9606
9670
|
} from "@funkit/utils";
|
|
9607
|
-
import React64, { useEffect as useEffect23, useMemo as
|
|
9671
|
+
import React64, { useEffect as useEffect23, useMemo as useMemo12, useState as useState20 } from "react";
|
|
9608
9672
|
import clsx14 from "clsx";
|
|
9609
9673
|
import { motion as motion6, useAnimationControls } from "motion/react";
|
|
9610
9674
|
import { mainnet as mainnet5 } from "viem/chains";
|
|
@@ -10000,7 +10064,7 @@ function PaymentFeesSummary({
|
|
|
10000
10064
|
}
|
|
10001
10065
|
}, [valuesNotAvailable, isExpanded]);
|
|
10002
10066
|
const { uiCustomizations } = useFunkitConfig();
|
|
10003
|
-
const { collapsed: collapsedItem, expanded: expandedItems } =
|
|
10067
|
+
const { collapsed: collapsedItem, expanded: expandedItems } = useMemo12(() => {
|
|
10004
10068
|
const fees = quote?.finalFeesBreakdown ?? fallbackFees;
|
|
10005
10069
|
if (!fees) {
|
|
10006
10070
|
return NO_DATA;
|
|
@@ -10154,7 +10218,7 @@ var EvmWallet = ({ size = 20 }) => /* @__PURE__ */ React65.createElement(
|
|
|
10154
10218
|
|
|
10155
10219
|
// src/hooks/queries/useWithdrawalQuote.ts
|
|
10156
10220
|
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
10157
|
-
import { useConfig as
|
|
10221
|
+
import { useConfig as useConfig3 } from "wagmi";
|
|
10158
10222
|
|
|
10159
10223
|
// src/domains/quote.ts
|
|
10160
10224
|
import { getCheckoutQuote as getApiCheckoutQuote } from "@funkit/api-base";
|
|
@@ -10590,7 +10654,7 @@ function useWithdrawalQuote({
|
|
|
10590
10654
|
});
|
|
10591
10655
|
const { loginType, userInfo } = useGeneralWallet();
|
|
10592
10656
|
const { apiKey } = useFunkitConfig();
|
|
10593
|
-
const wagmiConfig =
|
|
10657
|
+
const wagmiConfig = useConfig3();
|
|
10594
10658
|
const { getWithdrawalDirectExecution } = useCheckoutDirectExecution();
|
|
10595
10659
|
const { checkoutItem } = useCheckoutContext();
|
|
10596
10660
|
const isInstantQuoting = (symbol === "USDC" || symbol === "USDT") && chainId !== "1";
|
|
@@ -10803,13 +10867,13 @@ var useAssetSymbolPrice = ({
|
|
|
10803
10867
|
};
|
|
10804
10868
|
|
|
10805
10869
|
// src/hooks/useTokenChain.ts
|
|
10806
|
-
import { FlagKey as
|
|
10870
|
+
import { FlagKey as FlagKey11 } from "@funkit/utils";
|
|
10807
10871
|
import { useEffect as useEffect24, useState as useState21 } from "react";
|
|
10808
10872
|
import { polygon as polygon3 } from "viem/chains";
|
|
10809
10873
|
|
|
10810
10874
|
// src/hooks/useEnabledTokenTransferChainTokens.ts
|
|
10811
10875
|
import { bitcoinChain as bitcoinChain2, solanaChain as solanaChain3 } from "@funkit/chains";
|
|
10812
|
-
import { FlagKey as
|
|
10876
|
+
import { FlagKey as FlagKey10 } from "@funkit/utils";
|
|
10813
10877
|
import { base as base4 } from "viem/chains";
|
|
10814
10878
|
|
|
10815
10879
|
// src/hooks/useIsUsUser.ts
|
|
@@ -10831,14 +10895,14 @@ function useIsUsKatanaUser() {
|
|
|
10831
10895
|
// src/hooks/useEnabledTokenTransferChainTokens.ts
|
|
10832
10896
|
function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
|
|
10833
10897
|
const isBankrUsUser = useIsUsBankrUser();
|
|
10834
|
-
const enableBitcoin = useFlag(
|
|
10898
|
+
const enableBitcoin = useFlag(FlagKey10.EnableBitcoin);
|
|
10835
10899
|
const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
|
|
10836
10900
|
const depositAssets = useFlag(
|
|
10837
|
-
|
|
10901
|
+
FlagKey10.TokenTransferSourceChainsAndAssets,
|
|
10838
10902
|
void 0,
|
|
10839
10903
|
addBitcoinToSourceChainsAndAssetsMiddleware
|
|
10840
10904
|
);
|
|
10841
|
-
const withdrawalAssets = useFlag(
|
|
10905
|
+
const withdrawalAssets = useFlag(FlagKey10.WithdrawalChainsAndAssets);
|
|
10842
10906
|
const assetsJsonString = isWithdrawal ? withdrawalAssets : depositAssets;
|
|
10843
10907
|
const assets = safeJSONParse(assetsJsonString);
|
|
10844
10908
|
if (!assets) {
|
|
@@ -10875,7 +10939,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
|
|
|
10875
10939
|
transferInit ?? null,
|
|
10876
10940
|
isWithdrawal
|
|
10877
10941
|
);
|
|
10878
|
-
const defaultChainIdFlag = useFlag(
|
|
10942
|
+
const defaultChainIdFlag = useFlag(FlagKey11.TokenTransferDefaultChainId);
|
|
10879
10943
|
const defaultChainId = defaultValues?.chainId ?? Number(defaultChainIdFlag);
|
|
10880
10944
|
const validDefaultChainId = filteredAssets[defaultChainId] !== void 0 ? defaultChainId : polygon3.id;
|
|
10881
10945
|
const [selectedChainId, setSelectedChainId] = useState21(validDefaultChainId);
|
|
@@ -10930,7 +10994,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
|
|
|
10930
10994
|
import { useState as useState25 } from "react";
|
|
10931
10995
|
|
|
10932
10996
|
// src/hooks/useAutoClearState.ts
|
|
10933
|
-
import { useCallback as
|
|
10997
|
+
import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef11, useState as useState22 } from "react";
|
|
10934
10998
|
function useAutoClearState(initialValue = null) {
|
|
10935
10999
|
const [state, setState] = useState22(initialValue);
|
|
10936
11000
|
const timeoutRef = useRef11();
|
|
@@ -10943,7 +11007,7 @@ function useAutoClearState(initialValue = null) {
|
|
|
10943
11007
|
}, []);
|
|
10944
11008
|
return [
|
|
10945
11009
|
state,
|
|
10946
|
-
|
|
11010
|
+
useCallback15((newState, durationMs) => {
|
|
10947
11011
|
if (timeoutRef.current) {
|
|
10948
11012
|
clearTimeout(timeoutRef.current);
|
|
10949
11013
|
timeoutRef.current = void 0;
|
|
@@ -10961,11 +11025,11 @@ import { ClientError as ClientError2 } from "@funkit/utils";
|
|
|
10961
11025
|
import { useState as useState24 } from "react";
|
|
10962
11026
|
|
|
10963
11027
|
// src/hooks/useIsBlacklisted.ts
|
|
10964
|
-
import { FlagKey as
|
|
10965
|
-
import { useMemo as
|
|
11028
|
+
import { FlagKey as FlagKey12 } from "@funkit/utils";
|
|
11029
|
+
import { useMemo as useMemo13 } from "react";
|
|
10966
11030
|
var useIsBlacklisted = (walletAddress, customRecipient) => {
|
|
10967
|
-
const flagStr = useFlag(
|
|
10968
|
-
const blacklist =
|
|
11031
|
+
const flagStr = useFlag(FlagKey12.AddressBlacklist);
|
|
11032
|
+
const blacklist = useMemo13(
|
|
10969
11033
|
() => safeJSONParse(flagStr)?.map((addr) => addr.toLowerCase()) || [],
|
|
10970
11034
|
[flagStr]
|
|
10971
11035
|
);
|
|
@@ -10976,15 +11040,15 @@ var useIsBlacklisted = (walletAddress, customRecipient) => {
|
|
|
10976
11040
|
};
|
|
10977
11041
|
|
|
10978
11042
|
// src/providers/FunkitQuoteContext.tsx
|
|
10979
|
-
import { FlagKey as
|
|
11043
|
+
import { FlagKey as FlagKey13, isNotNullish as isNotNullish4 } from "@funkit/utils";
|
|
10980
11044
|
import React66, {
|
|
10981
11045
|
createContext as createContext13,
|
|
10982
|
-
useCallback as
|
|
11046
|
+
useCallback as useCallback16,
|
|
10983
11047
|
useContext as useContext13,
|
|
10984
11048
|
useEffect as useEffect26,
|
|
10985
11049
|
useState as useState23
|
|
10986
11050
|
} from "react";
|
|
10987
|
-
import { useConfig as
|
|
11051
|
+
import { useConfig as useConfig4 } from "wagmi";
|
|
10988
11052
|
|
|
10989
11053
|
// src/consts/quote.ts
|
|
10990
11054
|
import { ClientError } from "@funkit/utils";
|
|
@@ -11075,9 +11139,9 @@ var FunkitQuoteContext = createContext13({
|
|
|
11075
11139
|
function FunkitQuoteProvider({ children }) {
|
|
11076
11140
|
const { checkoutItem, setCheckout } = useCheckoutContext();
|
|
11077
11141
|
const funkitConfig = useFunkitConfig();
|
|
11078
|
-
const wagmiConfig =
|
|
11142
|
+
const wagmiConfig = useConfig4();
|
|
11079
11143
|
const { walletAddress, logoutSymbol, loginType, userInfo } = useGeneralWallet();
|
|
11080
|
-
const enableFrogProxyServer = useFlag(
|
|
11144
|
+
const enableFrogProxyServer = useFlag(FlagKey13.EnableFrogProxyServer);
|
|
11081
11145
|
const { getDirectExecutionInfo } = useCheckoutDirectExecution();
|
|
11082
11146
|
const [latestQuote, setLatestQuote] = useState23(null);
|
|
11083
11147
|
const [isQuoting, setIsQuoting] = useState23(false);
|
|
@@ -11093,7 +11157,7 @@ function FunkitQuoteProvider({ children }) {
|
|
|
11093
11157
|
});
|
|
11094
11158
|
}
|
|
11095
11159
|
}, [logoutSymbol]);
|
|
11096
|
-
const setQuoteProgress =
|
|
11160
|
+
const setQuoteProgress = useCallback16(
|
|
11097
11161
|
(state) => {
|
|
11098
11162
|
setQuoteErrorMessage(state.quoteErrorMessage);
|
|
11099
11163
|
setQuoteStepMessage(state.quoteStepMessage);
|
|
@@ -11101,7 +11165,7 @@ function FunkitQuoteProvider({ children }) {
|
|
|
11101
11165
|
},
|
|
11102
11166
|
[]
|
|
11103
11167
|
);
|
|
11104
|
-
const clearCheckoutQuoteMessages =
|
|
11168
|
+
const clearCheckoutQuoteMessages = useCallback16(() => {
|
|
11105
11169
|
setQuoteStepMessage("");
|
|
11106
11170
|
setQuoteErrorMessage("");
|
|
11107
11171
|
}, []);
|
|
@@ -11536,7 +11600,7 @@ function useWithdrawalAssets(config) {
|
|
|
11536
11600
|
},
|
|
11537
11601
|
true
|
|
11538
11602
|
);
|
|
11539
|
-
const excludedTokenStr = useFlag(
|
|
11603
|
+
const excludedTokenStr = useFlag(FlagKey14.WithdrawalExcludeTokens);
|
|
11540
11604
|
const excludedTokens = safeJSONParse(excludedTokenStr);
|
|
11541
11605
|
if (excludedTokens) {
|
|
11542
11606
|
for (const chainIdStr of Object.keys(excludedTokens)) {
|
|
@@ -11628,11 +11692,52 @@ function getErrorNotification(quoteErrorObject, withdrawalError, targetAssetFetc
|
|
|
11628
11692
|
}
|
|
11629
11693
|
return null;
|
|
11630
11694
|
}
|
|
11695
|
+
function useShowConnectWallet({
|
|
11696
|
+
config
|
|
11697
|
+
}) {
|
|
11698
|
+
const withdrawalWalletAddress = "wallet" in config ? config.wallet.address() : "0x";
|
|
11699
|
+
const { isConnected, address: connectedWalletAddress } = useAccount3();
|
|
11700
|
+
const showUseConnected = !config.disableConnectedWallet && isConnected && connectedWalletAddress && withdrawalWalletAddress.toLowerCase() !== connectedWalletAddress.toLowerCase();
|
|
11701
|
+
useEffect27(() => {
|
|
11702
|
+
logger.debug("withdrawalContent:showUseConnected", {
|
|
11703
|
+
isConnected,
|
|
11704
|
+
connectedWalletAddress,
|
|
11705
|
+
withdrawalWalletAddress
|
|
11706
|
+
});
|
|
11707
|
+
}, [isConnected, connectedWalletAddress, withdrawalWalletAddress]);
|
|
11708
|
+
return showUseConnected;
|
|
11709
|
+
}
|
|
11710
|
+
function isValidWithdrawal({
|
|
11711
|
+
config,
|
|
11712
|
+
checkoutConfig,
|
|
11713
|
+
withdrawalUSD,
|
|
11714
|
+
recipientAddress,
|
|
11715
|
+
selectedChainId,
|
|
11716
|
+
sourceTokenBalance
|
|
11717
|
+
}) {
|
|
11718
|
+
const isValidAddress = isAddressSupported(recipientAddress);
|
|
11719
|
+
const isValidAddressAndChain = isAddressCompatibleWithChain(
|
|
11720
|
+
recipientAddress,
|
|
11721
|
+
selectedChainId
|
|
11722
|
+
);
|
|
11723
|
+
const minWithdrawalUsd = config.getMinWithdrawalUSD?.({
|
|
11724
|
+
tokenAddress: checkoutConfig?.sourceTokenAddress || "0x",
|
|
11725
|
+
tokenChainId: checkoutConfig?.sourceChain || "0"
|
|
11726
|
+
}) || 0.01;
|
|
11727
|
+
const isWithdrawAmountTooLow = Number(withdrawalUSD) < minWithdrawalUsd;
|
|
11728
|
+
const isWithdrawAmountValid = !isWithdrawAmountTooLow && Number(withdrawalUSD) <= sourceTokenBalance;
|
|
11729
|
+
return {
|
|
11730
|
+
isValidAddress,
|
|
11731
|
+
isValidAddressAndChain,
|
|
11732
|
+
isWithdrawAmountTooLow,
|
|
11733
|
+
isWithdrawAmountValid,
|
|
11734
|
+
minWithdrawalUsd
|
|
11735
|
+
};
|
|
11736
|
+
}
|
|
11631
11737
|
var WithdrawContent = ({
|
|
11632
11738
|
onContinue,
|
|
11633
11739
|
config,
|
|
11634
11740
|
withdrawalItem
|
|
11635
|
-
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: refactor this later
|
|
11636
11741
|
}) => {
|
|
11637
11742
|
const sourceTokenBalance = withdrawalItem?.withdrawalSourceTokenBalance?.() || 0;
|
|
11638
11743
|
const token = config.sourceTokenSymbol;
|
|
@@ -11683,7 +11788,6 @@ var WithdrawContent = ({
|
|
|
11683
11788
|
iconSrc: getTokenIconUrl(selectedToken)
|
|
11684
11789
|
});
|
|
11685
11790
|
}, [targetAssetInfo, updateTargetAsset, selectedChainId, selectedToken]);
|
|
11686
|
-
const withdrawalWalletAddress = "wallet" in config ? config.wallet.address() : "0x";
|
|
11687
11791
|
const {
|
|
11688
11792
|
isLoading: isQuoteLoading,
|
|
11689
11793
|
data: quote,
|
|
@@ -11699,11 +11803,7 @@ var WithdrawContent = ({
|
|
|
11699
11803
|
symbol: selectedToken,
|
|
11700
11804
|
targetAsset: targetAssetInfo?.address
|
|
11701
11805
|
});
|
|
11702
|
-
const {
|
|
11703
|
-
isConnected,
|
|
11704
|
-
connector,
|
|
11705
|
-
address: connectedWalletAddress
|
|
11706
|
-
} = useAccount3();
|
|
11806
|
+
const { connector, address: connectedWalletAddress } = useAccount3();
|
|
11707
11807
|
const { handleWithdrawal, isWithdrawing, withdrawalError } = useWithdrawal({
|
|
11708
11808
|
config,
|
|
11709
11809
|
withdrawalItem,
|
|
@@ -11725,27 +11825,25 @@ var WithdrawContent = ({
|
|
|
11725
11825
|
(wallet) => wallet.id === connector?.id
|
|
11726
11826
|
)?.iconUrl;
|
|
11727
11827
|
const normalizedSelectedToken = selectedToken.toUpperCase();
|
|
11728
|
-
const isValidAddress = isAddressSupported(recipientAddress);
|
|
11729
|
-
const isValidAddressAndChain = isAddressCompatibleWithChain(
|
|
11730
|
-
recipientAddress,
|
|
11731
|
-
selectedChainId
|
|
11732
|
-
);
|
|
11733
11828
|
const { checkoutItem } = useCheckoutContext();
|
|
11734
11829
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
11735
|
-
const
|
|
11736
|
-
|
|
11737
|
-
|
|
11738
|
-
|
|
11739
|
-
|
|
11740
|
-
|
|
11741
|
-
|
|
11742
|
-
|
|
11743
|
-
|
|
11744
|
-
|
|
11745
|
-
|
|
11746
|
-
|
|
11747
|
-
|
|
11748
|
-
}
|
|
11830
|
+
const {
|
|
11831
|
+
isValidAddress,
|
|
11832
|
+
isValidAddressAndChain,
|
|
11833
|
+
isWithdrawAmountTooLow,
|
|
11834
|
+
isWithdrawAmountValid,
|
|
11835
|
+
minWithdrawalUsd
|
|
11836
|
+
} = isValidWithdrawal({
|
|
11837
|
+
config,
|
|
11838
|
+
checkoutConfig,
|
|
11839
|
+
withdrawalUSD,
|
|
11840
|
+
sourceTokenBalance,
|
|
11841
|
+
recipientAddress,
|
|
11842
|
+
selectedChainId
|
|
11843
|
+
});
|
|
11844
|
+
const showUseConnected = useShowConnectWallet({
|
|
11845
|
+
config
|
|
11846
|
+
});
|
|
11749
11847
|
const handleUseConnectedClick = () => {
|
|
11750
11848
|
if (!connectedWalletAddress) {
|
|
11751
11849
|
return;
|
|
@@ -11822,7 +11920,7 @@ var WithdrawContent = ({
|
|
|
11822
11920
|
isValidAddressAndChain,
|
|
11823
11921
|
selectedChainName
|
|
11824
11922
|
});
|
|
11825
|
-
const errorNotification =
|
|
11923
|
+
const errorNotification = useMemo14(
|
|
11826
11924
|
() => getErrorNotification(
|
|
11827
11925
|
quoteErrorObject,
|
|
11828
11926
|
withdrawalError,
|
|
@@ -12068,7 +12166,7 @@ import { useAccount as useAccount6 } from "wagmi";
|
|
|
12068
12166
|
// src/components/FunPayments/FunPaymentMethods.tsx
|
|
12069
12167
|
import { BridgeCustomerStatus as BridgeCustomerStatus3 } from "@funkit/api-base";
|
|
12070
12168
|
import {
|
|
12071
|
-
FlagKey as
|
|
12169
|
+
FlagKey as FlagKey17,
|
|
12072
12170
|
formatCurrencyAndStringify as formatCurrencyAndStringify4,
|
|
12073
12171
|
formatSecondsToReadableForm,
|
|
12074
12172
|
safeParseJson as safeParseJson4
|
|
@@ -12155,9 +12253,9 @@ var isSoftRejected = (customer) => customer && isKycUninitialized(customer.statu
|
|
|
12155
12253
|
var FIAT_PROCESSING_TIME = "1-2 business days";
|
|
12156
12254
|
|
|
12157
12255
|
// src/hooks/useCheckoutTimeEstimate.ts
|
|
12158
|
-
import { FlagKey as
|
|
12256
|
+
import { FlagKey as FlagKey15 } from "@funkit/utils";
|
|
12159
12257
|
function useCheckoutTimeEstimate(originalTimeEstimationMs, paymentMethod = "card" /* CARD */, bypassFlag = false) {
|
|
12160
|
-
const timeEstimatesJsonString = useFlag(
|
|
12258
|
+
const timeEstimatesJsonString = useFlag(FlagKey15.CheckoutTimeEstimateOverrides);
|
|
12161
12259
|
const timeEstimates = safeJSONParse(
|
|
12162
12260
|
timeEstimatesJsonString
|
|
12163
12261
|
);
|
|
@@ -12174,9 +12272,9 @@ import {
|
|
|
12174
12272
|
getBridgeKycLink
|
|
12175
12273
|
} from "@funkit/api-base";
|
|
12176
12274
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9 } from "@funkit/chains";
|
|
12177
|
-
import { FlagKey as
|
|
12275
|
+
import { FlagKey as FlagKey16 } from "@funkit/utils";
|
|
12178
12276
|
import { useQuery as useQuery10, useQueryClient } from "@tanstack/react-query";
|
|
12179
|
-
import { useCallback as
|
|
12277
|
+
import { useCallback as useCallback17 } from "react";
|
|
12180
12278
|
var sepaCountryCode = [
|
|
12181
12279
|
// EU countries that are part of SEPA
|
|
12182
12280
|
"AT",
|
|
@@ -12254,8 +12352,8 @@ function useFiatEnabled() {
|
|
|
12254
12352
|
const isEuSepaUser = sepaCountryCode.includes(
|
|
12255
12353
|
userIpInfo?.alpha2 || "PLACEHOLDER"
|
|
12256
12354
|
);
|
|
12257
|
-
const isTokenTransferEnabled = useFlag(
|
|
12258
|
-
const isFiatEnabled = useFlag(
|
|
12355
|
+
const isTokenTransferEnabled = useFlag(FlagKey16.EnableTokenTransfer);
|
|
12356
|
+
const isFiatEnabled = useFlag(FlagKey16.EnableFiatDeposit);
|
|
12259
12357
|
return isEuSepaUser && isTokenTransferEnabled && isFiatEnabled;
|
|
12260
12358
|
}
|
|
12261
12359
|
function useFrogAccounts() {
|
|
@@ -12275,13 +12373,13 @@ function useFrogAccounts() {
|
|
|
12275
12373
|
function useClearFrogAccountsCache() {
|
|
12276
12374
|
const { walletAddress } = useGeneralWallet();
|
|
12277
12375
|
const queryClient = useQueryClient();
|
|
12278
|
-
const clearFrogAccounts =
|
|
12376
|
+
const clearFrogAccounts = useCallback17(() => {
|
|
12279
12377
|
queryClient.removeQueries({
|
|
12280
12378
|
queryKey: ["frogSubAccounts", walletAddress],
|
|
12281
12379
|
exact: true
|
|
12282
12380
|
});
|
|
12283
12381
|
}, [queryClient, walletAddress]);
|
|
12284
|
-
const clearVirtualFiatAccounts =
|
|
12382
|
+
const clearVirtualFiatAccounts = useCallback17(() => {
|
|
12285
12383
|
queryClient.removeQueries({
|
|
12286
12384
|
queryKey: ["useVirtualFiatAccounts"]
|
|
12287
12385
|
});
|
|
@@ -12356,7 +12454,7 @@ function useCreateVirtualBankAccount() {
|
|
|
12356
12454
|
const chainName = targetChainId && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9[targetChainId]?.name?.toLowerCase();
|
|
12357
12455
|
const subAccountId = allFiatAccounts?.bridgeCustomer?.id;
|
|
12358
12456
|
const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
|
|
12359
|
-
const handleCreateVirtualFiatAccount =
|
|
12457
|
+
const handleCreateVirtualFiatAccount = useCallback17(async () => {
|
|
12360
12458
|
try {
|
|
12361
12459
|
if (!subAccountId || !chainName) {
|
|
12362
12460
|
return {
|
|
@@ -12406,7 +12504,7 @@ import {
|
|
|
12406
12504
|
FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS3,
|
|
12407
12505
|
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO10
|
|
12408
12506
|
} from "@funkit/chains";
|
|
12409
|
-
import { useMemo as
|
|
12507
|
+
import { useMemo as useMemo15 } from "react";
|
|
12410
12508
|
|
|
12411
12509
|
// src/hooks/useWalletAssets.ts
|
|
12412
12510
|
import {
|
|
@@ -12583,7 +12681,7 @@ var processWalletAssets = (walletAssets, targetChain) => {
|
|
|
12583
12681
|
};
|
|
12584
12682
|
function useWalletAssetHoldings(targetChain) {
|
|
12585
12683
|
const { walletAssets, isLoading, totalWalletAssetsUsd } = useWalletAssets();
|
|
12586
|
-
const processedAssets =
|
|
12684
|
+
const processedAssets = useMemo15(
|
|
12587
12685
|
() => processWalletAssets(walletAssets, targetChain),
|
|
12588
12686
|
[targetChain, walletAssets]
|
|
12589
12687
|
);
|
|
@@ -13831,16 +13929,6 @@ var CardPaymentMethodItem = ({
|
|
|
13831
13929
|
valueIcon: customValueIcon ?? /* @__PURE__ */ React74.createElement(CombinedCreditCardOptionsIcon, null),
|
|
13832
13930
|
onClick,
|
|
13833
13931
|
isDisabled: !isClickable,
|
|
13834
|
-
badge: /* @__PURE__ */ React74.createElement(
|
|
13835
|
-
FunBadge,
|
|
13836
|
-
{
|
|
13837
|
-
background: "approvedBadgeBackground",
|
|
13838
|
-
borderColor: "approvedBadgeBorder",
|
|
13839
|
-
color: "approvedBadgeText",
|
|
13840
|
-
hasShine: true
|
|
13841
|
-
},
|
|
13842
|
-
"NEW"
|
|
13843
|
-
),
|
|
13844
13932
|
disclaimerText: `$50,000 limit \u2022 ${formatSecondsToReadableForm(timeEstimate, true)}`
|
|
13845
13933
|
}
|
|
13846
13934
|
);
|
|
@@ -13853,12 +13941,12 @@ var TransferPaymentMethodItem = ({
|
|
|
13853
13941
|
paymentIcon
|
|
13854
13942
|
}) => {
|
|
13855
13943
|
const { textCustomizations } = useFunkitConfig();
|
|
13856
|
-
const enableBitcoin = useFlag(
|
|
13857
|
-
const bannerJson = useFlag(
|
|
13944
|
+
const enableBitcoin = useFlag(FlagKey17.EnableBitcoin);
|
|
13945
|
+
const bannerJson = useFlag(FlagKey17.NewTokenAssetSelectionBanner);
|
|
13858
13946
|
const bannerData = safeParseJson4(bannerJson);
|
|
13859
13947
|
const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
|
|
13860
13948
|
const depositAssetsJson = useFlag(
|
|
13861
|
-
|
|
13949
|
+
FlagKey17.TokenTransferSourceChainsAndAssets,
|
|
13862
13950
|
void 0,
|
|
13863
13951
|
addBitcoinToSourceChainsAndAssetsMiddleware
|
|
13864
13952
|
);
|
|
@@ -13975,16 +14063,6 @@ function PayPalPaymentMethodItem({
|
|
|
13975
14063
|
keyText: "Deposit with PayPal",
|
|
13976
14064
|
onClick,
|
|
13977
14065
|
isDisabled: !isClickable,
|
|
13978
|
-
badge: /* @__PURE__ */ React74.createElement(
|
|
13979
|
-
FunBadge,
|
|
13980
|
-
{
|
|
13981
|
-
background: "approvedBadgeBackground",
|
|
13982
|
-
borderColor: "approvedBadgeBorder",
|
|
13983
|
-
color: "approvedBadgeText",
|
|
13984
|
-
hasShine: true
|
|
13985
|
-
},
|
|
13986
|
-
"NEW"
|
|
13987
|
-
),
|
|
13988
14066
|
disclaimerText: "$10,000 limit \u2022 5 min"
|
|
13989
14067
|
}
|
|
13990
14068
|
);
|
|
@@ -14076,7 +14154,7 @@ var BankIconActive = ({ size = 20 }) => {
|
|
|
14076
14154
|
|
|
14077
14155
|
// src/components/FunConnectOptions/FunSignInStep.tsx
|
|
14078
14156
|
import { groupBy, isMobile as isMobile8, isSafari as isSafari3, redirectInMobile as redirectInMobile2 } from "@funkit/utils";
|
|
14079
|
-
import React191, { Fragment as Fragment2, useCallback as
|
|
14157
|
+
import React191, { Fragment as Fragment2, useCallback as useCallback43, useMemo as useMemo38, useState as useState62 } from "react";
|
|
14080
14158
|
|
|
14081
14159
|
// src/providers/walletConnectDeepLink.ts
|
|
14082
14160
|
var storageKey = "WALLETCONNECT_DEEPLINK_CHOICE";
|
|
@@ -14494,10 +14572,10 @@ var SocialsIcon = () => {
|
|
|
14494
14572
|
};
|
|
14495
14573
|
|
|
14496
14574
|
// src/components/FunConnectOptions/FunConnectOptions.tsx
|
|
14497
|
-
import React190, { useCallback as
|
|
14575
|
+
import React190, { useCallback as useCallback42, useMemo as useMemo37, useState as useState61 } from "react";
|
|
14498
14576
|
|
|
14499
14577
|
// src/hooks/useAnimatedNavigation.ts
|
|
14500
|
-
import { useCallback as
|
|
14578
|
+
import { useCallback as useCallback18, useState as useState28 } from "react";
|
|
14501
14579
|
|
|
14502
14580
|
// src/css/modalTransitionStyles.css.ts
|
|
14503
14581
|
var animateContentInClass = "stgjxl2";
|
|
@@ -14525,7 +14603,7 @@ function useAnimatedNavigation(callback) {
|
|
|
14525
14603
|
const [animateOut, setAnimateOut] = useState28(false);
|
|
14526
14604
|
const [isSkipped, setIsSkipped] = useState28(false);
|
|
14527
14605
|
const [isReversed, setIsReversed] = useState28(false);
|
|
14528
|
-
const navigateTo =
|
|
14606
|
+
const navigateTo = useCallback18(
|
|
14529
14607
|
(page, params = {}) => {
|
|
14530
14608
|
setIsSkipped(!!params.skip);
|
|
14531
14609
|
if (params.skip) {
|
|
@@ -14540,7 +14618,7 @@ function useAnimatedNavigation(callback) {
|
|
|
14540
14618
|
},
|
|
14541
14619
|
[callback]
|
|
14542
14620
|
);
|
|
14543
|
-
const animate =
|
|
14621
|
+
const animate = useCallback18(
|
|
14544
14622
|
(callback2, params = {}) => {
|
|
14545
14623
|
setIsSkipped(!!params.skip);
|
|
14546
14624
|
if (params.skip) {
|
|
@@ -14568,17 +14646,17 @@ import React180, { useEffect as useEffect45, useRef as useRef23, useState as use
|
|
|
14568
14646
|
|
|
14569
14647
|
// src/modals/CheckoutModal/stepTransition.ts
|
|
14570
14648
|
import {
|
|
14571
|
-
useCallback as
|
|
14649
|
+
useCallback as useCallback38,
|
|
14572
14650
|
useRef as useRef22,
|
|
14573
14651
|
useState as useState57
|
|
14574
14652
|
} from "react";
|
|
14575
14653
|
|
|
14576
14654
|
// src/hooks/useCheckoutQuoteNotification.ts
|
|
14577
|
-
import { useMemo as
|
|
14655
|
+
import { useMemo as useMemo16 } from "react";
|
|
14578
14656
|
function useCheckoutQuoteNotification() {
|
|
14579
14657
|
const { clearCheckoutQuoteMessages } = useQuoteContext();
|
|
14580
14658
|
const { quoteErrorMessage, quoteStepMessage } = useQuoteContext();
|
|
14581
|
-
const quoteNotification =
|
|
14659
|
+
const quoteNotification = useMemo16(() => {
|
|
14582
14660
|
if (quoteErrorMessage !== "") {
|
|
14583
14661
|
return {
|
|
14584
14662
|
messageType: "error",
|
|
@@ -14862,7 +14940,7 @@ import {
|
|
|
14862
14940
|
BridgeCustomerStatus as BridgeCustomerStatus4
|
|
14863
14941
|
} from "@funkit/api-base";
|
|
14864
14942
|
import { exhaustiveCheck as exhaustiveCheck4 } from "@funkit/utils";
|
|
14865
|
-
import React92, { useCallback as
|
|
14943
|
+
import React92, { useCallback as useCallback19, useState as useState30 } from "react";
|
|
14866
14944
|
import { createPortal as createPortal4 } from "react-dom";
|
|
14867
14945
|
|
|
14868
14946
|
// src/components/Icons/HomeIcon.tsx
|
|
@@ -15464,7 +15542,7 @@ var VerifyAccountScreen = ({
|
|
|
15464
15542
|
const kycUninitialized = !isSoftRejected2 && customerStatus && isKycUninitialized(customerStatus);
|
|
15465
15543
|
const canStartKyc = kycUninitialized || isSoftRejected2;
|
|
15466
15544
|
const handleCreateVirtualFiatAccount = useCreateVirtualBankAccount();
|
|
15467
|
-
const onClick =
|
|
15545
|
+
const onClick = useCallback19(async () => {
|
|
15468
15546
|
if (customerStatus === BridgeCustomerStatus4.ACTIVE) {
|
|
15469
15547
|
setCreating(true);
|
|
15470
15548
|
const result = await handleCreateVirtualFiatAccount();
|
|
@@ -15996,7 +16074,7 @@ function getCheckoutCompletionTime(checkout) {
|
|
|
15996
16074
|
}
|
|
15997
16075
|
|
|
15998
16076
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
|
|
15999
|
-
import React108, { useCallback as
|
|
16077
|
+
import React108, { useCallback as useCallback21, useMemo as useMemo17, useState as useState32 } from "react";
|
|
16000
16078
|
import { createPortal as createPortal6 } from "react-dom";
|
|
16001
16079
|
|
|
16002
16080
|
// src/components/HelpAlert/HelpAlert.tsx
|
|
@@ -16012,7 +16090,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
|
|
|
16012
16090
|
};
|
|
16013
16091
|
|
|
16014
16092
|
// src/hooks/useFunListeners.ts
|
|
16015
|
-
import { useCallback as
|
|
16093
|
+
import { useCallback as useCallback20, useEffect as useEffect28, useRef as useRef13 } from "react";
|
|
16016
16094
|
function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
|
|
16017
16095
|
const activeIntervalRef = useRef13();
|
|
16018
16096
|
const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
|
|
@@ -16035,21 +16113,21 @@ function useSIWFarcasterListener(channelToken) {
|
|
|
16035
16113
|
const { getFcConnectionStatus, handleFunkitWeb2Login } = useFunkitWeb2Login();
|
|
16036
16114
|
const intervalRef = useRef13();
|
|
16037
16115
|
const [refreshSymbol, triggerRefreshSymbol] = useSymbolRefresh_default();
|
|
16038
|
-
const startStatusListener =
|
|
16116
|
+
const startStatusListener = useCallback20(() => {
|
|
16039
16117
|
clearInterval(intervalRef.current);
|
|
16040
16118
|
triggerRefreshSymbol();
|
|
16041
16119
|
intervalRef.current = setInterval(() => {
|
|
16042
16120
|
triggerRefreshSymbol();
|
|
16043
16121
|
}, FARCASTER_STATUS_INTERVAL);
|
|
16044
16122
|
}, [triggerRefreshSymbol]);
|
|
16045
|
-
const stopStatusListener =
|
|
16123
|
+
const stopStatusListener = useCallback20(() => {
|
|
16046
16124
|
clearInterval(intervalRef.current);
|
|
16047
16125
|
}, []);
|
|
16048
16126
|
useEffect28(() => {
|
|
16049
16127
|
startStatusListener();
|
|
16050
16128
|
return () => stopStatusListener();
|
|
16051
16129
|
}, []);
|
|
16052
|
-
const check =
|
|
16130
|
+
const check = useCallback20(async () => {
|
|
16053
16131
|
if (!channelToken || !initalChainid) {
|
|
16054
16132
|
return;
|
|
16055
16133
|
}
|
|
@@ -16363,7 +16441,7 @@ function FunCheckoutHistoryDetail({
|
|
|
16363
16441
|
useCheckoutHistoryListener(isProcessing, checkoutHistoryInfo?.depositAddr);
|
|
16364
16442
|
useWalletAssets({ enableRefetchInterval: isProcessing || isCompleted });
|
|
16365
16443
|
const { beginCheckout } = useFunkitCheckout({});
|
|
16366
|
-
const handleNewCheckout =
|
|
16444
|
+
const handleNewCheckout = useCallback21(
|
|
16367
16445
|
(fromCheckout) => {
|
|
16368
16446
|
onClose({ isNewDeposit: true });
|
|
16369
16447
|
const historicalCheckout = fromCheckout.clientMetadata;
|
|
@@ -16382,7 +16460,7 @@ function FunCheckoutHistoryDetail({
|
|
|
16382
16460
|
isActiveCheckout
|
|
16383
16461
|
]
|
|
16384
16462
|
);
|
|
16385
|
-
const primaryButtonProps =
|
|
16463
|
+
const primaryButtonProps = useMemo17(() => {
|
|
16386
16464
|
if (!isCheckoutLoaded) {
|
|
16387
16465
|
return void 0;
|
|
16388
16466
|
}
|
|
@@ -16471,7 +16549,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
|
|
|
16471
16549
|
|
|
16472
16550
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
|
|
16473
16551
|
import { sendSupportMessage } from "@funkit/api-base";
|
|
16474
|
-
import React112, { useEffect as useEffect30, useMemo as
|
|
16552
|
+
import React112, { useEffect as useEffect30, useMemo as useMemo18, useRef as useRef15, useState as useState33 } from "react";
|
|
16475
16553
|
import { createPortal as createPortal7 } from "react-dom";
|
|
16476
16554
|
|
|
16477
16555
|
// src/components/FunInput/FunTextAreaInput.tsx
|
|
@@ -16648,7 +16726,7 @@ function FunCheckoutHistoryHelp({
|
|
|
16648
16726
|
);
|
|
16649
16727
|
const [descriptionInput, setDescriptionInput] = useState33("");
|
|
16650
16728
|
const [errorMessage, setErrorMessage] = useState33();
|
|
16651
|
-
const isEmailInputValid =
|
|
16729
|
+
const isEmailInputValid = useMemo18(() => {
|
|
16652
16730
|
return validateEmailString(emailInput);
|
|
16653
16731
|
}, [emailInput]);
|
|
16654
16732
|
const [processStage, setProcessStage] = useState33(
|
|
@@ -16840,7 +16918,7 @@ import {
|
|
|
16840
16918
|
formatTimestamp as formatTimestamp2,
|
|
16841
16919
|
isTokenEquivalent as isTokenEquivalent3
|
|
16842
16920
|
} from "@funkit/utils";
|
|
16843
|
-
import React113, { useCallback as
|
|
16921
|
+
import React113, { useCallback as useCallback22, useMemo as useMemo19, useRef as useRef16, useState as useState34 } from "react";
|
|
16844
16922
|
import { createPortal as createPortal8 } from "react-dom";
|
|
16845
16923
|
|
|
16846
16924
|
// src/hooks/useReceiveAmountLabel.ts
|
|
@@ -16869,7 +16947,7 @@ function FunDirectExecutionHistoryDetail({
|
|
|
16869
16947
|
const bottomSectionRef = document.getElementById(bottomBarId);
|
|
16870
16948
|
const { checkoutItem } = useCheckoutContext();
|
|
16871
16949
|
const { beginCheckout } = useFunkitCheckout({});
|
|
16872
|
-
const handleNewCheckout =
|
|
16950
|
+
const handleNewCheckout = useCallback22(
|
|
16873
16951
|
(fromCheckout) => {
|
|
16874
16952
|
onClose({ isNewDeposit: true });
|
|
16875
16953
|
const historicalCheckout = fromCheckout.clientMetadata;
|
|
@@ -16889,7 +16967,7 @@ function FunDirectExecutionHistoryDetail({
|
|
|
16889
16967
|
]
|
|
16890
16968
|
);
|
|
16891
16969
|
const isWithdrawal = directExecution?.clientMetadata?.isWithdrawal;
|
|
16892
|
-
const buttonProps =
|
|
16970
|
+
const buttonProps = useMemo19(() => {
|
|
16893
16971
|
if (!isLoaded) {
|
|
16894
16972
|
return void 0;
|
|
16895
16973
|
}
|
|
@@ -17112,11 +17190,11 @@ function FunCheckoutHistoryContent({
|
|
|
17112
17190
|
}
|
|
17113
17191
|
|
|
17114
17192
|
// src/modals/CheckoutModal/CheckoutComplete/useLogCheckoutCompletion.ts
|
|
17115
|
-
import { useCallback as
|
|
17193
|
+
import { useCallback as useCallback23 } from "react";
|
|
17116
17194
|
function useLogCheckoutCompletion() {
|
|
17117
17195
|
const { latestQuote } = useQuoteContext();
|
|
17118
17196
|
const { checkoutItem } = useCheckoutContext();
|
|
17119
|
-
const logCheckoutCompletion =
|
|
17197
|
+
const logCheckoutCompletion = useCallback23(
|
|
17120
17198
|
(depositAddress) => {
|
|
17121
17199
|
if (depositAddress) {
|
|
17122
17200
|
logger.log("checkoutFundingCompleted", {
|
|
@@ -17212,7 +17290,7 @@ function CheckoutHelp({
|
|
|
17212
17290
|
}
|
|
17213
17291
|
|
|
17214
17292
|
// src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
|
|
17215
|
-
import React131, { useEffect as useEffect36, useMemo as
|
|
17293
|
+
import React131, { useEffect as useEffect36, useMemo as useMemo24, useState as useState43 } from "react";
|
|
17216
17294
|
import { createPortal as createPortal10 } from "react-dom";
|
|
17217
17295
|
|
|
17218
17296
|
// src/providers/UserPresenceContext.tsx
|
|
@@ -17253,7 +17331,7 @@ import { DirectExecutionType as DirectExecutionType2 } from "@funkit/api-base";
|
|
|
17253
17331
|
|
|
17254
17332
|
// src/components/FunInfoBanner/FunInfoBanner.tsx
|
|
17255
17333
|
import React119 from "react";
|
|
17256
|
-
import { FlagKey as
|
|
17334
|
+
import { FlagKey as FlagKey18, safeParseJson as safeParseJson5 } from "@funkit/utils";
|
|
17257
17335
|
|
|
17258
17336
|
// src/components/FunInfoBanner/EphemeralInfoBanner.tsx
|
|
17259
17337
|
import React118, { useState as useState36 } from "react";
|
|
@@ -17291,7 +17369,7 @@ var EphemeralInfoBanner = ({
|
|
|
17291
17369
|
|
|
17292
17370
|
// src/components/FunInfoBanner/FunInfoBanner.tsx
|
|
17293
17371
|
var FunInfoBanner = () => {
|
|
17294
|
-
const bannerJson = useFlag(
|
|
17372
|
+
const bannerJson = useFlag(FlagKey18.ShowInfoBanner);
|
|
17295
17373
|
const bannerData = safeParseJson5(bannerJson);
|
|
17296
17374
|
if (!bannerData || !bannerData.message) {
|
|
17297
17375
|
return null;
|
|
@@ -17309,12 +17387,12 @@ var FunInfoBanner = () => {
|
|
|
17309
17387
|
// src/components/FunTransactionSummary/PaymentAmountSummary.tsx
|
|
17310
17388
|
import {
|
|
17311
17389
|
formatCurrencyAndStringify as formatCurrencyAndStringify5,
|
|
17312
|
-
isTokenAddressEquivalent as
|
|
17390
|
+
isTokenAddressEquivalent as isTokenAddressEquivalent5,
|
|
17313
17391
|
isTokenEquivalent as isTokenEquivalent4
|
|
17314
17392
|
} from "@funkit/utils";
|
|
17315
17393
|
import NumberFlow from "@number-flow/react";
|
|
17316
17394
|
import { motion as motion7 } from "motion/react";
|
|
17317
|
-
import React121, { useMemo as
|
|
17395
|
+
import React121, { useMemo as useMemo21 } from "react";
|
|
17318
17396
|
|
|
17319
17397
|
// src/consts/design.ts
|
|
17320
17398
|
var mapFontLineHeightToNumberFlowHeight = {
|
|
@@ -17327,7 +17405,7 @@ var defaultTransition = "all 150ms cubic-bezier(0.3, 0, 0.06, 1)";
|
|
|
17327
17405
|
// src/components/FunAssetAvatar/FunAssetAvatar.tsx
|
|
17328
17406
|
import { isNotNullish as isNotNullish5 } from "@funkit/utils";
|
|
17329
17407
|
import clsx16 from "clsx";
|
|
17330
|
-
import React120, { useMemo as
|
|
17408
|
+
import React120, { useMemo as useMemo20 } from "react";
|
|
17331
17409
|
|
|
17332
17410
|
// src/components/FunAssetAvatar/FunAssetAvatar.css.ts
|
|
17333
17411
|
var chainContainerStyle = "uwrdc22 _1rsrm2f19 _1rsrm2fa _1rsrm2f4 _1rsrm2f4i";
|
|
@@ -17347,7 +17425,7 @@ function FunAssetAvatar({
|
|
|
17347
17425
|
largeChainIcon = false
|
|
17348
17426
|
}) {
|
|
17349
17427
|
const chainMetadata = chainMetadataById[Number.parseInt((chainId || "").toString())] || null;
|
|
17350
|
-
const finalAssetSrc =
|
|
17428
|
+
const finalAssetSrc = useMemo20(() => {
|
|
17351
17429
|
const normalizedTicker = assetTicker?.toUpperCase() || "";
|
|
17352
17430
|
const defaultSrc = ASSET_LOGO_SRCS[normalizedTicker];
|
|
17353
17431
|
if (prioritizeDefaults) {
|
|
@@ -17447,7 +17525,7 @@ function PaymentAmountSummary({
|
|
|
17447
17525
|
})
|
|
17448
17526
|
});
|
|
17449
17527
|
const sourceTokenAmount = quote?.finalPaymentTokenAmount ? Number.parseFloat(quote.finalPaymentTokenAmount) : void 0;
|
|
17450
|
-
const paymentTokenUsdAmount =
|
|
17528
|
+
const paymentTokenUsdAmount = useMemo21(() => {
|
|
17451
17529
|
if (!quote) {
|
|
17452
17530
|
return void 0;
|
|
17453
17531
|
}
|
|
@@ -17455,7 +17533,7 @@ function PaymentAmountSummary({
|
|
|
17455
17533
|
quote.baseQuote.estSubtotalUsd + Number.parseFloat(quote.finalPaymentFeeUsd) - Number.parseFloat(quote.finalSpreadUsd)
|
|
17456
17534
|
);
|
|
17457
17535
|
}, [quote]);
|
|
17458
|
-
const receiveTokenUsdAmount =
|
|
17536
|
+
const receiveTokenUsdAmount = useMemo21(() => {
|
|
17459
17537
|
if (!quote) {
|
|
17460
17538
|
return void 0;
|
|
17461
17539
|
}
|
|
@@ -17469,7 +17547,7 @@ function PaymentAmountSummary({
|
|
|
17469
17547
|
const sourceChainId = sourceAssetInfo?.chainId;
|
|
17470
17548
|
const areSameChains = sourceChainId === targetChainId;
|
|
17471
17549
|
const sourceIcon = sourceAssetInfo?.iconSrc ?? void 0;
|
|
17472
|
-
const isSameTokenAddress =
|
|
17550
|
+
const isSameTokenAddress = isTokenAddressEquivalent5({
|
|
17473
17551
|
firstTokenAddress: sourceTokenAddress,
|
|
17474
17552
|
secondTokenAddress: targetTokenAddress
|
|
17475
17553
|
});
|
|
@@ -17746,7 +17824,7 @@ var DirectExecutionBrokerageAndCardAlert = () => {
|
|
|
17746
17824
|
};
|
|
17747
17825
|
|
|
17748
17826
|
// src/modals/CheckoutModal/ConfirmationStep/DisclaimerText.tsx
|
|
17749
|
-
import React126, { useMemo as
|
|
17827
|
+
import React126, { useMemo as useMemo22 } from "react";
|
|
17750
17828
|
var DisclaimerText = ({
|
|
17751
17829
|
continueText,
|
|
17752
17830
|
isCardPayment,
|
|
@@ -17781,7 +17859,7 @@ var DisclaimerText = ({
|
|
|
17781
17859
|
), ", and the ", /* @__PURE__ */ React126.createElement(FunLinkButton, { href: "https://morpho.org/", inline: true, text: "terms" }), " applicable to third-party Morpho vaults", ".") : /* @__PURE__ */ React126.createElement(React126.Fragment, null, showCardDisclaimer && `${cardDisclaimer} `, "By clicking on ", continueText, ", you agree to our", " ", /* @__PURE__ */ React126.createElement(FunLinkButton, { href: FUN_TERMS_URL, inline: true, text: "terms" }), ".");
|
|
17782
17860
|
};
|
|
17783
17861
|
function useCardDisclaimer(checkoutItem, finalConvertedAssetName) {
|
|
17784
|
-
const cardDisclaimer =
|
|
17862
|
+
const cardDisclaimer = useMemo22(() => {
|
|
17785
17863
|
if (!checkoutItem || !finalConvertedAssetName) {
|
|
17786
17864
|
return null;
|
|
17787
17865
|
}
|
|
@@ -17826,11 +17904,11 @@ import { useState as useState38 } from "react";
|
|
|
17826
17904
|
import { useEffect as useEffect33, useState as useState37 } from "react";
|
|
17827
17905
|
|
|
17828
17906
|
// src/hooks/useCheckoutAccountBalanceTransfer.ts
|
|
17829
|
-
import { useCallback as
|
|
17907
|
+
import { useCallback as useCallback24 } from "react";
|
|
17830
17908
|
function useCheckoutAccountBalanceTransfer() {
|
|
17831
17909
|
const { checkoutItem } = useCheckoutContext();
|
|
17832
17910
|
const { funWallet, funWalletAuth } = useGeneralWallet();
|
|
17833
|
-
const generateCheckoutTransferOpItems =
|
|
17911
|
+
const generateCheckoutTransferOpItems = useCallback24(
|
|
17834
17912
|
async (toAddress, tokenAmount) => {
|
|
17835
17913
|
if (checkoutItem?.selectedSourceAssetInfo?.chainId) {
|
|
17836
17914
|
const newConfig = getFunkitEnvForCheckoutEstimation({
|
|
@@ -18040,7 +18118,7 @@ import React128, { useState as useState39 } from "react";
|
|
|
18040
18118
|
// src/modals/CheckoutModal/ConfirmationStep/useAccountBalanceTransfer.ts
|
|
18041
18119
|
import { getPaymasterDataForCheckoutSponsoredTransfer } from "@funkit/api-base";
|
|
18042
18120
|
import { ERC20_ABI, USDT_ABI } from "@funkit/core";
|
|
18043
|
-
import { useCallback as
|
|
18121
|
+
import { useCallback as useCallback25 } from "react";
|
|
18044
18122
|
import { useAccount as useAccount5, useSendTransaction, useWriteContract } from "wagmi";
|
|
18045
18123
|
|
|
18046
18124
|
// src/utils/isMainnetUsdt.ts
|
|
@@ -18064,7 +18142,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
|
|
|
18064
18142
|
const { sendTransactionAsync } = useSendTransaction();
|
|
18065
18143
|
const { cancelCheckout, checkoutItem } = useCheckoutContext();
|
|
18066
18144
|
const { latestQuote } = useQuoteContext();
|
|
18067
|
-
const handleWeb3AccountBalancePostCheckout =
|
|
18145
|
+
const handleWeb3AccountBalancePostCheckout = useCallback25(
|
|
18068
18146
|
async (depositAddress) => {
|
|
18069
18147
|
if (!latestQuote?.baseQuote.estTotalFromAmountBaseUnit) {
|
|
18070
18148
|
return;
|
|
@@ -18170,7 +18248,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
|
|
|
18170
18248
|
function useWeb2AccountBalancePostCheckout(apiKey) {
|
|
18171
18249
|
const { latestQuote } = useQuoteContext();
|
|
18172
18250
|
const { generateCheckoutTransferOpItems } = useCheckoutAccountBalanceTransfer();
|
|
18173
|
-
const handleWeb2AccountBalancePostCheckout =
|
|
18251
|
+
const handleWeb2AccountBalancePostCheckout = useCallback25(
|
|
18174
18252
|
async (depositAddress) => {
|
|
18175
18253
|
const { rFunWallet, rFunWalletAuth, transferOp, envConfig } = await generateCheckoutTransferOpItems(
|
|
18176
18254
|
depositAddress,
|
|
@@ -18219,7 +18297,7 @@ function useAccountBalancePostCheckout(setPostCheckoutStepMessage, apiKey) {
|
|
|
18219
18297
|
const { loginType } = useGeneralWallet();
|
|
18220
18298
|
const handleWeb2AccountBalancePostCheckout = useWeb2AccountBalancePostCheckout(apiKey);
|
|
18221
18299
|
const handleWeb3AccountBalancePostCheckout = useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage);
|
|
18222
|
-
const handleAccountBalancePostCheckout =
|
|
18300
|
+
const handleAccountBalancePostCheckout = useCallback25(
|
|
18223
18301
|
async (depositAddress) => {
|
|
18224
18302
|
if (loginType === "web2" /* Web2 */) {
|
|
18225
18303
|
await handleWeb2AccountBalancePostCheckout(depositAddress);
|
|
@@ -18370,15 +18448,15 @@ function usePostCheckout({
|
|
|
18370
18448
|
}
|
|
18371
18449
|
|
|
18372
18450
|
// src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
|
|
18373
|
-
import { useCallback as
|
|
18451
|
+
import { useCallback as useCallback28, useEffect as useEffect35, useMemo as useMemo23, useRef as useRef18, useState as useState42 } from "react";
|
|
18374
18452
|
|
|
18375
18453
|
// src/hooks/useCountdown.tsx
|
|
18376
18454
|
import React130 from "react";
|
|
18377
|
-
import { useCallback as
|
|
18455
|
+
import { useCallback as useCallback27, useState as useState41 } from "react";
|
|
18378
18456
|
|
|
18379
18457
|
// src/components/FunCountdown/FunCountdown.tsx
|
|
18380
18458
|
import { noop as noop7 } from "@funkit/utils";
|
|
18381
|
-
import React129, { useCallback as
|
|
18459
|
+
import React129, { useCallback as useCallback26, useEffect as useEffect34, useState as useState40 } from "react";
|
|
18382
18460
|
|
|
18383
18461
|
// src/components/FunCountdown/FunCountdown.css.ts
|
|
18384
18462
|
var backgroundRing = "_1t0bc111 _1rsrm2f1l4";
|
|
@@ -18414,7 +18492,7 @@ var FunCountdown = ({
|
|
|
18414
18492
|
const onCountdownEndedOnce = useEffectEvent(onCountdownEnded);
|
|
18415
18493
|
const onBeforeCountdownEndsOnce = useEffectEvent(onBeforeCountdownEnds);
|
|
18416
18494
|
const onCountdownLastSecondOnce = useEffectEvent(onCountdownLastSecond);
|
|
18417
|
-
const handleInterval =
|
|
18495
|
+
const handleInterval = useCallback26(() => {
|
|
18418
18496
|
if (isPaused) {
|
|
18419
18497
|
return;
|
|
18420
18498
|
}
|
|
@@ -18532,7 +18610,7 @@ function useCountdown({
|
|
|
18532
18610
|
}) {
|
|
18533
18611
|
const [countdownKey, setCountdownKey] = useState41(0);
|
|
18534
18612
|
const [isLastSecond, setIsLastSecond] = useState41(false);
|
|
18535
|
-
const restartCountdown =
|
|
18613
|
+
const restartCountdown = useCallback27(() => {
|
|
18536
18614
|
setIsLastSecond(false);
|
|
18537
18615
|
setCountdownKey((key) => key + 1);
|
|
18538
18616
|
}, []);
|
|
@@ -18587,7 +18665,7 @@ function useQuoteRefresh({
|
|
|
18587
18665
|
preloadedQuoteRef.current = data;
|
|
18588
18666
|
}
|
|
18589
18667
|
);
|
|
18590
|
-
const preloadQuote =
|
|
18668
|
+
const preloadQuote = useCallback28(() => {
|
|
18591
18669
|
if (!isSourceAssetConfirming) {
|
|
18592
18670
|
onSourceAssetConfirmed(true);
|
|
18593
18671
|
}
|
|
@@ -18601,7 +18679,7 @@ function useQuoteRefresh({
|
|
|
18601
18679
|
onBeforeCountdownEnds: preloadQuote,
|
|
18602
18680
|
onCountdownEnded: () => refreshQuote()
|
|
18603
18681
|
});
|
|
18604
|
-
const refreshQuote =
|
|
18682
|
+
const refreshQuote = useCallback28(
|
|
18605
18683
|
async (forceHardRefresh = false) => {
|
|
18606
18684
|
if (isOnHold) {
|
|
18607
18685
|
setIsPendingRefresh(true);
|
|
@@ -18633,7 +18711,7 @@ function useQuoteRefresh({
|
|
|
18633
18711
|
},
|
|
18634
18712
|
[isOnHold, restartCountdown, setCheckoutQuote, triggerAssetConfirm]
|
|
18635
18713
|
);
|
|
18636
|
-
const quoteError =
|
|
18714
|
+
const quoteError = useMemo23(() => {
|
|
18637
18715
|
if (quoteErrorMessage && !isQuoting) {
|
|
18638
18716
|
return {
|
|
18639
18717
|
message: quoteErrorMessage,
|
|
@@ -18771,7 +18849,7 @@ function ConfirmationStep({
|
|
|
18771
18849
|
refreshIntervalSeconds: directExecutionType === DirectExecutionType2.RELAY ? RELAY_ESTIMATE_REFRESH_INTERVAL_SEC : DEFAULT_ESTIMATE_REFRESH_INTERVAL_SEC
|
|
18772
18850
|
})
|
|
18773
18851
|
);
|
|
18774
|
-
const error =
|
|
18852
|
+
const error = useMemo24(() => {
|
|
18775
18853
|
if (!isInitialQuoting && moonpayAmountCheck?.isInvalid) {
|
|
18776
18854
|
return {
|
|
18777
18855
|
message: moonpayAmountCheck.message,
|
|
@@ -18786,7 +18864,7 @@ function ConfirmationStep({
|
|
|
18786
18864
|
quoteError,
|
|
18787
18865
|
isInitialQuoting
|
|
18788
18866
|
]);
|
|
18789
|
-
const stepMessage =
|
|
18867
|
+
const stepMessage = useMemo24(() => {
|
|
18790
18868
|
if (initialQuoteStep) {
|
|
18791
18869
|
return initialQuoteStep;
|
|
18792
18870
|
}
|
|
@@ -18843,7 +18921,7 @@ function ConfirmationStep({
|
|
|
18843
18921
|
const isStepLoading = isInitialQuoting || isContinuing || isRefreshing;
|
|
18844
18922
|
const uiCustomizations = funkitConfig.uiCustomizations?.confirmationScreen;
|
|
18845
18923
|
const customRecipient = checkoutItem?.initSettings.config.customRecipient;
|
|
18846
|
-
const showKatanaBridgeAlert =
|
|
18924
|
+
const showKatanaBridgeAlert = useMemo24(() => {
|
|
18847
18925
|
const relayQuoteMetadata = latestQuote?.baseQuote?.metadata;
|
|
18848
18926
|
if (!relayQuoteMetadata) {
|
|
18849
18927
|
return false;
|
|
@@ -18857,7 +18935,7 @@ function ConfirmationStep({
|
|
|
18857
18935
|
// https://fun-xyz.slack.com/archives/C08PVUDA1M2/p1752179735981389?thread_ts=1752176009.628309&cid=C08PVUDA1M2
|
|
18858
18936
|
swapImpact + appFeePercent > KATANA_BRIDGE_ALERT_THRESHOLD_PERCENT;
|
|
18859
18937
|
}, [funkitConfig.apiKey, latestQuote, checkoutItem]);
|
|
18860
|
-
const showDirectExecutionNotificationBanner =
|
|
18938
|
+
const showDirectExecutionNotificationBanner = useMemo24(() => {
|
|
18861
18939
|
const isRelayEnabled = checkoutItem !== null && getIsRelayEnabled({
|
|
18862
18940
|
fromChainId: checkoutItem.selectedSourceAssetInfo.chainId,
|
|
18863
18941
|
fromTokenAddress: checkoutItem.selectedSourceAssetInfo.address || "",
|
|
@@ -19109,7 +19187,7 @@ import { getMeldDefaultFiat } from "@funkit/api-base";
|
|
|
19109
19187
|
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
19110
19188
|
|
|
19111
19189
|
// src/hooks/queries/useMeldCryptoCurrencyCode.ts
|
|
19112
|
-
import { FlagKey as
|
|
19190
|
+
import { FlagKey as FlagKey19 } from "@funkit/utils";
|
|
19113
19191
|
import { arbitrum as arbitrum3, base as base6, polygon as polygon5 } from "viem/chains";
|
|
19114
19192
|
var ARB_USDC = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase();
|
|
19115
19193
|
var POLYGON_USDC = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359".toLowerCase();
|
|
@@ -19142,7 +19220,7 @@ function useMeldCryptoCurrencyCode() {
|
|
|
19142
19220
|
return mappedCurrency;
|
|
19143
19221
|
}
|
|
19144
19222
|
function useIsMeldEnabled() {
|
|
19145
|
-
const meldEnabled = useFlag(
|
|
19223
|
+
const meldEnabled = useFlag(FlagKey19.EnableMeldPayment);
|
|
19146
19224
|
const meldCurrencyCode = useMeldCryptoCurrencyCode();
|
|
19147
19225
|
return meldEnabled && !!meldCurrencyCode;
|
|
19148
19226
|
}
|
|
@@ -19276,13 +19354,13 @@ import {
|
|
|
19276
19354
|
MeldServiceProvider as MeldServiceProvider2
|
|
19277
19355
|
} from "@funkit/api-base";
|
|
19278
19356
|
import {
|
|
19279
|
-
FlagKey as
|
|
19357
|
+
FlagKey as FlagKey22,
|
|
19280
19358
|
formatCryptoAndStringify as formatCryptoAndStringify4,
|
|
19281
19359
|
formatCurrencyAndStringify as formatCurrencyAndStringify9,
|
|
19282
19360
|
isTokenEquivalent as isTokenEquivalent6,
|
|
19283
19361
|
round as round4
|
|
19284
19362
|
} from "@funkit/utils";
|
|
19285
|
-
import React145, { useMemo as
|
|
19363
|
+
import React145, { useMemo as useMemo26 } from "react";
|
|
19286
19364
|
|
|
19287
19365
|
// src/components/CurrencySelector/CurrencySelector.tsx
|
|
19288
19366
|
import React134 from "react";
|
|
@@ -19548,7 +19626,7 @@ var MeldProviderLabel = ({
|
|
|
19548
19626
|
};
|
|
19549
19627
|
|
|
19550
19628
|
// src/components/SourcePaymentMethodItem/SourcePaymentMethodItem.tsx
|
|
19551
|
-
import { FlagKey as
|
|
19629
|
+
import { FlagKey as FlagKey20 } from "@funkit/utils";
|
|
19552
19630
|
import clsx17 from "clsx";
|
|
19553
19631
|
import { useAnimate as useAnimate2 } from "motion/react";
|
|
19554
19632
|
import React139 from "react";
|
|
@@ -20153,8 +20231,8 @@ var SourcePaymentMethodItem = ({
|
|
|
20153
20231
|
icon: /* @__PURE__ */ React139.createElement(MasterCardPillIcon, { key: "mastercard", backdropColor })
|
|
20154
20232
|
}
|
|
20155
20233
|
];
|
|
20156
|
-
const isCardEnabled = useFlag(
|
|
20157
|
-
const isBrokerageEnabled = useFlag(
|
|
20234
|
+
const isCardEnabled = useFlag(FlagKey20.EnableCard);
|
|
20235
|
+
const isBrokerageEnabled = useFlag(FlagKey20.EnableBrokerage);
|
|
20158
20236
|
const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
|
|
20159
20237
|
if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isCardEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
|
|
20160
20238
|
return false;
|
|
@@ -20576,7 +20654,7 @@ import {
|
|
|
20576
20654
|
katanaChain
|
|
20577
20655
|
} from "@funkit/chains";
|
|
20578
20656
|
import { getTokenAddressBySymbolAndChainId as getTokenAddressBySymbolAndChainId2 } from "@funkit/core";
|
|
20579
|
-
import { useCallback as
|
|
20657
|
+
import { useCallback as useCallback29, useState as useState44 } from "react";
|
|
20580
20658
|
import { mainnet as mainnet7, mantle, zksync as zksync2 } from "viem/chains";
|
|
20581
20659
|
var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
|
|
20582
20660
|
if (!checkoutItem?.initSettings.config.targetChain) {
|
|
@@ -20637,7 +20715,7 @@ function useUpdateCardSourceAsset() {
|
|
|
20637
20715
|
const { checkoutItem, updateSourceAsset } = useCheckoutContext();
|
|
20638
20716
|
const { userIpInfo } = useFunkitUserIp();
|
|
20639
20717
|
const [isUpdating, setIsUpdating] = useState44(false);
|
|
20640
|
-
const onSelectCard =
|
|
20718
|
+
const onSelectCard = useCallback29(async () => {
|
|
20641
20719
|
setIsUpdating(true);
|
|
20642
20720
|
try {
|
|
20643
20721
|
const source = await pickSourceAssetForCard(checkoutItem, userIpInfo);
|
|
@@ -20760,7 +20838,7 @@ function InputAmountLayout({
|
|
|
20760
20838
|
}
|
|
20761
20839
|
|
|
20762
20840
|
// src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
|
|
20763
|
-
import { FlagKey as
|
|
20841
|
+
import { FlagKey as FlagKey21, clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify8 } from "@funkit/utils";
|
|
20764
20842
|
import React144 from "react";
|
|
20765
20843
|
var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
|
|
20766
20844
|
function deduplicateArray(arr) {
|
|
@@ -20768,7 +20846,7 @@ function deduplicateArray(arr) {
|
|
|
20768
20846
|
}
|
|
20769
20847
|
function useFiatAmountOptions(currency) {
|
|
20770
20848
|
const isMeldEnabled = useIsMeldEnabled();
|
|
20771
|
-
const currencyQuickOptionStr = useFlag(
|
|
20849
|
+
const currencyQuickOptionStr = useFlag(FlagKey21.MeldQuickOptions);
|
|
20772
20850
|
const currencyQuickOption = safeJSONParse(
|
|
20773
20851
|
currencyQuickOptionStr
|
|
20774
20852
|
);
|
|
@@ -20834,19 +20912,19 @@ var QuickOptions = ({
|
|
|
20834
20912
|
|
|
20835
20913
|
// src/modals/CheckoutModal/InputAmount/useAmountInput.ts
|
|
20836
20914
|
import {
|
|
20837
|
-
useCallback as
|
|
20915
|
+
useCallback as useCallback31,
|
|
20838
20916
|
useEffect as useEffect37,
|
|
20839
|
-
useMemo as
|
|
20917
|
+
useMemo as useMemo25,
|
|
20840
20918
|
useReducer as useReducer3,
|
|
20841
20919
|
useRef as useRef20,
|
|
20842
20920
|
useState as useState45
|
|
20843
20921
|
} from "react";
|
|
20844
20922
|
|
|
20845
20923
|
// src/hooks/useTextMeasurer.ts
|
|
20846
|
-
import { useCallback as
|
|
20924
|
+
import { useCallback as useCallback30, useRef as useRef19 } from "react";
|
|
20847
20925
|
function useTextMeasurer(inputRef) {
|
|
20848
20926
|
const canvasRef = useRef19(document.createElement("canvas"));
|
|
20849
|
-
const measureText =
|
|
20927
|
+
const measureText = useCallback30(
|
|
20850
20928
|
(text, fontSize) => {
|
|
20851
20929
|
if (!inputRef.current) {
|
|
20852
20930
|
return void 0;
|
|
@@ -21097,7 +21175,7 @@ var MAX_WIDTH = 310;
|
|
|
21097
21175
|
function useAmountInput(options) {
|
|
21098
21176
|
const isMeldEnabled = useIsMeldEnabled();
|
|
21099
21177
|
const [state, dispatch] = useReducer3(reduceState, options, initializeState);
|
|
21100
|
-
const derivedState =
|
|
21178
|
+
const derivedState = useMemo25(() => getDerivedState(state), [state]);
|
|
21101
21179
|
const inputRef = useRef20(null);
|
|
21102
21180
|
const { inputValue, locale } = state;
|
|
21103
21181
|
const { inputDecimals, inputPrefix, placeholder } = derivedState;
|
|
@@ -21132,7 +21210,7 @@ function useAmountInput(options) {
|
|
|
21132
21210
|
quickOptions
|
|
21133
21211
|
} = options;
|
|
21134
21212
|
const unitPrice = isStablecoin(checkoutConfig.targetAssetTicker) ? 1 : realUnitPrice;
|
|
21135
|
-
const dispatchAndGetNewState =
|
|
21213
|
+
const dispatchAndGetNewState = useCallback31(
|
|
21136
21214
|
(action) => {
|
|
21137
21215
|
dispatch(action);
|
|
21138
21216
|
return getDerivedState(reduceState(state, action));
|
|
@@ -21320,7 +21398,7 @@ function useAmountInput(options) {
|
|
|
21320
21398
|
return () => element2.removeEventListener("beforeinput", onBeforeInput2);
|
|
21321
21399
|
}
|
|
21322
21400
|
}, [inputDecimals, locale]);
|
|
21323
|
-
const onChange =
|
|
21401
|
+
const onChange = useCallback31(
|
|
21324
21402
|
(event) => {
|
|
21325
21403
|
dispatch({
|
|
21326
21404
|
type: "setInputValue",
|
|
@@ -21355,7 +21433,7 @@ function useAmountInput(options) {
|
|
|
21355
21433
|
});
|
|
21356
21434
|
}
|
|
21357
21435
|
}, [defaultAmount]);
|
|
21358
|
-
const setFiatAmount =
|
|
21436
|
+
const setFiatAmount = useCallback31(
|
|
21359
21437
|
(fiatAmount) => {
|
|
21360
21438
|
const newState = dispatchAndGetNewState({
|
|
21361
21439
|
type: "setFiatAmount",
|
|
@@ -21367,7 +21445,7 @@ function useAmountInput(options) {
|
|
|
21367
21445
|
},
|
|
21368
21446
|
[dispatchAndGetNewState, unitPrice]
|
|
21369
21447
|
);
|
|
21370
|
-
const toggleInputInFiat =
|
|
21448
|
+
const toggleInputInFiat = useCallback31(() => {
|
|
21371
21449
|
dispatch({ type: "toggleInputInFiat" });
|
|
21372
21450
|
inputRef.current?.focus();
|
|
21373
21451
|
}, []);
|
|
@@ -21433,7 +21511,7 @@ function InputAmountLoaded({
|
|
|
21433
21511
|
defaultFiatCurrency,
|
|
21434
21512
|
textCustomizations
|
|
21435
21513
|
}) {
|
|
21436
|
-
const maxCheckoutUsdString = useFlag(
|
|
21514
|
+
const maxCheckoutUsdString = useFlag(FlagKey22.MaxCheckoutUsd);
|
|
21437
21515
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
21438
21516
|
const { paymentMethod } = modalState.paymentMethodInfo;
|
|
21439
21517
|
const { quote: manuallySelectedQuote } = modalState;
|
|
@@ -21493,7 +21571,7 @@ function InputAmountLoaded({
|
|
|
21493
21571
|
selectedQuote,
|
|
21494
21572
|
isSelectedQuoteUnavailable
|
|
21495
21573
|
} = useMeld(manuallySelectedQuote, fiatAmount, fiatCurrency);
|
|
21496
|
-
const error =
|
|
21574
|
+
const error = useMemo26(() => {
|
|
21497
21575
|
if (isCardCheckout) {
|
|
21498
21576
|
if (isSelectedQuoteUnavailable) {
|
|
21499
21577
|
return {
|
|
@@ -21778,7 +21856,7 @@ function YouPayYouReceiveWrapper({
|
|
|
21778
21856
|
|
|
21779
21857
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoading.tsx
|
|
21780
21858
|
import { formatCryptoAndStringify as formatCryptoAndStringify5 } from "@funkit/utils";
|
|
21781
|
-
import React146, { useMemo as
|
|
21859
|
+
import React146, { useMemo as useMemo27 } from "react";
|
|
21782
21860
|
function InputAmountLoading({
|
|
21783
21861
|
modalState,
|
|
21784
21862
|
sourceHoldingError,
|
|
@@ -21790,7 +21868,7 @@ function InputAmountLoading({
|
|
|
21790
21868
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
21791
21869
|
const targetAssetAmount = checkoutItem?.initSettings.config.targetAssetAmount;
|
|
21792
21870
|
const targetAssetTicker = checkoutItem?.initSettings.config.targetAssetTicker;
|
|
21793
|
-
const error =
|
|
21871
|
+
const error = useMemo27(() => {
|
|
21794
21872
|
if (sourceHoldingError) {
|
|
21795
21873
|
return {
|
|
21796
21874
|
message: /* @__PURE__ */ React146.createElement("div", null, "Unable to retrieve your account balance. Please try re-linking your account.", " "),
|
|
@@ -21870,7 +21948,7 @@ function InputAmountLoading({
|
|
|
21870
21948
|
}
|
|
21871
21949
|
|
|
21872
21950
|
// src/modals/CheckoutModal/InputAmount/useAvailableBalanceForCheckout.ts
|
|
21873
|
-
import { useMemo as
|
|
21951
|
+
import { useMemo as useMemo28 } from "react";
|
|
21874
21952
|
function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetChainId, assetSymbol) {
|
|
21875
21953
|
const { data: walletAssetHoldings, isLoading: isLoadingWalletAssetHoldings } = useWalletAssetHoldings(targetChainId);
|
|
21876
21954
|
const holdings = {
|
|
@@ -21880,7 +21958,7 @@ function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetC
|
|
|
21880
21958
|
["token_transfer" /* TOKEN_TRANSFER */]: null,
|
|
21881
21959
|
["virtual_bank" /* VIRTUAL_BANK */]: null
|
|
21882
21960
|
}[paymentMethodInfo.paymentMethod];
|
|
21883
|
-
const holdingItem =
|
|
21961
|
+
const holdingItem = useMemo28(() => {
|
|
21884
21962
|
if (!assetSymbol || !holdings) {
|
|
21885
21963
|
return;
|
|
21886
21964
|
}
|
|
@@ -22003,14 +22081,14 @@ import { mainnet as mainnet8, polygon as polygon6 } from "viem/chains";
|
|
|
22003
22081
|
var ASSETS_LOW_VALUE_THRESHOLD2 = 0.1;
|
|
22004
22082
|
|
|
22005
22083
|
// src/hooks/usePaymentSources.ts
|
|
22006
|
-
import { FlagKey as
|
|
22084
|
+
import { FlagKey as FlagKey23, isNotNullish as isNotNullish7 } from "@funkit/utils";
|
|
22007
22085
|
function usePaymentMethodEnablement({
|
|
22008
22086
|
checkoutConfig
|
|
22009
22087
|
}) {
|
|
22010
22088
|
const { apiKey } = useFunkitConfig();
|
|
22011
|
-
const isTokenTransferFlagEnabled = useFlag(
|
|
22089
|
+
const isTokenTransferFlagEnabled = useFlag(FlagKey23.EnableTokenTransfer);
|
|
22012
22090
|
const isFiatFlagEnabled = useFiatEnabled();
|
|
22013
|
-
const isCardFlagEnabled = useFlag(
|
|
22091
|
+
const isCardFlagEnabled = useFlag(FlagKey23.EnableCard);
|
|
22014
22092
|
const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
|
|
22015
22093
|
const isUsKatanaUser = useIsUsKatanaUser();
|
|
22016
22094
|
const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
|
|
@@ -22023,11 +22101,12 @@ function usePaymentMethodEnablement({
|
|
|
22023
22101
|
};
|
|
22024
22102
|
}
|
|
22025
22103
|
var usePaymentSources = (paymentMethodInfo, targetChainId, checkoutConfig) => {
|
|
22026
|
-
const {
|
|
22104
|
+
const { userInfo, walletAddress } = useGeneralWallet();
|
|
22027
22105
|
const { data: allFiatAccounts } = useVirtualFiatAccounts();
|
|
22028
22106
|
const matchingFiatAccount = useMatchingVirtualFiatAccount(allFiatAccounts);
|
|
22029
22107
|
const { hasUsableBalance } = useWalletAssetHoldings(targetChainId);
|
|
22030
22108
|
const { apiKey } = useFunkitConfig();
|
|
22109
|
+
const isConnected = userInfo.isConnected;
|
|
22031
22110
|
const { isFiatEnabled, isTokenTransferEnabled, isCardEnabled } = usePaymentMethodEnablement({ checkoutConfig });
|
|
22032
22111
|
const accountPaymentMethodInfo = createPaymentMethodInfo({
|
|
22033
22112
|
paymentMethod: "balance" /* ACCOUNT_BALANCE */,
|
|
@@ -22039,17 +22118,17 @@ var usePaymentSources = (paymentMethodInfo, targetChainId, checkoutConfig) => {
|
|
|
22039
22118
|
bridgeCustomer: allFiatAccounts.bridgeCustomer
|
|
22040
22119
|
}) : null;
|
|
22041
22120
|
const showBalanceOption = isKatanaCustomer(apiKey) || hasUsableBalance;
|
|
22042
|
-
const connectedAccountInfo = paymentMethodInfo?.paymentMethod !== "balance" /* ACCOUNT_BALANCE */ &&
|
|
22121
|
+
const connectedAccountInfo = paymentMethodInfo?.paymentMethod !== "balance" /* ACCOUNT_BALANCE */ && isConnected && showBalanceOption ? accountPaymentMethodInfo : null;
|
|
22043
22122
|
const connected = [
|
|
22044
22123
|
paymentMethodInfo,
|
|
22045
22124
|
connectedAccountInfo,
|
|
22046
22125
|
virtualBankPaymentMethodInfo
|
|
22047
22126
|
].filter(isNotNullish7);
|
|
22048
|
-
const ignoreFallback =
|
|
22127
|
+
const ignoreFallback = isConnected && !hasUsableBalance;
|
|
22049
22128
|
const fallback2 = connected.length === 0 && !ignoreFallback ? isTokenTransferEnabled ? ["token_transfer" /* TOKEN_TRANSFER */] : isCardEnabled ? ["card" /* CARD */] : ["balance" /* ACCOUNT_BALANCE */] : [];
|
|
22050
22129
|
const isTokenInNewSources = !fallback2.includes("token_transfer" /* TOKEN_TRANSFER */) && isTokenTransferEnabled;
|
|
22051
|
-
const isWalletInNewSources = !
|
|
22052
|
-
const isBankInNewSources = !matchingFiatAccount &&
|
|
22130
|
+
const isWalletInNewSources = !isConnected;
|
|
22131
|
+
const isBankInNewSources = !matchingFiatAccount && isConnected && isFiatEnabled;
|
|
22053
22132
|
const newSources = [
|
|
22054
22133
|
isTokenInNewSources && "token_transfer" /* TOKEN_TRANSFER */,
|
|
22055
22134
|
!fallback2.includes("card" /* CARD */) && isCardEnabled && "card" /* CARD */,
|
|
@@ -22303,7 +22382,7 @@ function LoadingAccount({
|
|
|
22303
22382
|
modalState,
|
|
22304
22383
|
onNext
|
|
22305
22384
|
}) {
|
|
22306
|
-
const { walletAddress } = useGeneralWallet();
|
|
22385
|
+
const { walletAddress, userInfo } = useGeneralWallet();
|
|
22307
22386
|
const { apiKey } = useFunkitConfig();
|
|
22308
22387
|
const { targetChainId, isDefiMode } = modalState;
|
|
22309
22388
|
const { isLoading: isFetchingAssets, walletAssets } = useWalletAssets();
|
|
@@ -22327,7 +22406,7 @@ function LoadingAccount({
|
|
|
22327
22406
|
if (isLoadingFlags || isLoadingFiat || !checkoutConfig) {
|
|
22328
22407
|
return;
|
|
22329
22408
|
}
|
|
22330
|
-
if (startsOnSelectAssetStep) {
|
|
22409
|
+
if (startsOnSelectAssetStep && userInfo.isConnected) {
|
|
22331
22410
|
const paymentMethodInfo = createPaymentMethodInfo({
|
|
22332
22411
|
paymentMethod: "balance" /* ACCOUNT_BALANCE */,
|
|
22333
22412
|
walletAddress
|
|
@@ -22379,14 +22458,15 @@ function LoadingAccount({
|
|
|
22379
22458
|
targetChainId,
|
|
22380
22459
|
onNext,
|
|
22381
22460
|
updateSelectedPaymentMethodInfo,
|
|
22382
|
-
checkoutConfig
|
|
22461
|
+
checkoutConfig,
|
|
22462
|
+
userInfo.isConnected
|
|
22383
22463
|
]);
|
|
22384
22464
|
return startsOnConfirmationStep ? /* @__PURE__ */ React150.createElement(ConfirmationStepLoading, null) : /* @__PURE__ */ React150.createElement(FunAssetLoading, { count: 5 });
|
|
22385
22465
|
}
|
|
22386
22466
|
|
|
22387
22467
|
// src/modals/CheckoutModal/MeldCurrencySelect/MeldCurrencySelect.tsx
|
|
22388
22468
|
import clsx18 from "clsx";
|
|
22389
|
-
import React151, { useMemo as
|
|
22469
|
+
import React151, { useMemo as useMemo29, useState as useState46 } from "react";
|
|
22390
22470
|
|
|
22391
22471
|
// src/css/scrollStyles.css.ts
|
|
22392
22472
|
var hideScrollBar = "_163ehmk0";
|
|
@@ -22442,7 +22522,7 @@ function MeldCurrencySelect({
|
|
|
22442
22522
|
const [selectedCurrency, setSelectedCurrency] = useState46(
|
|
22443
22523
|
defaultCurrency
|
|
22444
22524
|
);
|
|
22445
|
-
const filteredOptions =
|
|
22525
|
+
const filteredOptions = useMemo29(() => {
|
|
22446
22526
|
const newOptions = data?.filter(
|
|
22447
22527
|
({ name, currencyCode }) => currencyCode.toLowerCase().includes(query.toLowerCase()) || name.toLowerCase().includes(query.toLowerCase())
|
|
22448
22528
|
) ?? [];
|
|
@@ -22578,7 +22658,7 @@ function MeldQuotes({
|
|
|
22578
22658
|
}
|
|
22579
22659
|
|
|
22580
22660
|
// src/modals/CheckoutModal/MoonpaySetup.tsx
|
|
22581
|
-
import React154, { useCallback as
|
|
22661
|
+
import React154, { useCallback as useCallback32, useMemo as useMemo31, useState as useState48 } from "react";
|
|
22582
22662
|
|
|
22583
22663
|
// src/components/FunPayments/FunPaymentMoonpayType.css.ts
|
|
22584
22664
|
var mpClass = "_1kmpeyf0";
|
|
@@ -22587,7 +22667,7 @@ var stretchStyle = "_1kmpeyf1";
|
|
|
22587
22667
|
// src/components/FunPayments/FunPaymentMoonpayType.tsx
|
|
22588
22668
|
import { getMoonpayUrlSignature } from "@funkit/api-base";
|
|
22589
22669
|
import { colorToHex } from "@funkit/utils";
|
|
22590
|
-
import React153, { Fragment, useEffect as useEffect40, useMemo as
|
|
22670
|
+
import React153, { Fragment, useEffect as useEffect40, useMemo as useMemo30, useState as useState47 } from "react";
|
|
22591
22671
|
var LazyMoonPayBuyWidget = (props) => {
|
|
22592
22672
|
const [MoonPayBuyWidget, setMoonPayBuyWidget] = useState47(null);
|
|
22593
22673
|
useEffect40(() => {
|
|
@@ -22618,7 +22698,7 @@ function FunPaymentMoonpayType({
|
|
|
22618
22698
|
const isSandboxMode = useIsFunkitSandboxMode();
|
|
22619
22699
|
const funkitConfig = useFunkitConfig();
|
|
22620
22700
|
const { userInfo } = useGeneralWallet();
|
|
22621
|
-
const currencyCode =
|
|
22701
|
+
const currencyCode = useMemo30(() => {
|
|
22622
22702
|
return generateMoonpayCurrencyCode(depositToken, depositTokenChainId);
|
|
22623
22703
|
}, [depositToken, depositTokenChainId]);
|
|
22624
22704
|
const depositTokenAmountStringFormatted = formatTokenAmountForMoonpay(
|
|
@@ -22641,7 +22721,7 @@ function FunPaymentMoonpayType({
|
|
|
22641
22721
|
});
|
|
22642
22722
|
return signature || "";
|
|
22643
22723
|
};
|
|
22644
|
-
const moonpayButtonColor =
|
|
22724
|
+
const moonpayButtonColor = useMemo30(() => {
|
|
22645
22725
|
const primaryButtonHex = colorToHex(activeTheme.colors.buttonPrimary);
|
|
22646
22726
|
if (["#FFF", "#FFFF", "#FFFFFF", "#FFFFFFFF"].includes(primaryButtonHex)) {
|
|
22647
22727
|
return void 0;
|
|
@@ -22699,12 +22779,12 @@ function MoonpaySetup({
|
|
|
22699
22779
|
const { paymentAddress, token, tokenChainId, depositAmount } = modalState;
|
|
22700
22780
|
const [isSupportedRegion, setIsSupportedRegion] = useState48(true);
|
|
22701
22781
|
const [isContinueEnabled, setIsContinueEnabled] = useState48(false);
|
|
22702
|
-
const handleOnCompleted =
|
|
22782
|
+
const handleOnCompleted = useCallback32(() => {
|
|
22703
22783
|
onNext({
|
|
22704
22784
|
depositAddress: paymentAddress
|
|
22705
22785
|
});
|
|
22706
22786
|
}, [onNext, paymentAddress]);
|
|
22707
|
-
const MoonpayWidget =
|
|
22787
|
+
const MoonpayWidget = useMemo31(() => {
|
|
22708
22788
|
return /* @__PURE__ */ React154.createElement(
|
|
22709
22789
|
FunPaymentMoonpayType,
|
|
22710
22790
|
{
|
|
@@ -22735,7 +22815,7 @@ function MoonpaySetup({
|
|
|
22735
22815
|
// src/modals/CheckoutModal/SelectAsset.tsx
|
|
22736
22816
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST2 } from "@funkit/chains";
|
|
22737
22817
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent7 } from "@funkit/utils";
|
|
22738
|
-
import React157, { useEffect as useEffect41, useMemo as
|
|
22818
|
+
import React157, { useEffect as useEffect41, useMemo as useMemo33, useState as useState49 } from "react";
|
|
22739
22819
|
import { createPortal as createPortal14 } from "react-dom";
|
|
22740
22820
|
|
|
22741
22821
|
// src/components/Dropdown/ReceiveTokenDropdown.tsx
|
|
@@ -22831,13 +22911,13 @@ var ReceiveTokenDropdown = ({
|
|
|
22831
22911
|
|
|
22832
22912
|
// src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
|
|
22833
22913
|
import React156 from "react";
|
|
22834
|
-
import { FlagKey as
|
|
22914
|
+
import { FlagKey as FlagKey24, safeParseJson as safeParseJson6 } from "@funkit/utils";
|
|
22835
22915
|
var NewTokenDepositAlert = ({
|
|
22836
22916
|
onClick
|
|
22837
22917
|
}) => {
|
|
22838
|
-
const alertJson = useFlag(
|
|
22918
|
+
const alertJson = useFlag(FlagKey24.NewTokenAssetSelectionBanner);
|
|
22839
22919
|
const alertData = safeParseJson6(alertJson);
|
|
22840
|
-
const isTokenTransferEnabled = useFlag(
|
|
22920
|
+
const isTokenTransferEnabled = useFlag(FlagKey24.EnableTokenTransfer);
|
|
22841
22921
|
if (!alertData || !isTokenTransferEnabled) {
|
|
22842
22922
|
return null;
|
|
22843
22923
|
}
|
|
@@ -22865,7 +22945,7 @@ var NewTokenDepositAlert = ({
|
|
|
22865
22945
|
// src/hooks/useAllowedAssets.ts
|
|
22866
22946
|
import { getAllowedAssets } from "@funkit/api-base";
|
|
22867
22947
|
import { useQuery as useQuery17 } from "@tanstack/react-query";
|
|
22868
|
-
import { useCallback as
|
|
22948
|
+
import { useCallback as useCallback33, useMemo as useMemo32 } from "react";
|
|
22869
22949
|
function useAllowedAssets() {
|
|
22870
22950
|
const { apiKey } = useFunkitConfig();
|
|
22871
22951
|
const { checkoutItem } = useCheckoutContext();
|
|
@@ -22879,7 +22959,7 @@ function useAllowedAssets() {
|
|
|
22879
22959
|
staleTime: 5 * 60 * 1e3,
|
|
22880
22960
|
gcTime: Number.POSITIVE_INFINITY
|
|
22881
22961
|
});
|
|
22882
|
-
const tokens =
|
|
22962
|
+
const tokens = useMemo32(() => {
|
|
22883
22963
|
if (!allowedAssets) {
|
|
22884
22964
|
return {};
|
|
22885
22965
|
}
|
|
@@ -22890,7 +22970,7 @@ function useAllowedAssets() {
|
|
|
22890
22970
|
}
|
|
22891
22971
|
return ret;
|
|
22892
22972
|
}, [allowedAssets]);
|
|
22893
|
-
const isAllowed =
|
|
22973
|
+
const isAllowed = useCallback33(
|
|
22894
22974
|
(chainId, tokenAddress) => {
|
|
22895
22975
|
const disabledByCustomerList = checkoutItem?.initSettings.config.disabledSourceTokens?.some(
|
|
22896
22976
|
(token) => {
|
|
@@ -22956,7 +23036,7 @@ function useEnrichedAccountHoldings({
|
|
|
22956
23036
|
}) {
|
|
22957
23037
|
const { isAllowed, isLoading } = useAllowedAssets();
|
|
22958
23038
|
const { loginType, walletAddress } = useGeneralWallet();
|
|
22959
|
-
const enrichedAccountHoldings =
|
|
23039
|
+
const enrichedAccountHoldings = useMemo33(() => {
|
|
22960
23040
|
if (!checkoutConfig) {
|
|
22961
23041
|
return [];
|
|
22962
23042
|
}
|
|
@@ -22996,7 +23076,7 @@ function useAssetOptions({
|
|
|
22996
23076
|
chainId,
|
|
22997
23077
|
dynamicTargetAssetCandidates
|
|
22998
23078
|
}) {
|
|
22999
|
-
const assetOptions =
|
|
23079
|
+
const assetOptions = useMemo33(() => {
|
|
23000
23080
|
return enrichedAccountHoldings.filter(
|
|
23001
23081
|
({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
|
|
23002
23082
|
).map(({ asset, usableForCheckout }) => {
|
|
@@ -23068,7 +23148,7 @@ function useScrollToSelectedAsset(selectedChainTokenSymbol) {
|
|
|
23068
23148
|
}
|
|
23069
23149
|
function useComputeDefault(checkoutConfig, accountHoldings) {
|
|
23070
23150
|
const candidates = checkoutConfig?.dynamicTargetAssetCandidates;
|
|
23071
|
-
const defaultTargetAsset =
|
|
23151
|
+
const defaultTargetAsset = useMemo33(() => {
|
|
23072
23152
|
if (!candidates || candidates.length <= 1) {
|
|
23073
23153
|
return {
|
|
23074
23154
|
tokenAddress: checkoutConfig?.targetAsset || "0x",
|
|
@@ -23082,7 +23162,7 @@ function useComputeDefault(checkoutConfig, accountHoldings) {
|
|
|
23082
23162
|
(token) => token.tokenSymbol === checkoutConfig?.targetAssetTicker
|
|
23083
23163
|
) ?? candidates.find((token) => token.isDefault) ?? candidates[0];
|
|
23084
23164
|
}, [candidates, checkoutConfig]);
|
|
23085
|
-
const defaultTokenSymbols =
|
|
23165
|
+
const defaultTokenSymbols = useMemo33(() => {
|
|
23086
23166
|
if (!checkoutConfig) {
|
|
23087
23167
|
return [];
|
|
23088
23168
|
}
|
|
@@ -23175,7 +23255,7 @@ function AccountSelectAsset({
|
|
|
23175
23255
|
handleTargetAssetUpdate(tokenItem);
|
|
23176
23256
|
onFinish();
|
|
23177
23257
|
});
|
|
23178
|
-
const selectedChainTokenSymbol =
|
|
23258
|
+
const selectedChainTokenSymbol = useMemo33(() => {
|
|
23179
23259
|
if (explicitlySelectedChainTokenSymbol) {
|
|
23180
23260
|
const assetExists = assetOptions.find(
|
|
23181
23261
|
({ asset }) => asset.chainSymbolKey === explicitlySelectedChainTokenSymbol
|
|
@@ -23425,7 +23505,7 @@ function SelectAsset({
|
|
|
23425
23505
|
|
|
23426
23506
|
// src/modals/CheckoutModal/SourceChange/SourceChange.tsx
|
|
23427
23507
|
import { BridgeCustomerStatus as BridgeCustomerStatus6, MeldServiceProvider as MeldServiceProvider4 } from "@funkit/api-base";
|
|
23428
|
-
import React159, { useCallback as
|
|
23508
|
+
import React159, { useCallback as useCallback34, useEffect as useEffect42, useState as useState50 } from "react";
|
|
23429
23509
|
import { createPortal as createPortal15 } from "react-dom";
|
|
23430
23510
|
|
|
23431
23511
|
// src/modals/CheckoutModal/SourceChange/DefiPurchaseSection.tsx
|
|
@@ -23559,7 +23639,7 @@ function PayPal() {
|
|
|
23559
23639
|
const isMeldEnabled = useIsMeldEnabled();
|
|
23560
23640
|
const { checkoutItem } = useCheckoutContext();
|
|
23561
23641
|
const isPaypalReady = false;
|
|
23562
|
-
const onClick =
|
|
23642
|
+
const onClick = useCallback34(() => {
|
|
23563
23643
|
if (isMeldEnabled && isPaypalReady) {
|
|
23564
23644
|
openMeldPopup(() => mutateAsync(MeldServiceProvider4.PAYPAL));
|
|
23565
23645
|
} else {
|
|
@@ -23773,13 +23853,13 @@ import { createPortal as createPortal16 } from "react-dom";
|
|
|
23773
23853
|
|
|
23774
23854
|
// src/components/CopyAddress/CopyInputDisplayedAddress.tsx
|
|
23775
23855
|
import { truncateMiddleOfAddress } from "@funkit/utils";
|
|
23776
|
-
import React160, { useCallback as
|
|
23856
|
+
import React160, { useCallback as useCallback36, useState as useState52 } from "react";
|
|
23777
23857
|
|
|
23778
23858
|
// src/hooks/useCopyToClipboard.ts
|
|
23779
|
-
import { useCallback as
|
|
23859
|
+
import { useCallback as useCallback35, useEffect as useEffect43, useState as useState51 } from "react";
|
|
23780
23860
|
var useCopyToClipboard = (text, delay = 1500) => {
|
|
23781
23861
|
const [isCopied, setCopied] = useState51(false);
|
|
23782
|
-
const handleCopy =
|
|
23862
|
+
const handleCopy = useCallback35(() => {
|
|
23783
23863
|
if (!text) {
|
|
23784
23864
|
return;
|
|
23785
23865
|
}
|
|
@@ -23819,7 +23899,7 @@ function CopyInputDisplayedAddress({
|
|
|
23819
23899
|
const { handleCopy } = useCopyToClipboard(address);
|
|
23820
23900
|
const [isActive, setIsActive] = useState52(null);
|
|
23821
23901
|
const displayAddress = truncateAddress ? truncateMiddleOfAddress(address, 40, 24, 8) : address;
|
|
23822
|
-
const handleClick =
|
|
23902
|
+
const handleClick = useCallback36(() => {
|
|
23823
23903
|
if (isActive) {
|
|
23824
23904
|
return;
|
|
23825
23905
|
}
|
|
@@ -23859,12 +23939,12 @@ function CopyInputDisplayedAddress({
|
|
|
23859
23939
|
}
|
|
23860
23940
|
|
|
23861
23941
|
// src/components/FunInfoBanner/ChainInfoBanners.tsx
|
|
23862
|
-
import { FlagKey as
|
|
23942
|
+
import { FlagKey as FlagKey25, safeParseJson as safeParseJson7 } from "@funkit/utils";
|
|
23863
23943
|
import React161 from "react";
|
|
23864
23944
|
var ChainInfoBanners = ({
|
|
23865
23945
|
chainId
|
|
23866
23946
|
}) => {
|
|
23867
|
-
const chainInfoBanners = useFlag(
|
|
23947
|
+
const chainInfoBanners = useFlag(FlagKey25.ChainInfoBanners);
|
|
23868
23948
|
const chainInfoBannersData = safeParseJson7(chainInfoBanners) ?? {};
|
|
23869
23949
|
try {
|
|
23870
23950
|
const chainBanners = chainInfoBannersData[chainId] ?? [];
|
|
@@ -23908,7 +23988,7 @@ var LightningBoltIcon = ({ size = 16 }) => /* @__PURE__ */ React162.createElemen
|
|
|
23908
23988
|
|
|
23909
23989
|
// src/components/QRCode/QRCode.tsx
|
|
23910
23990
|
import QRCodeUtil from "qrcode";
|
|
23911
|
-
import React163, { useMemo as
|
|
23991
|
+
import React163, { useMemo as useMemo34 } from "react";
|
|
23912
23992
|
var generateMatrix = (value, errorCorrectionLevel) => {
|
|
23913
23993
|
const { data } = QRCodeUtil.create(value, { errorCorrectionLevel }).modules;
|
|
23914
23994
|
const sqrt = Math.sqrt(data.length);
|
|
@@ -23936,7 +24016,7 @@ function QRCode({
|
|
|
23936
24016
|
}) {
|
|
23937
24017
|
const { activeTheme } = useActiveTheme();
|
|
23938
24018
|
const size = sizeProp - Number.parseInt(outsidePadding, 10) * 2;
|
|
23939
|
-
const dots =
|
|
24019
|
+
const dots = useMemo34(() => {
|
|
23940
24020
|
const dots2 = [];
|
|
23941
24021
|
const matrix = generateMatrix(uri, ecl);
|
|
23942
24022
|
const cellSize = size / matrix.length;
|
|
@@ -24480,8 +24560,8 @@ var TransferTokenDetails = ({
|
|
|
24480
24560
|
|
|
24481
24561
|
// src/hooks/useTokenTransfer.ts
|
|
24482
24562
|
import { bitcoinChain as bitcoinChain3, solanaChain as solanaChain4 } from "@funkit/chains";
|
|
24483
|
-
import { FlagKey as
|
|
24484
|
-
import { useMemo as
|
|
24563
|
+
import { FlagKey as FlagKey26 } from "@funkit/utils";
|
|
24564
|
+
import { useMemo as useMemo35 } from "react";
|
|
24485
24565
|
import { arbitrum as arbitrum4, base as base7, mainnet as mainnet9, optimism, polygon as polygon7 } from "viem/chains";
|
|
24486
24566
|
|
|
24487
24567
|
// src/utils/transfer.ts
|
|
@@ -24504,7 +24584,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
24504
24584
|
const { apiKey } = useFunkitConfig();
|
|
24505
24585
|
const { checkoutItem } = useCheckoutContext();
|
|
24506
24586
|
const enableUniversal = useFlag(
|
|
24507
|
-
|
|
24587
|
+
FlagKey26.EnableTokenTransferUniversalDepositAddress,
|
|
24508
24588
|
false
|
|
24509
24589
|
);
|
|
24510
24590
|
const estPriceImpact = usePriceImpactEstimation(
|
|
@@ -24556,7 +24636,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
24556
24636
|
};
|
|
24557
24637
|
var useMinTransferLimits = () => {
|
|
24558
24638
|
const { userIpInfo } = useFunkitUserIp();
|
|
24559
|
-
const minTransferValueJsonString = useFlag(
|
|
24639
|
+
const minTransferValueJsonString = useFlag(FlagKey26.MinTokenTransferValue);
|
|
24560
24640
|
const minTransferValue = safeJSONParse(
|
|
24561
24641
|
minTransferValueJsonString
|
|
24562
24642
|
);
|
|
@@ -24578,7 +24658,7 @@ var useMinTransferValue = (selectedChainId) => {
|
|
|
24578
24658
|
};
|
|
24579
24659
|
var useMinTransferValues = (chainIds) => {
|
|
24580
24660
|
const limits = useMinTransferLimits();
|
|
24581
|
-
return
|
|
24661
|
+
return useMemo35(() => {
|
|
24582
24662
|
return chainIds.reduce(
|
|
24583
24663
|
(acc, id) => {
|
|
24584
24664
|
const limit = getMinTransferValueForChain(id, limits);
|
|
@@ -25300,9 +25380,9 @@ var FiatAccountDetail = {
|
|
|
25300
25380
|
|
|
25301
25381
|
// src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
|
|
25302
25382
|
import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
|
|
25303
|
-
import React179, { useCallback as
|
|
25383
|
+
import React179, { useCallback as useCallback37, useEffect as useEffect44, useMemo as useMemo36, useState as useState56 } from "react";
|
|
25304
25384
|
function useIframeListener(listeners) {
|
|
25305
|
-
const handleMessage =
|
|
25385
|
+
const handleMessage = useCallback37(
|
|
25306
25386
|
(event) => {
|
|
25307
25387
|
switch (event.data.name) {
|
|
25308
25388
|
case "load": {
|
|
@@ -25353,7 +25433,7 @@ function KycIframe({
|
|
|
25353
25433
|
const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
|
|
25354
25434
|
const { data: kycLink, isLoading: isLinkLoading } = useLoadKycLink(modalState);
|
|
25355
25435
|
const [iframeLoading, setIframeLoading] = useState56(true);
|
|
25356
|
-
const listeners =
|
|
25436
|
+
const listeners = useMemo36(
|
|
25357
25437
|
() => ({
|
|
25358
25438
|
load: () => {
|
|
25359
25439
|
logger.info("KYC iframe loaded");
|
|
@@ -25492,7 +25572,7 @@ function initialState(checkoutItem) {
|
|
|
25492
25572
|
function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
25493
25573
|
const [modalState, setModalState] = useState57(() => initialState(checkoutItem));
|
|
25494
25574
|
const { clearCheckoutQuoteMessages } = useCheckoutQuoteNotification();
|
|
25495
|
-
const onCloseWrapper =
|
|
25575
|
+
const onCloseWrapper = useCallback38(
|
|
25496
25576
|
(options) => {
|
|
25497
25577
|
const normalizedIsNewDeposit = !!options?.isNewDeposit;
|
|
25498
25578
|
checkoutItem.initSettings.onClose?.({
|
|
@@ -25512,7 +25592,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
25512
25592
|
const [stateHistory, setHistory] = useState57([]);
|
|
25513
25593
|
const prevStep = useRef22(null);
|
|
25514
25594
|
const hasHistoryEntry = stateHistory.length > 1;
|
|
25515
|
-
const onNext =
|
|
25595
|
+
const onNext = useCallback38(
|
|
25516
25596
|
(payload) => {
|
|
25517
25597
|
if (prevStep.current === modalState.step) {
|
|
25518
25598
|
return;
|
|
@@ -25545,7 +25625,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
25545
25625
|
},
|
|
25546
25626
|
[clearCheckoutQuoteMessages, modalState, animate, hasHistoryEntry]
|
|
25547
25627
|
);
|
|
25548
|
-
const onStepChange =
|
|
25628
|
+
const onStepChange = useCallback38(
|
|
25549
25629
|
(nextState) => {
|
|
25550
25630
|
if (prevStep.current === modalState.step) {
|
|
25551
25631
|
return;
|
|
@@ -25558,7 +25638,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
25558
25638
|
},
|
|
25559
25639
|
[modalState, animate]
|
|
25560
25640
|
);
|
|
25561
|
-
const onBack =
|
|
25641
|
+
const onBack = useCallback38(() => {
|
|
25562
25642
|
clearCheckoutQuoteMessages();
|
|
25563
25643
|
const backStepOverride = checkoutBackMap[modalState.step];
|
|
25564
25644
|
const prevState = [...stateHistory].reverse().find((s) => s.step === backStepOverride) ?? stateHistory[stateHistory.length - 1];
|
|
@@ -25753,7 +25833,7 @@ var FunConnectResultStep = ({
|
|
|
25753
25833
|
|
|
25754
25834
|
// src/components/FunConnectOptions/FunFarcasterConnectingStep.tsx
|
|
25755
25835
|
import { isMobile as isMobile7, isSafari as isSafari2, redirectInMobile } from "@funkit/utils";
|
|
25756
|
-
import React184, { useCallback as
|
|
25836
|
+
import React184, { useCallback as useCallback39, useEffect as useEffect47 } from "react";
|
|
25757
25837
|
|
|
25758
25838
|
// src/components/CopyAddress/OldCopyAddressButton.tsx
|
|
25759
25839
|
import React183 from "react";
|
|
@@ -25806,7 +25886,7 @@ function FunFarcasterConnectingStep({
|
|
|
25806
25886
|
}
|
|
25807
25887
|
}, [farcasterUri, mobile, safari]);
|
|
25808
25888
|
useSIWFarcasterListener(farcasterToken);
|
|
25809
|
-
const svgUrl =
|
|
25889
|
+
const svgUrl = useCallback39(async () => {
|
|
25810
25890
|
return (await import("./farcaster-MF6WINBA.js")).default;
|
|
25811
25891
|
}, []);
|
|
25812
25892
|
const promptText = mobile ? "To sign in with Farcaster, please open the Warpcast app." : "Scan this QR code or open the link with your mobile phone.";
|
|
@@ -25854,11 +25934,11 @@ function FunFarcasterConnectingStep({
|
|
|
25854
25934
|
|
|
25855
25935
|
// src/components/FunConnectOptions/FunWeb2ConnectingStep.tsx
|
|
25856
25936
|
import { isNotNullish as isNotNullish9 } from "@funkit/utils";
|
|
25857
|
-
import React187, { useCallback as
|
|
25937
|
+
import React187, { useCallback as useCallback41, useEffect as useEffect49, useState as useState60 } from "react";
|
|
25858
25938
|
|
|
25859
25939
|
// src/components/FunInput/FunTwoFaInput.tsx
|
|
25860
25940
|
import React185, {
|
|
25861
|
-
useCallback as
|
|
25941
|
+
useCallback as useCallback40,
|
|
25862
25942
|
useEffect as useEffect48,
|
|
25863
25943
|
useRef as useRef24,
|
|
25864
25944
|
useState as useState59
|
|
@@ -25885,12 +25965,12 @@ var FunTwoFaInput = ({
|
|
|
25885
25965
|
setFocusIndex(0);
|
|
25886
25966
|
}
|
|
25887
25967
|
}, [value]);
|
|
25888
|
-
const ensureFocus =
|
|
25968
|
+
const ensureFocus = useCallback40((nextIndex) => {
|
|
25889
25969
|
setTimeout(() => {
|
|
25890
25970
|
inputRefs.current[nextIndex]?.focus();
|
|
25891
25971
|
}, 10);
|
|
25892
25972
|
}, []);
|
|
25893
|
-
const handleBackspace =
|
|
25973
|
+
const handleBackspace = useCallback40(
|
|
25894
25974
|
(index) => {
|
|
25895
25975
|
if (index === maxInputLength - 1 && value.length === maxInputLength) {
|
|
25896
25976
|
onChange(value.slice(0, index));
|
|
@@ -25914,7 +25994,7 @@ var FunTwoFaInput = ({
|
|
|
25914
25994
|
},
|
|
25915
25995
|
[currentLength, initialInputLength, maxInputLength, onChange, value]
|
|
25916
25996
|
);
|
|
25917
|
-
const handleChange =
|
|
25997
|
+
const handleChange = useCallback40(
|
|
25918
25998
|
(changeEvent) => {
|
|
25919
25999
|
changeEvent.stopPropagation();
|
|
25920
26000
|
const nativeEvent = changeEvent.nativeEvent;
|
|
@@ -26083,7 +26163,7 @@ var FunWeb2ConnectingStep = ({
|
|
|
26083
26163
|
useEffect49(() => {
|
|
26084
26164
|
clearLoginError();
|
|
26085
26165
|
}, []);
|
|
26086
|
-
const handleOtpComplete =
|
|
26166
|
+
const handleOtpComplete = useCallback41(
|
|
26087
26167
|
async (finalOtpInput) => {
|
|
26088
26168
|
if (isNotNullish9(initialChainId)) {
|
|
26089
26169
|
await handleFunkitWeb2Login({
|
|
@@ -26230,7 +26310,7 @@ function FunConnectOptions({
|
|
|
26230
26310
|
const { loginConfig } = useFunkitConfig();
|
|
26231
26311
|
const prioritizedLoginType = loginConfig.prioritizedLogin;
|
|
26232
26312
|
const hasSecondarySignIn = prioritizedLoginType !== "none" && loginConfig.web2 && loginConfig.web3;
|
|
26233
|
-
const changeStep =
|
|
26313
|
+
const changeStep = useCallback42((newStep) => {
|
|
26234
26314
|
setStep(newStep);
|
|
26235
26315
|
if (isSignIn(newStep)) {
|
|
26236
26316
|
setSelectedWallet(void 0);
|
|
@@ -26238,7 +26318,7 @@ function FunConnectOptions({
|
|
|
26238
26318
|
}
|
|
26239
26319
|
}, []);
|
|
26240
26320
|
const { animation, navigateTo } = useAnimatedNavigation(changeStep);
|
|
26241
|
-
const handleBackToSignIn =
|
|
26321
|
+
const handleBackToSignIn = useCallback42(
|
|
26242
26322
|
(type) => {
|
|
26243
26323
|
const isPrimary = !hasSecondarySignIn || type === prioritizedLoginType;
|
|
26244
26324
|
navigateTo(
|
|
@@ -26249,7 +26329,7 @@ function FunConnectOptions({
|
|
|
26249
26329
|
[navigateTo, hasSecondarySignIn, prioritizedLoginType]
|
|
26250
26330
|
);
|
|
26251
26331
|
const walletConnectors = usePreparedWalletConnectors();
|
|
26252
|
-
const onRegenerateQrCode =
|
|
26332
|
+
const onRegenerateQrCode = useCallback42(
|
|
26253
26333
|
async (wallet) => {
|
|
26254
26334
|
const sWallet = walletConnectors.find((w) => wallet.id === w.id);
|
|
26255
26335
|
const uri = await sWallet?.getQrCodeUri?.();
|
|
@@ -26257,7 +26337,7 @@ function FunConnectOptions({
|
|
|
26257
26337
|
},
|
|
26258
26338
|
[walletConnectors]
|
|
26259
26339
|
);
|
|
26260
|
-
const connectToWallet =
|
|
26340
|
+
const connectToWallet = useCallback42(
|
|
26261
26341
|
async (wallet) => {
|
|
26262
26342
|
if (!wallet.ready) {
|
|
26263
26343
|
return;
|
|
@@ -26276,7 +26356,7 @@ function FunConnectOptions({
|
|
|
26276
26356
|
},
|
|
26277
26357
|
[changeStep, onRegenerateQrCode]
|
|
26278
26358
|
);
|
|
26279
|
-
const handleRetry =
|
|
26359
|
+
const handleRetry = useCallback42(() => {
|
|
26280
26360
|
if (!selectedWallet || selectedWallet.id === FUNKIT_CONNECT_WALLET_ID) {
|
|
26281
26361
|
handleBackToSignIn("web2");
|
|
26282
26362
|
} else {
|
|
@@ -26324,7 +26404,7 @@ function FunConnectOptions({
|
|
|
26324
26404
|
}
|
|
26325
26405
|
}
|
|
26326
26406
|
};
|
|
26327
|
-
const stepComponent =
|
|
26407
|
+
const stepComponent = useMemo37(() => {
|
|
26328
26408
|
switch (step) {
|
|
26329
26409
|
case 0 /* SIGNIN_PRIMARY */:
|
|
26330
26410
|
case 1 /* SIGNIN_SECONDARY */:
|
|
@@ -26433,7 +26513,7 @@ var FULL_SOCIAL_LOGIN_OPTIONS = [
|
|
|
26433
26513
|
function useEnabledSocialLogins() {
|
|
26434
26514
|
const funkitConfig = useFunkitConfig();
|
|
26435
26515
|
const { web2SocialLogins } = funkitConfig.loginConfig;
|
|
26436
|
-
const enabledSocialItems =
|
|
26516
|
+
const enabledSocialItems = useMemo38(() => {
|
|
26437
26517
|
return FULL_SOCIAL_LOGIN_OPTIONS.filter(
|
|
26438
26518
|
(oAuthItem) => !!web2SocialLogins[oAuthItem.funkitKey]
|
|
26439
26519
|
);
|
|
@@ -26462,7 +26542,7 @@ function FunSignInStep({
|
|
|
26462
26542
|
handleOauthRedirect,
|
|
26463
26543
|
handleGenerateFcUri
|
|
26464
26544
|
} = useFunkitWeb2Login();
|
|
26465
|
-
const isEmailInputValid =
|
|
26545
|
+
const isEmailInputValid = useMemo38(() => {
|
|
26466
26546
|
return validateEmailString(emailInput);
|
|
26467
26547
|
}, [emailInput]);
|
|
26468
26548
|
const [emailError, setEmailError] = useState62();
|
|
@@ -26535,7 +26615,7 @@ function FunSignInStep({
|
|
|
26535
26615
|
changeStep(3 /* PENDING_WALLET */);
|
|
26536
26616
|
}
|
|
26537
26617
|
};
|
|
26538
|
-
const handleEmailSubmit =
|
|
26618
|
+
const handleEmailSubmit = useCallback43(async () => {
|
|
26539
26619
|
if (!isEmailInputValid) {
|
|
26540
26620
|
return;
|
|
26541
26621
|
}
|
|
@@ -26874,7 +26954,7 @@ function PaymentMethodSummary({
|
|
|
26874
26954
|
|
|
26875
26955
|
// src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
|
|
26876
26956
|
import clsx21 from "clsx";
|
|
26877
|
-
import React201, { useEffect as useEffect51, useMemo as
|
|
26957
|
+
import React201, { useEffect as useEffect51, useMemo as useMemo39, useState as useState64 } from "react";
|
|
26878
26958
|
|
|
26879
26959
|
// src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
|
|
26880
26960
|
import React196 from "react";
|
|
@@ -26922,13 +27002,13 @@ var FunNotificationShowMoreButton = ({
|
|
|
26922
27002
|
import {
|
|
26923
27003
|
getCheckoutsByUserId as getCheckoutsByUserId2
|
|
26924
27004
|
} from "@funkit/api-base";
|
|
26925
|
-
import { FlagKey as
|
|
27005
|
+
import { FlagKey as FlagKey27 } from "@funkit/utils";
|
|
26926
27006
|
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
26927
27007
|
var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
|
|
26928
27008
|
var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
|
|
26929
27009
|
var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
|
|
26930
27010
|
function useCheckoutRefreshInterval() {
|
|
26931
|
-
const str = useFlag(
|
|
27011
|
+
const str = useFlag(FlagKey27.CheckoutNotificationsRefreshInterval);
|
|
26932
27012
|
return safeJSONParse(str) || { listRefresh: 50 * 1e3, itemRefresh: 5 * 1e3 };
|
|
26933
27013
|
}
|
|
26934
27014
|
var useRecentCheckouts = ({
|
|
@@ -27008,7 +27088,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f11m _1rsrm2f1f _1rsrm2f1c _1rsrm2fls
|
|
|
27008
27088
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
|
|
27009
27089
|
import clsx19 from "clsx";
|
|
27010
27090
|
import { motion as motion12, useAnimate as useAnimate3 } from "motion/react";
|
|
27011
|
-
import React197, { useCallback as
|
|
27091
|
+
import React197, { useCallback as useCallback44, useEffect as useEffect50, useRef as useRef25 } from "react";
|
|
27012
27092
|
|
|
27013
27093
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
|
|
27014
27094
|
var STATUS_SPINNER_BOTTOM_POSITION = -5;
|
|
@@ -27257,7 +27337,7 @@ var FunNotificationBannerIcon = ({
|
|
|
27257
27337
|
fallbackIconUrl = FALLBACK_ASSET
|
|
27258
27338
|
}) => {
|
|
27259
27339
|
const [animationScope, animate] = useAnimate3();
|
|
27260
|
-
const triggerAnimationProcessingToCompleted =
|
|
27340
|
+
const triggerAnimationProcessingToCompleted = useCallback44(async () => {
|
|
27261
27341
|
const completedIconPath = document.querySelector(
|
|
27262
27342
|
`.${generateAnimationPrefixClassName("icon-wrapper-completed")} path`
|
|
27263
27343
|
);
|
|
@@ -27364,7 +27444,7 @@ var FunNotificationBannerIcon = ({
|
|
|
27364
27444
|
)
|
|
27365
27445
|
]);
|
|
27366
27446
|
}, [animate]);
|
|
27367
|
-
const triggerAnimationDelayedToFailed =
|
|
27447
|
+
const triggerAnimationDelayedToFailed = useCallback44(async () => {
|
|
27368
27448
|
await Promise.all([
|
|
27369
27449
|
animate(
|
|
27370
27450
|
`.${generateAnimationPrefixClassName("icon-wrapper")}`,
|
|
@@ -27955,19 +28035,19 @@ var CheckoutNotifications = ({
|
|
|
27955
28035
|
}
|
|
27956
28036
|
setInitialDirectExecutions(directExecutions);
|
|
27957
28037
|
}, [initialDirectExecutions, directExecutions]);
|
|
27958
|
-
const displayedDirectExecutions =
|
|
28038
|
+
const displayedDirectExecutions = useMemo39(() => {
|
|
27959
28039
|
if (!directExecutions) {
|
|
27960
28040
|
return [];
|
|
27961
28041
|
}
|
|
27962
28042
|
return getUpdatedDirectExecutions(directExecutions, initialDirectExecutions).filter(({ txHash }) => !closedNotifications.includes(txHash)).slice(0, MAX_COUNT);
|
|
27963
28043
|
}, [initialDirectExecutions, directExecutions, closedNotifications]);
|
|
27964
|
-
const displayedCheckouts =
|
|
28044
|
+
const displayedCheckouts = useMemo39(() => {
|
|
27965
28045
|
if (!checkouts) {
|
|
27966
28046
|
return [];
|
|
27967
28047
|
}
|
|
27968
28048
|
return getUpdatedCheckouts(checkouts, initialCheckouts).filter(({ depositAddr }) => !closedNotifications.includes(depositAddr)).slice(0, MAX_COUNT);
|
|
27969
28049
|
}, [initialCheckouts, checkouts, closedNotifications]);
|
|
27970
|
-
const combinedNotifications =
|
|
28050
|
+
const combinedNotifications = useMemo39(() => {
|
|
27971
28051
|
return [
|
|
27972
28052
|
...displayedDirectExecutions.map(
|
|
27973
28053
|
(item) => ({ ...item, isDirectExecution: true })
|
|
@@ -27977,7 +28057,7 @@ var CheckoutNotifications = ({
|
|
|
27977
28057
|
)
|
|
27978
28058
|
].sort((a, b) => b.createdTimeMs - a.createdTimeMs);
|
|
27979
28059
|
}, [displayedDirectExecutions, displayedCheckouts]);
|
|
27980
|
-
const displayedNotifications =
|
|
28060
|
+
const displayedNotifications = useMemo39(() => {
|
|
27981
28061
|
return isExpanded ? combinedNotifications : combinedNotifications.slice(0, COLLAPSED_COUNT);
|
|
27982
28062
|
}, [isExpanded, combinedNotifications]);
|
|
27983
28063
|
const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
|
|
@@ -28254,7 +28334,7 @@ import React217 from "react";
|
|
|
28254
28334
|
// src/modals/ProfileDetails/ActivityTraversalContext.tsx
|
|
28255
28335
|
import React205, {
|
|
28256
28336
|
createContext as createContext15,
|
|
28257
|
-
useCallback as
|
|
28337
|
+
useCallback as useCallback45,
|
|
28258
28338
|
useContext as useContext15,
|
|
28259
28339
|
useState as useState66
|
|
28260
28340
|
} from "react";
|
|
@@ -28275,7 +28355,7 @@ var ActivityTraversalProvider = ({
|
|
|
28275
28355
|
const [returnViewPresets, setReturnViewPresets] = useState66(
|
|
28276
28356
|
{}
|
|
28277
28357
|
);
|
|
28278
|
-
const onSelectActivity =
|
|
28358
|
+
const onSelectActivity = useCallback45(
|
|
28279
28359
|
({
|
|
28280
28360
|
checkoutId,
|
|
28281
28361
|
initialPage,
|
|
@@ -28293,7 +28373,7 @@ var ActivityTraversalProvider = ({
|
|
|
28293
28373
|
},
|
|
28294
28374
|
[]
|
|
28295
28375
|
);
|
|
28296
|
-
const resetActivityTraversal =
|
|
28376
|
+
const resetActivityTraversal = useCallback45(() => {
|
|
28297
28377
|
setSelectedPurchaseId(void 0);
|
|
28298
28378
|
setSelectedPurchaseInitView(void 0);
|
|
28299
28379
|
setReturnView(void 0);
|
|
@@ -28313,7 +28393,7 @@ var useActivityTraversal = () => {
|
|
|
28313
28393
|
};
|
|
28314
28394
|
|
|
28315
28395
|
// src/modals/ProfileDetails/ProfileDetails.tsx
|
|
28316
|
-
import React216, { useCallback as
|
|
28396
|
+
import React216, { useCallback as useCallback47, useState as useState69 } from "react";
|
|
28317
28397
|
|
|
28318
28398
|
// src/hooks/useCheckoutModalTitle.ts
|
|
28319
28399
|
function useCheckoutModalTitle(depositAddress, defaultTitle) {
|
|
@@ -28327,7 +28407,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
|
|
|
28327
28407
|
import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
|
|
28328
28408
|
import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
|
|
28329
28409
|
import clsx23 from "clsx";
|
|
28330
|
-
import React214, { useEffect as useEffect52, useMemo as
|
|
28410
|
+
import React214, { useEffect as useEffect52, useMemo as useMemo40, useRef as useRef26, useState as useState68 } from "react";
|
|
28331
28411
|
import { Virtuoso } from "react-virtuoso";
|
|
28332
28412
|
import { useAccount as useAccount7 } from "wagmi";
|
|
28333
28413
|
|
|
@@ -28701,7 +28781,7 @@ var HomeTokenBalanceDisplayRowSkeleton = () => {
|
|
|
28701
28781
|
|
|
28702
28782
|
// src/modals/ProfileDetails/FunProfileViews/Home/ProfileTitleSection.tsx
|
|
28703
28783
|
import React213 from "react";
|
|
28704
|
-
import { useCallback as
|
|
28784
|
+
import { useCallback as useCallback46, useState as useState67 } from "react";
|
|
28705
28785
|
|
|
28706
28786
|
// src/components/Icons/LogoutIcon.tsx
|
|
28707
28787
|
import React211 from "react";
|
|
@@ -28768,7 +28848,7 @@ var ProfileTitleSection = ({
|
|
|
28768
28848
|
onClose
|
|
28769
28849
|
}) => {
|
|
28770
28850
|
const [isDisconnectExpanded, setIsDisconnectExpanded] = useState67(false);
|
|
28771
|
-
const collapseDisconnect =
|
|
28851
|
+
const collapseDisconnect = useCallback46(
|
|
28772
28852
|
() => setIsDisconnectExpanded(false),
|
|
28773
28853
|
[]
|
|
28774
28854
|
);
|
|
@@ -28874,7 +28954,7 @@ function Home({
|
|
|
28874
28954
|
const virtuosoDiv = virtuosoParentRef.current?.firstChild;
|
|
28875
28955
|
virtuosoDiv?.classList.add(animateVirtuosoInClass);
|
|
28876
28956
|
}, []);
|
|
28877
|
-
const AssetsList =
|
|
28957
|
+
const AssetsList = useMemo40(() => {
|
|
28878
28958
|
if (walletAssets && !Object.keys(walletAssets).length) {
|
|
28879
28959
|
return /* @__PURE__ */ React214.createElement(EmptyTabAlert, null);
|
|
28880
28960
|
}
|
|
@@ -28901,7 +28981,7 @@ function Home({
|
|
|
28901
28981
|
}
|
|
28902
28982
|
));
|
|
28903
28983
|
}, [walletAssets]);
|
|
28904
|
-
const CheckoutsList =
|
|
28984
|
+
const CheckoutsList = useMemo40(() => {
|
|
28905
28985
|
if (checkoutHistoryList.length === 0 && isCheckoutHistoryInited) {
|
|
28906
28986
|
return /* @__PURE__ */ React214.createElement(EmptyTabAlert, null);
|
|
28907
28987
|
}
|
|
@@ -29124,13 +29204,13 @@ function ProfileDetails({ onClose, defaultTab }) {
|
|
|
29124
29204
|
const [singleActivityPage, setSingleActivityPage] = useState69(
|
|
29125
29205
|
selectedPurchaseInitView ?? "detail" /* DETAIL */
|
|
29126
29206
|
);
|
|
29127
|
-
const resetView =
|
|
29207
|
+
const resetView = useCallback47(() => {
|
|
29128
29208
|
setView(returnView ?? 0 /* HOME */);
|
|
29129
29209
|
setSelectedHomeTab("checkouts" /* CHECKOUTS */);
|
|
29130
29210
|
resetActivityTraversal();
|
|
29131
29211
|
}, [resetActivityTraversal, returnView]);
|
|
29132
29212
|
const { animation, animate } = useAnimatedNavigation(void 0);
|
|
29133
|
-
const onSelectActivityWrapper =
|
|
29213
|
+
const onSelectActivityWrapper = useCallback47(
|
|
29134
29214
|
(activity) => {
|
|
29135
29215
|
onSelectActivity({
|
|
29136
29216
|
...activity,
|
|
@@ -29167,7 +29247,7 @@ function ProfileDetails({ onClose, defaultTab }) {
|
|
|
29167
29247
|
const isHelpPage = singleActivityPage === "help" /* HELP */;
|
|
29168
29248
|
const isCheckoutDetailView = isSingleActivityView && singleActivityPage === "detail" /* DETAIL */;
|
|
29169
29249
|
const withDivider = isSingleActivityView ? isHelpPage ? "scroll" : "always" : void 0;
|
|
29170
|
-
const handleHelp =
|
|
29250
|
+
const handleHelp = useCallback47(() => {
|
|
29171
29251
|
animate(() => setSingleActivityPage("help" /* HELP */));
|
|
29172
29252
|
}, [animate]);
|
|
29173
29253
|
const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
|
|
@@ -29242,7 +29322,7 @@ function AccountModal({ onClose, open, defaultTab }) {
|
|
|
29242
29322
|
// src/modals/ChainModal/ChainModal.tsx
|
|
29243
29323
|
import { isMobile as isMobile13 } from "@funkit/utils";
|
|
29244
29324
|
import React222 from "react";
|
|
29245
|
-
import { useAccount as useAccount8, useConfig as
|
|
29325
|
+
import { useAccount as useAccount8, useConfig as useConfig5 } from "wagmi";
|
|
29246
29326
|
|
|
29247
29327
|
// src/components/Icons/DisconnectSqIcon.tsx
|
|
29248
29328
|
import React218 from "react";
|
|
@@ -29455,7 +29535,7 @@ var MobileScrollClassName = "_1d2b1vf1";
|
|
|
29455
29535
|
// src/modals/ChainModal/ChainModal.tsx
|
|
29456
29536
|
function ChainModal({ onClose, open }) {
|
|
29457
29537
|
const { chainId } = useAccount8();
|
|
29458
|
-
const { chains } =
|
|
29538
|
+
const { chains } = useConfig5();
|
|
29459
29539
|
const { switchChain, pendingChainId } = useFunkitSwitchChains({
|
|
29460
29540
|
onSettled: () => onClose()
|
|
29461
29541
|
});
|
|
@@ -29574,7 +29654,7 @@ function ChainModal({ onClose, open }) {
|
|
|
29574
29654
|
// src/modals/CheckoutModal/FunCheckoutModal.tsx
|
|
29575
29655
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST3 } from "@funkit/chains";
|
|
29576
29656
|
import { LogLevel, initializeRelayClient } from "@funkit/fun-relay";
|
|
29577
|
-
import { FlagKey as
|
|
29657
|
+
import { FlagKey as FlagKey28 } from "@funkit/utils";
|
|
29578
29658
|
import React224, { useRef as useRef27 } from "react";
|
|
29579
29659
|
|
|
29580
29660
|
// src/components/FunCheckoutBlocked/FunCheckoutBlocked.tsx
|
|
@@ -29661,7 +29741,7 @@ function FunCheckoutModalInner({
|
|
|
29661
29741
|
const isBlocked = isUserGeoblocked || modalState.isBlocked;
|
|
29662
29742
|
const hasBack = hasHistoryEntry && !disableBack;
|
|
29663
29743
|
const checkoutConfig = checkoutItem.initSettings.config;
|
|
29664
|
-
const helpButtonUrl = useFlag(
|
|
29744
|
+
const helpButtonUrl = useFlag(FlagKey28.HelpTutorialUrl);
|
|
29665
29745
|
const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
|
|
29666
29746
|
depositAddress: checkoutItem.depositAddress ?? void 0,
|
|
29667
29747
|
isActiveCheckout: true,
|
|
@@ -29777,16 +29857,16 @@ function ConnectModal({
|
|
|
29777
29857
|
function useModalStateValue() {
|
|
29778
29858
|
const [isModalOpen, setModalOpen] = useState70(false);
|
|
29779
29859
|
return {
|
|
29780
|
-
closeModal:
|
|
29860
|
+
closeModal: useCallback48(() => setModalOpen(false), []),
|
|
29781
29861
|
isModalOpen,
|
|
29782
|
-
openModal:
|
|
29862
|
+
openModal: useCallback48(() => setModalOpen(true), [])
|
|
29783
29863
|
};
|
|
29784
29864
|
}
|
|
29785
29865
|
function useModalStateValueWithProp() {
|
|
29786
29866
|
const [isModalOpen, setModalOpen] = useState70(false);
|
|
29787
29867
|
const [prop, setProp] = useState70(null);
|
|
29788
29868
|
return {
|
|
29789
|
-
closeModal:
|
|
29869
|
+
closeModal: useCallback48(() => {
|
|
29790
29870
|
setTimeout(
|
|
29791
29871
|
() => {
|
|
29792
29872
|
setProp(null);
|
|
@@ -29797,7 +29877,7 @@ function useModalStateValueWithProp() {
|
|
|
29797
29877
|
}, []),
|
|
29798
29878
|
isModalOpen,
|
|
29799
29879
|
prop,
|
|
29800
|
-
openModal:
|
|
29880
|
+
openModal: useCallback48((prop2) => {
|
|
29801
29881
|
if (prop2 != null) {
|
|
29802
29882
|
setProp(prop2);
|
|
29803
29883
|
}
|
|
@@ -29846,7 +29926,7 @@ function ModalProvider({ children }) {
|
|
|
29846
29926
|
} = useModalStateValueWithProp();
|
|
29847
29927
|
const connectionStatus = useConnectionStatus();
|
|
29848
29928
|
const { chainId } = useAccount10();
|
|
29849
|
-
const { chains } =
|
|
29929
|
+
const { chains } = useConfig6();
|
|
29850
29930
|
const isCurrentChainSupported = chains.some((chain) => chain.id === chainId);
|
|
29851
29931
|
function closeModals(keepConnectModalOpen = false) {
|
|
29852
29932
|
if (!keepConnectModalOpen) {
|
|
@@ -29868,7 +29948,7 @@ function ModalProvider({ children }) {
|
|
|
29868
29948
|
return /* @__PURE__ */ React226.createElement(
|
|
29869
29949
|
ModalContext.Provider,
|
|
29870
29950
|
{
|
|
29871
|
-
value:
|
|
29951
|
+
value: useMemo41(
|
|
29872
29952
|
() => ({
|
|
29873
29953
|
accountModalOpen,
|
|
29874
29954
|
accountModalTab,
|
|
@@ -30273,7 +30353,7 @@ var FunkitWeb2Provider = ({
|
|
|
30273
30353
|
children
|
|
30274
30354
|
}) => {
|
|
30275
30355
|
const { connectAsync } = useConnect2();
|
|
30276
|
-
const { chains } =
|
|
30356
|
+
const { chains } = useConfig7();
|
|
30277
30357
|
const { connectors, disconnectAsync } = useDisconnect2();
|
|
30278
30358
|
const [privy, setPrivy] = useState71(null);
|
|
30279
30359
|
const [privyIframeUrl, setPrivyIframeUrl] = useState71();
|
|
@@ -30284,7 +30364,7 @@ var FunkitWeb2Provider = ({
|
|
|
30284
30364
|
const [isLoggingIn, setIsLoggingIn] = useState71(false);
|
|
30285
30365
|
const [loginErrorMessage, setLoginErrorMessage] = useState71("");
|
|
30286
30366
|
const [loggedInUser, setLoggedInUser] = useState71(null);
|
|
30287
|
-
const setLoginMethodAndCache =
|
|
30367
|
+
const setLoginMethodAndCache = useCallback49(
|
|
30288
30368
|
(method) => {
|
|
30289
30369
|
try {
|
|
30290
30370
|
setLoginMethod(method);
|
|
@@ -30308,7 +30388,7 @@ var FunkitWeb2Provider = ({
|
|
|
30308
30388
|
setPrivyIframeUrl(newPrivy.embeddedWallet.getURL());
|
|
30309
30389
|
setPrivy(newPrivy);
|
|
30310
30390
|
}, [chains]);
|
|
30311
|
-
const handleIframeMessage =
|
|
30391
|
+
const handleIframeMessage = useCallback49(
|
|
30312
30392
|
(e) => {
|
|
30313
30393
|
if (e.origin === PRIVY_AUTH_URL && privy) {
|
|
30314
30394
|
const iframeHandler = privy.embeddedWallet.getMessageHandler();
|
|
@@ -30317,7 +30397,7 @@ var FunkitWeb2Provider = ({
|
|
|
30317
30397
|
},
|
|
30318
30398
|
[privy]
|
|
30319
30399
|
);
|
|
30320
|
-
const handleFunkitWeb2Logout =
|
|
30400
|
+
const handleFunkitWeb2Logout = useCallback49(async () => {
|
|
30321
30401
|
if (privy) {
|
|
30322
30402
|
logger.log("handleFunkitWeb2Logout_disconnecting_connectors", {
|
|
30323
30403
|
numConnectors: connectors.length
|
|
@@ -30330,7 +30410,7 @@ var FunkitWeb2Provider = ({
|
|
|
30330
30410
|
setLoginMethodAndCache(null);
|
|
30331
30411
|
}
|
|
30332
30412
|
}, [connectors, disconnectAsync, privy, setLoginMethodAndCache]);
|
|
30333
|
-
const handleFreshPrivyLogin =
|
|
30413
|
+
const handleFreshPrivyLogin = useCallback49(
|
|
30334
30414
|
async ({
|
|
30335
30415
|
firstLoginCode,
|
|
30336
30416
|
secondLoginCode,
|
|
@@ -30382,7 +30462,7 @@ var FunkitWeb2Provider = ({
|
|
|
30382
30462
|
},
|
|
30383
30463
|
[handleFunkitWeb2Logout, privy]
|
|
30384
30464
|
);
|
|
30385
|
-
const getPrivyUserEmbeddedWallet =
|
|
30465
|
+
const getPrivyUserEmbeddedWallet = useCallback49(
|
|
30386
30466
|
async (inputPrivyUser) => {
|
|
30387
30467
|
try {
|
|
30388
30468
|
if (!privy || !inputPrivyUser) {
|
|
@@ -30401,7 +30481,7 @@ var FunkitWeb2Provider = ({
|
|
|
30401
30481
|
},
|
|
30402
30482
|
[privy]
|
|
30403
30483
|
);
|
|
30404
|
-
const getExistingPrivySession =
|
|
30484
|
+
const getExistingPrivySession = useCallback49(async () => {
|
|
30405
30485
|
try {
|
|
30406
30486
|
if (!privy) {
|
|
30407
30487
|
throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
|
|
@@ -30412,7 +30492,7 @@ var FunkitWeb2Provider = ({
|
|
|
30412
30492
|
return null;
|
|
30413
30493
|
}
|
|
30414
30494
|
}, [privy]);
|
|
30415
|
-
const handleFunkitWeb2Login =
|
|
30495
|
+
const handleFunkitWeb2Login = useCallback49(
|
|
30416
30496
|
async ({
|
|
30417
30497
|
chainId,
|
|
30418
30498
|
firstLoginCode,
|
|
@@ -30489,9 +30569,9 @@ var FunkitWeb2Provider = ({
|
|
|
30489
30569
|
wallets
|
|
30490
30570
|
]
|
|
30491
30571
|
);
|
|
30492
|
-
const clearLoginError =
|
|
30572
|
+
const clearLoginError = useCallback49(() => setLoginErrorMessage(""), []);
|
|
30493
30573
|
const initChainId = useInitialChainId();
|
|
30494
|
-
const handleAutoLoginFlows =
|
|
30574
|
+
const handleAutoLoginFlows = useCallback49(async () => {
|
|
30495
30575
|
if (isNotNullish11(loginMethod) && isNotNullish11(initChainId)) {
|
|
30496
30576
|
const queryParams = new URLSearchParams(window.location.search);
|
|
30497
30577
|
const oauthCode = queryParams.get(PRIVY_OAUTH_CODE_URL_PARAM);
|
|
@@ -30535,7 +30615,7 @@ var FunkitWeb2Provider = ({
|
|
|
30535
30615
|
initChainId
|
|
30536
30616
|
// Do not include `handleAutoLoginFlows`,
|
|
30537
30617
|
]);
|
|
30538
|
-
const handleOauthRedirect =
|
|
30618
|
+
const handleOauthRedirect = useCallback49(
|
|
30539
30619
|
async (authProvider) => {
|
|
30540
30620
|
if (!privy) {
|
|
30541
30621
|
throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
|
|
@@ -30561,7 +30641,7 @@ var FunkitWeb2Provider = ({
|
|
|
30561
30641
|
[privy, setLoginMethodAndCache]
|
|
30562
30642
|
);
|
|
30563
30643
|
const [isSendingOtpEmail, setIsSendingOtpEmail] = useState71(false);
|
|
30564
|
-
const handleSendOtpEmail =
|
|
30644
|
+
const handleSendOtpEmail = useCallback49(
|
|
30565
30645
|
async (emailAddress) => {
|
|
30566
30646
|
try {
|
|
30567
30647
|
if (!privy) {
|
|
@@ -30589,7 +30669,7 @@ var FunkitWeb2Provider = ({
|
|
|
30589
30669
|
[privy, setLoginMethodAndCache]
|
|
30590
30670
|
);
|
|
30591
30671
|
const [isGeneratingFcUri, setIsGeneratingFcUri] = useState71(false);
|
|
30592
|
-
const handleGenerateFcUri =
|
|
30672
|
+
const handleGenerateFcUri = useCallback49(async () => {
|
|
30593
30673
|
try {
|
|
30594
30674
|
if (!privy) {
|
|
30595
30675
|
throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
|
|
@@ -30616,7 +30696,7 @@ var FunkitWeb2Provider = ({
|
|
|
30616
30696
|
setIsGeneratingFcUri(false);
|
|
30617
30697
|
}
|
|
30618
30698
|
}, [privy]);
|
|
30619
|
-
const getFcConnectionStatus =
|
|
30699
|
+
const getFcConnectionStatus = useCallback49(
|
|
30620
30700
|
async (channelToken) => {
|
|
30621
30701
|
try {
|
|
30622
30702
|
if (!privy) {
|
|
@@ -30639,7 +30719,7 @@ var FunkitWeb2Provider = ({
|
|
|
30639
30719
|
},
|
|
30640
30720
|
[privy]
|
|
30641
30721
|
);
|
|
30642
|
-
const web2UserInfo =
|
|
30722
|
+
const web2UserInfo = useMemo42(() => {
|
|
30643
30723
|
if (!loggedInUser || !loggedInUser?.linked_accounts || !loggedInUser?.linked_accounts?.length) {
|
|
30644
30724
|
return PLACEHOLDER_FUNKIT_USER_INFO;
|
|
30645
30725
|
}
|
|
@@ -30691,7 +30771,8 @@ var FunkitWeb2Provider = ({
|
|
|
30691
30771
|
nameTruncated,
|
|
30692
30772
|
type,
|
|
30693
30773
|
typeLabel,
|
|
30694
|
-
iconSrc
|
|
30774
|
+
iconSrc,
|
|
30775
|
+
isConnected: true
|
|
30695
30776
|
};
|
|
30696
30777
|
}, [loggedInUser, loginMethod]);
|
|
30697
30778
|
const contextValue = {
|
|
@@ -30759,10 +30840,10 @@ var useShowBalance = () => useContext18(ShowBalanceContext);
|
|
|
30759
30840
|
// src/components/ConnectButton/ConnectButtonRenderer.tsx
|
|
30760
30841
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify15, isMobile as isMobile14, noop as noop9 } from "@funkit/utils";
|
|
30761
30842
|
import React229 from "react";
|
|
30762
|
-
import { useAccount as useAccount12, useBalance, useConfig as
|
|
30843
|
+
import { useAccount as useAccount12, useBalance, useConfig as useConfig8 } from "wagmi";
|
|
30763
30844
|
|
|
30764
30845
|
// src/hooks/useIsMounted.ts
|
|
30765
|
-
import { useCallback as
|
|
30846
|
+
import { useCallback as useCallback50, useEffect as useEffect55, useState as useState73 } from "react";
|
|
30766
30847
|
function useIsMounted() {
|
|
30767
30848
|
const [isMounted, setIsMounted] = useState73(false);
|
|
30768
30849
|
useEffect55(() => {
|
|
@@ -30771,7 +30852,7 @@ function useIsMounted() {
|
|
|
30771
30852
|
setIsMounted(false);
|
|
30772
30853
|
};
|
|
30773
30854
|
}, []);
|
|
30774
|
-
return
|
|
30855
|
+
return useCallback50(() => isMounted, [isMounted]);
|
|
30775
30856
|
}
|
|
30776
30857
|
|
|
30777
30858
|
// src/components/ConnectButton/abbreviateETHBalance.ts
|
|
@@ -30817,7 +30898,7 @@ function ConnectButtonRenderer({
|
|
|
30817
30898
|
const { totalWalletAssetsUsd } = useWalletAssets({
|
|
30818
30899
|
enableRefetchInterval: false
|
|
30819
30900
|
});
|
|
30820
|
-
const { chains: wagmiChains } =
|
|
30901
|
+
const { chains: wagmiChains } = useConfig8();
|
|
30821
30902
|
const isCurrentChainSupported = wagmiChains.some(
|
|
30822
30903
|
(chain) => chain.id === chainId
|
|
30823
30904
|
);
|
|
@@ -31580,18 +31661,18 @@ function cssStringFromTheme(theme, options = {}) {
|
|
|
31580
31661
|
}
|
|
31581
31662
|
|
|
31582
31663
|
// src/hooks/useIsFunkitCheckoutActivated.ts
|
|
31583
|
-
import { FlagKey as
|
|
31664
|
+
import { FlagKey as FlagKey29 } from "@funkit/utils";
|
|
31584
31665
|
var useIsFunkitCheckoutActivated = () => {
|
|
31585
|
-
const isCheckoutActivated = useFlag(
|
|
31666
|
+
const isCheckoutActivated = useFlag(FlagKey29.IsCheckoutActivated);
|
|
31586
31667
|
return {
|
|
31587
31668
|
isActivated: isCheckoutActivated
|
|
31588
31669
|
};
|
|
31589
31670
|
};
|
|
31590
31671
|
|
|
31591
31672
|
// src/hooks/useFunkitMaxCheckoutUsdInfo.ts
|
|
31592
|
-
import { FlagKey as
|
|
31673
|
+
import { FlagKey as FlagKey30, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
|
|
31593
31674
|
var useFunkitMaxCheckoutUsdInfo = () => {
|
|
31594
|
-
const maxCheckoutUsd = Number(useFlag(
|
|
31675
|
+
const maxCheckoutUsd = Number(useFlag(FlagKey30.MaxCheckoutUsd));
|
|
31595
31676
|
const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify16(maxCheckoutUsd, {
|
|
31596
31677
|
decimalPrecisionForSuffix: 0,
|
|
31597
31678
|
minimumSignificantDigits: 0,
|
|
@@ -31624,16 +31705,16 @@ import React233, { createContext as createContext19, useContext as useContext19
|
|
|
31624
31705
|
import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
|
|
31625
31706
|
|
|
31626
31707
|
// src/providers/useFingerprint.ts
|
|
31627
|
-
import { useCallback as
|
|
31708
|
+
import { useCallback as useCallback51, useEffect as useEffect57 } from "react";
|
|
31628
31709
|
var storageKey5 = "funkit-connect-version";
|
|
31629
31710
|
function setFunkitConnectVersion({ version }) {
|
|
31630
31711
|
localStorage.setItem(storageKey5, version);
|
|
31631
31712
|
}
|
|
31632
31713
|
function getCurrentSdkVersion() {
|
|
31633
|
-
return "6.14.
|
|
31714
|
+
return "6.14.3";
|
|
31634
31715
|
}
|
|
31635
31716
|
function useFingerprint() {
|
|
31636
|
-
const fingerprint =
|
|
31717
|
+
const fingerprint = useCallback51(() => {
|
|
31637
31718
|
setFunkitConnectVersion({ version: getCurrentSdkVersion() });
|
|
31638
31719
|
}, []);
|
|
31639
31720
|
useEffect57(() => {
|
|
@@ -31643,11 +31724,11 @@ function useFingerprint() {
|
|
|
31643
31724
|
|
|
31644
31725
|
// src/providers/usePreloadImages.ts
|
|
31645
31726
|
import { isNotNullish as isNotNullish12 } from "@funkit/utils";
|
|
31646
|
-
import { useCallback as
|
|
31727
|
+
import { useCallback as useCallback52, useEffect as useEffect58 } from "react";
|
|
31647
31728
|
function usePreloadImages() {
|
|
31648
31729
|
const funkitConnectChains = useFunkitConnectChains();
|
|
31649
31730
|
const walletConnectors = useWalletConnectors();
|
|
31650
|
-
const preloadImages =
|
|
31731
|
+
const preloadImages = useCallback52(() => {
|
|
31651
31732
|
loadImages(
|
|
31652
31733
|
...walletConnectors.map((wallet) => wallet.iconUrl),
|
|
31653
31734
|
...funkitConnectChains.map((chain) => chain.iconUrl).filter(isNotNullish12)
|