@funkit/connect 6.14.2 → 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 +22 -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 +535 -459
- package/dist/utils/checkout.d.ts +2 -1
- package/dist/utils/flags/config.d.ts +1 -9
- package/dist/wallets/walletConnectors/index.js +52 -52
- 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) {
|
|
@@ -825,6 +825,7 @@ function useFunkitConfig() {
|
|
|
825
825
|
// src/providers/provideFunkitConnectChains.ts
|
|
826
826
|
import {
|
|
827
827
|
BITCOIN_MAINNET_CHAIN_ID,
|
|
828
|
+
ETHEREAL_CHAIN_ID,
|
|
828
829
|
HYPERCORE_CHAIN_ID,
|
|
829
830
|
HYPER_EVM_CHAIN_ID,
|
|
830
831
|
KATANA_CHAIN_ID,
|
|
@@ -871,6 +872,10 @@ var ethereumIcon = {
|
|
|
871
872
|
iconBackground: "#484c50",
|
|
872
873
|
iconUrl: "https://sdk-cdn.fun.xyz/images/ethereum.svg"
|
|
873
874
|
};
|
|
875
|
+
var etherealIcon = {
|
|
876
|
+
iconBackground: "#000000",
|
|
877
|
+
iconUrl: "https://sdk-cdn.fun.xyz/images/ethereal.svg"
|
|
878
|
+
};
|
|
874
879
|
var hardhatIcon = {
|
|
875
880
|
iconBackground: "#f9f7ec",
|
|
876
881
|
iconUrl: "https://sdk-cdn.fun.xyz/images/hardhat.svg"
|
|
@@ -955,6 +960,7 @@ var chainMetadataByName = {
|
|
|
955
960
|
bscTestnet: { chainId: 97, name: "BSC Testnet", ...bscIcon },
|
|
956
961
|
cronos: { chainId: 25, name: "Cronos", ...cronosIcon },
|
|
957
962
|
cronosTestnet: { chainId: 338, name: "Cronos Testnet", ...cronosIcon },
|
|
963
|
+
ethereal: { chainId: ETHEREAL_CHAIN_ID, name: "Ethereal", ...etherealIcon },
|
|
958
964
|
goerli: { chainId: 5, name: "Goerli", ...ethereumIcon },
|
|
959
965
|
hardhat: { chainId: 31337, name: "Hardhat", ...hardhatIcon },
|
|
960
966
|
holesky: { chainId: 17e3, name: "Holesky", ...ethereumIcon },
|
|
@@ -1081,13 +1087,13 @@ var useInitialChainId = () => useContext4(FunkitConnectChainContext).initialChai
|
|
|
1081
1087
|
// src/providers/ModalContext.tsx
|
|
1082
1088
|
import React226, {
|
|
1083
1089
|
createContext as createContext16,
|
|
1084
|
-
useCallback as
|
|
1090
|
+
useCallback as useCallback48,
|
|
1085
1091
|
useContext as useContext16,
|
|
1086
1092
|
useEffect as useEffect53,
|
|
1087
|
-
useMemo as
|
|
1093
|
+
useMemo as useMemo41,
|
|
1088
1094
|
useState as useState70
|
|
1089
1095
|
} from "react";
|
|
1090
|
-
import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as
|
|
1096
|
+
import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig6 } from "wagmi";
|
|
1091
1097
|
|
|
1092
1098
|
// src/components/Dialog/Dialog.css.ts
|
|
1093
1099
|
var DialogAnimationTimeIn = 0.25;
|
|
@@ -1173,7 +1179,7 @@ import {
|
|
|
1173
1179
|
import { isNotNullish as isNotNullish3 } from "@funkit/utils";
|
|
1174
1180
|
import React14, {
|
|
1175
1181
|
createContext as createContext10,
|
|
1176
|
-
useCallback as
|
|
1182
|
+
useCallback as useCallback9,
|
|
1177
1183
|
useContext as useContext10,
|
|
1178
1184
|
useEffect as useEffect8,
|
|
1179
1185
|
useRef as useRef2,
|
|
@@ -1230,7 +1236,7 @@ import {
|
|
|
1230
1236
|
} from "@funkit/core";
|
|
1231
1237
|
import {
|
|
1232
1238
|
formatCryptoAndStringify,
|
|
1233
|
-
isTokenAddressEquivalent as
|
|
1239
|
+
isTokenAddressEquivalent as isTokenAddressEquivalent4,
|
|
1234
1240
|
round as round2,
|
|
1235
1241
|
roundUpToXDecimalPlaces
|
|
1236
1242
|
} from "@funkit/utils";
|
|
@@ -2114,10 +2120,10 @@ import {
|
|
|
2114
2120
|
initializeCheckout as postApiInitializeCheckout
|
|
2115
2121
|
} from "@funkit/api-base";
|
|
2116
2122
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO3 } from "@funkit/chains";
|
|
2117
|
-
import { FlagKey as
|
|
2123
|
+
import { FlagKey as FlagKey6, isNotNullish as isNotNullish2 } from "@funkit/utils";
|
|
2118
2124
|
import React13, {
|
|
2119
2125
|
createContext as createContext9,
|
|
2120
|
-
useCallback as
|
|
2126
|
+
useCallback as useCallback8,
|
|
2121
2127
|
useContext as useContext9,
|
|
2122
2128
|
useEffect as useEffect7,
|
|
2123
2129
|
useState as useState6
|
|
@@ -2128,8 +2134,9 @@ import { v4 as uuid } from "uuid";
|
|
|
2128
2134
|
// src/hooks/useCheckoutDirectExecution.ts
|
|
2129
2135
|
import { DirectExecutionType, getCheckoutQuoteV2 } from "@funkit/api-base";
|
|
2130
2136
|
import { executeRelayQuote } from "@funkit/fun-relay";
|
|
2131
|
-
import {
|
|
2132
|
-
import {
|
|
2137
|
+
import { FlagKey as FlagKey4 } from "@funkit/utils";
|
|
2138
|
+
import { useCallback as useCallback5 } from "react";
|
|
2139
|
+
import { useConfig as useConfig2, useWalletClient } from "wagmi";
|
|
2133
2140
|
|
|
2134
2141
|
// src/consts/checkout.ts
|
|
2135
2142
|
var CHECKOUT_STEP_MESSAGE = {
|
|
@@ -2146,48 +2153,10 @@ var WEB3_ACCOUNT_BALANCE_MESSAGE = {
|
|
|
2146
2153
|
[2 /* APPROVE_TRANSFER */]: (tokenSymbol) => `Confirm ${tokenSymbol} transfer`
|
|
2147
2154
|
};
|
|
2148
2155
|
|
|
2149
|
-
// src/hooks/
|
|
2150
|
-
import {
|
|
2156
|
+
// src/hooks/useIsTokenWhitelisted.ts
|
|
2157
|
+
import { isTokenAddressEquivalent as isTokenAddressEquivalent2 } from "@funkit/utils";
|
|
2151
2158
|
import { useCallback as useCallback3, useMemo as useMemo7 } from "react";
|
|
2152
2159
|
|
|
2153
|
-
// src/consts/customers.ts
|
|
2154
|
-
import {
|
|
2155
|
-
BANKR_API_KEY,
|
|
2156
|
-
BASED_API_KEY,
|
|
2157
|
-
BSX_API_KEY,
|
|
2158
|
-
ETHEREAL_API_KEY,
|
|
2159
|
-
HYPERBEAT_API_KEY,
|
|
2160
|
-
KALSHI_API_KEY,
|
|
2161
|
-
KATANA_API_KEY,
|
|
2162
|
-
MONKEY_TILT_API_KEY,
|
|
2163
|
-
OSTIUM_API_KEY,
|
|
2164
|
-
POLYMARKET_API_KEY
|
|
2165
|
-
} from "@funkit/api-base";
|
|
2166
|
-
function isPolymarketCustomer(apiKey) {
|
|
2167
|
-
return apiKey === POLYMARKET_API_KEY;
|
|
2168
|
-
}
|
|
2169
|
-
function isOstiumCustomer(apiKey) {
|
|
2170
|
-
return apiKey === OSTIUM_API_KEY;
|
|
2171
|
-
}
|
|
2172
|
-
function isBankrCustomer(apiKey) {
|
|
2173
|
-
return apiKey === BANKR_API_KEY;
|
|
2174
|
-
}
|
|
2175
|
-
function isEtherealCustomer(apiKey) {
|
|
2176
|
-
return apiKey === ETHEREAL_API_KEY;
|
|
2177
|
-
}
|
|
2178
|
-
function isKatanaCustomer(apiKey) {
|
|
2179
|
-
return apiKey === KATANA_API_KEY;
|
|
2180
|
-
}
|
|
2181
|
-
function isHyperbeatCustomer(apiKey) {
|
|
2182
|
-
return apiKey === HYPERBEAT_API_KEY;
|
|
2183
|
-
}
|
|
2184
|
-
function isBasedCustomer(apiKey) {
|
|
2185
|
-
return apiKey === BASED_API_KEY;
|
|
2186
|
-
}
|
|
2187
|
-
function isKalshiCustomer(apiKey) {
|
|
2188
|
-
return apiKey === KALSHI_API_KEY;
|
|
2189
|
-
}
|
|
2190
|
-
|
|
2191
2160
|
// src/providers/FunkitFlagsProvider.tsx
|
|
2192
2161
|
import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
|
|
2193
2162
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
@@ -2200,19 +2169,19 @@ import React12, {
|
|
|
2200
2169
|
|
|
2201
2170
|
// src/utils/flags/config.ts
|
|
2202
2171
|
import {
|
|
2203
|
-
BANKR_API_KEY
|
|
2204
|
-
BASED_API_KEY
|
|
2172
|
+
BANKR_API_KEY,
|
|
2173
|
+
BASED_API_KEY,
|
|
2205
2174
|
CAMBRIA_API_KEY,
|
|
2206
2175
|
DEGEN_API_KEY,
|
|
2207
2176
|
DEV_API_KEY as DEV_API_KEY2,
|
|
2208
|
-
HYPERBEAT_API_KEY
|
|
2177
|
+
HYPERBEAT_API_KEY,
|
|
2209
2178
|
HYPERDASH_API_KEY,
|
|
2210
2179
|
HYPERSWAP_API_KEY,
|
|
2211
|
-
KALSHI_API_KEY
|
|
2212
|
-
KATANA_API_KEY
|
|
2213
|
-
MONKEY_TILT_API_KEY
|
|
2214
|
-
OSTIUM_API_KEY
|
|
2215
|
-
POLYMARKET_API_KEY
|
|
2180
|
+
KALSHI_API_KEY,
|
|
2181
|
+
KATANA_API_KEY,
|
|
2182
|
+
MONKEY_TILT_API_KEY,
|
|
2183
|
+
OSTIUM_API_KEY,
|
|
2184
|
+
POLYMARKET_API_KEY,
|
|
2216
2185
|
SUSHI_API_KEY,
|
|
2217
2186
|
VENTUALS_API_KEY
|
|
2218
2187
|
} from "@funkit/api-base";
|
|
@@ -2301,7 +2270,7 @@ var flagConfig = {
|
|
|
2301
2270
|
{
|
|
2302
2271
|
key: "apiKey",
|
|
2303
2272
|
type: "isAnyOf",
|
|
2304
|
-
values: [DEGEN_API_KEY,
|
|
2273
|
+
values: [DEGEN_API_KEY, BANKR_API_KEY, BASED_API_KEY]
|
|
2305
2274
|
}
|
|
2306
2275
|
],
|
|
2307
2276
|
// Do not block US for Degen, since its still pure slow flow
|
|
@@ -2315,7 +2284,7 @@ var flagConfig = {
|
|
|
2315
2284
|
{
|
|
2316
2285
|
key: "apiKey",
|
|
2317
2286
|
type: "isAnyOf",
|
|
2318
|
-
values: [
|
|
2287
|
+
values: [POLYMARKET_API_KEY, KATANA_API_KEY, KALSHI_API_KEY]
|
|
2319
2288
|
}
|
|
2320
2289
|
],
|
|
2321
2290
|
// Turn off geoblock for PM / Katana / Kalshi on our end.
|
|
@@ -2342,7 +2311,7 @@ var flagConfig = {
|
|
|
2342
2311
|
{
|
|
2343
2312
|
key: "apiKey",
|
|
2344
2313
|
type: "isAnyOf",
|
|
2345
|
-
values: [
|
|
2314
|
+
values: [KATANA_API_KEY]
|
|
2346
2315
|
}
|
|
2347
2316
|
],
|
|
2348
2317
|
value: true
|
|
@@ -2359,18 +2328,18 @@ var flagConfig = {
|
|
|
2359
2328
|
key: "apiKey",
|
|
2360
2329
|
type: "isAnyOf",
|
|
2361
2330
|
values: [
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2331
|
+
POLYMARKET_API_KEY,
|
|
2332
|
+
OSTIUM_API_KEY,
|
|
2333
|
+
BANKR_API_KEY,
|
|
2334
|
+
BASED_API_KEY,
|
|
2335
|
+
KATANA_API_KEY,
|
|
2367
2336
|
CAMBRIA_API_KEY,
|
|
2368
|
-
|
|
2337
|
+
HYPERBEAT_API_KEY,
|
|
2369
2338
|
HYPERSWAP_API_KEY,
|
|
2370
2339
|
HYPERDASH_API_KEY,
|
|
2371
|
-
|
|
2340
|
+
MONKEY_TILT_API_KEY,
|
|
2372
2341
|
VENTUALS_API_KEY,
|
|
2373
|
-
|
|
2342
|
+
KALSHI_API_KEY
|
|
2374
2343
|
]
|
|
2375
2344
|
}
|
|
2376
2345
|
],
|
|
@@ -2415,8 +2384,8 @@ var flagConfig = {
|
|
|
2415
2384
|
type: "isAnyOf",
|
|
2416
2385
|
values: [
|
|
2417
2386
|
DEV_API_KEY2,
|
|
2418
|
-
|
|
2419
|
-
|
|
2387
|
+
POLYMARKET_API_KEY,
|
|
2388
|
+
OSTIUM_API_KEY
|
|
2420
2389
|
// HYPERBEAT_API_KEY,
|
|
2421
2390
|
// HYPERDASH_API_KEY,
|
|
2422
2391
|
// BASED_API_KEY,
|
|
@@ -2475,10 +2444,10 @@ var flagConfig = {
|
|
|
2475
2444
|
key: "apiKey",
|
|
2476
2445
|
type: "isAnyOf",
|
|
2477
2446
|
values: [
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2447
|
+
POLYMARKET_API_KEY,
|
|
2448
|
+
OSTIUM_API_KEY,
|
|
2449
|
+
BANKR_API_KEY,
|
|
2450
|
+
KATANA_API_KEY
|
|
2482
2451
|
]
|
|
2483
2452
|
}
|
|
2484
2453
|
],
|
|
@@ -2502,7 +2471,7 @@ var flagConfig = {
|
|
|
2502
2471
|
{
|
|
2503
2472
|
key: "apiKey",
|
|
2504
2473
|
type: "isAnyOf",
|
|
2505
|
-
values: [
|
|
2474
|
+
values: [OSTIUM_API_KEY]
|
|
2506
2475
|
}
|
|
2507
2476
|
],
|
|
2508
2477
|
value: arbitrum.id.toString()
|
|
@@ -2512,7 +2481,7 @@ var flagConfig = {
|
|
|
2512
2481
|
{
|
|
2513
2482
|
key: "apiKey",
|
|
2514
2483
|
type: "isAnyOf",
|
|
2515
|
-
values: [
|
|
2484
|
+
values: [BANKR_API_KEY, KALSHI_API_KEY]
|
|
2516
2485
|
}
|
|
2517
2486
|
],
|
|
2518
2487
|
value: base3.id.toString()
|
|
@@ -2535,11 +2504,11 @@ var flagConfig = {
|
|
|
2535
2504
|
{
|
|
2536
2505
|
key: "apiKey",
|
|
2537
2506
|
type: "isAnyOf",
|
|
2538
|
-
values: [
|
|
2507
|
+
values: [POLYMARKET_API_KEY]
|
|
2539
2508
|
}
|
|
2540
2509
|
],
|
|
2541
2510
|
value: JSON.stringify({
|
|
2542
|
-
message: ""
|
|
2511
|
+
message: "Deposits on BSC are delayed and may take longer to process."
|
|
2543
2512
|
})
|
|
2544
2513
|
}
|
|
2545
2514
|
]
|
|
@@ -2653,7 +2622,7 @@ var flagConfig = {
|
|
|
2653
2622
|
{
|
|
2654
2623
|
key: "apiKey",
|
|
2655
2624
|
type: "isAnyOf",
|
|
2656
|
-
values: [
|
|
2625
|
+
values: [KATANA_API_KEY, KALSHI_API_KEY]
|
|
2657
2626
|
}
|
|
2658
2627
|
],
|
|
2659
2628
|
value: false
|
|
@@ -2737,13 +2706,13 @@ var flagConfig = {
|
|
|
2737
2706
|
values: [
|
|
2738
2707
|
SUSHI_API_KEY,
|
|
2739
2708
|
HYPERSWAP_API_KEY,
|
|
2740
|
-
|
|
2709
|
+
HYPERBEAT_API_KEY,
|
|
2741
2710
|
HYPERDASH_API_KEY,
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2711
|
+
BASED_API_KEY,
|
|
2712
|
+
OSTIUM_API_KEY,
|
|
2713
|
+
POLYMARKET_API_KEY,
|
|
2745
2714
|
VENTUALS_API_KEY,
|
|
2746
|
-
|
|
2715
|
+
KALSHI_API_KEY
|
|
2747
2716
|
]
|
|
2748
2717
|
}
|
|
2749
2718
|
],
|
|
@@ -2795,14 +2764,6 @@ var flagConfig = {
|
|
|
2795
2764
|
137: []
|
|
2796
2765
|
})
|
|
2797
2766
|
},
|
|
2798
|
-
[FlagKey.WithdrawalExcludeChains]: {
|
|
2799
|
-
type: "string",
|
|
2800
|
-
default_value: JSON.stringify([56, 10])
|
|
2801
|
-
},
|
|
2802
|
-
[FlagKey.EnableSourceNavigationWidget]: {
|
|
2803
|
-
type: "boolean",
|
|
2804
|
-
default_value: false
|
|
2805
|
-
},
|
|
2806
2767
|
[FlagKey.TokenTransferDefaultTokens]: {
|
|
2807
2768
|
type: "string",
|
|
2808
2769
|
default_value: "",
|
|
@@ -2812,7 +2773,7 @@ var flagConfig = {
|
|
|
2812
2773
|
{
|
|
2813
2774
|
key: "apiKey",
|
|
2814
2775
|
type: "isAnyOf",
|
|
2815
|
-
values: [
|
|
2776
|
+
values: [POLYMARKET_API_KEY]
|
|
2816
2777
|
}
|
|
2817
2778
|
],
|
|
2818
2779
|
value: JSON.stringify(["USDC", "USDC.e"])
|
|
@@ -2862,7 +2823,7 @@ var flagConfig = {
|
|
|
2862
2823
|
{
|
|
2863
2824
|
key: "apiKey",
|
|
2864
2825
|
type: "isAnyOf",
|
|
2865
|
-
values: [
|
|
2826
|
+
values: [BASED_API_KEY]
|
|
2866
2827
|
}
|
|
2867
2828
|
],
|
|
2868
2829
|
value: JSON.stringify({
|
|
@@ -3002,6 +2963,44 @@ import React11, {
|
|
|
3002
2963
|
} from "react";
|
|
3003
2964
|
import { FlagKey as FlagKey2 } from "@funkit/utils";
|
|
3004
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
|
+
|
|
3005
3004
|
// src/providers/FunkitSandboxContext.tsx
|
|
3006
3005
|
import { createContext as createContext6, useContext as useContext6 } from "react";
|
|
3007
3006
|
var FunkitSandboxContext = createContext6(false);
|
|
@@ -3211,13 +3210,57 @@ function safeJSONParse(src) {
|
|
|
3211
3210
|
});
|
|
3212
3211
|
}
|
|
3213
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
|
+
|
|
3214
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";
|
|
3215
3258
|
var isTokenFlagEnabled = (tokenList, tokenAddress) => {
|
|
3216
3259
|
if (tokenList.includes("*")) {
|
|
3217
3260
|
return true;
|
|
3218
3261
|
}
|
|
3219
3262
|
return tokenList.some(
|
|
3220
|
-
(t) =>
|
|
3263
|
+
(t) => isTokenAddressEquivalent3({
|
|
3221
3264
|
firstTokenAddress: t,
|
|
3222
3265
|
secondTokenAddress: tokenAddress
|
|
3223
3266
|
})
|
|
@@ -3228,11 +3271,11 @@ function useSourceTokenRelayEnabled() {
|
|
|
3228
3271
|
const sourceTokensJsonString = useFlag(
|
|
3229
3272
|
FlagKey3.RelayBypassSourceChainsAndAssets
|
|
3230
3273
|
);
|
|
3231
|
-
const sourceTokens =
|
|
3274
|
+
const sourceTokens = useMemo8(
|
|
3232
3275
|
() => safeJSONParse(sourceTokensJsonString),
|
|
3233
3276
|
[sourceTokensJsonString]
|
|
3234
3277
|
);
|
|
3235
|
-
const isAllowed =
|
|
3278
|
+
const isAllowed = useCallback4(
|
|
3236
3279
|
(chainId, tokenAddress) => {
|
|
3237
3280
|
return isRelayBypassEnabled && isTokenFlagEnabled(
|
|
3238
3281
|
sourceTokens?.[Number.parseInt(`${chainId}`)] || [],
|
|
@@ -3258,7 +3301,7 @@ function useRelayBypass() {
|
|
|
3258
3301
|
const targetTokens = safeJSONParse(
|
|
3259
3302
|
targetTokensJsonString
|
|
3260
3303
|
);
|
|
3261
|
-
const paymentMethodWhitelistConfig =
|
|
3304
|
+
const paymentMethodWhitelistConfig = useMemo8(() => {
|
|
3262
3305
|
if (isKatanaCustomer(apiKey)) {
|
|
3263
3306
|
return {
|
|
3264
3307
|
relayPaymentMethods: [
|
|
@@ -3276,7 +3319,7 @@ function useRelayBypass() {
|
|
|
3276
3319
|
};
|
|
3277
3320
|
}, [apiKey]);
|
|
3278
3321
|
return {
|
|
3279
|
-
getIsRelayEnabled:
|
|
3322
|
+
getIsRelayEnabled: useCallback4(
|
|
3280
3323
|
({
|
|
3281
3324
|
fromChainId,
|
|
3282
3325
|
fromTokenAddress,
|
|
@@ -3323,7 +3366,9 @@ function useCheckoutDirectExecution() {
|
|
|
3323
3366
|
const { data: walletClient } = useWalletClient();
|
|
3324
3367
|
const { getIsRelayEnabled } = useRelayBypass();
|
|
3325
3368
|
const { apiKey } = useFunkitConfig();
|
|
3326
|
-
const
|
|
3369
|
+
const isPermitEnabledForToken = useIsTokenWhitelisted(FlagKey4.Permit2Tokens);
|
|
3370
|
+
const wagmiConfig = useConfig2();
|
|
3371
|
+
const getRelayDirectExecutionBaseQuote = useCallback5(
|
|
3327
3372
|
async (params) => {
|
|
3328
3373
|
const {
|
|
3329
3374
|
actionParams,
|
|
@@ -3334,6 +3379,13 @@ function useCheckoutDirectExecution() {
|
|
|
3334
3379
|
recipientAddress,
|
|
3335
3380
|
senderAddress = address
|
|
3336
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);
|
|
3337
3389
|
const getCheckoutQuoteParams = {
|
|
3338
3390
|
actionParams,
|
|
3339
3391
|
apiKey,
|
|
@@ -3343,7 +3395,8 @@ function useCheckoutDirectExecution() {
|
|
|
3343
3395
|
recipientAddress,
|
|
3344
3396
|
toChainId,
|
|
3345
3397
|
toTokenAddress,
|
|
3346
|
-
userAddress: senderAddress
|
|
3398
|
+
userAddress: senderAddress,
|
|
3399
|
+
usePermit
|
|
3347
3400
|
};
|
|
3348
3401
|
if (params.isExactIn) {
|
|
3349
3402
|
const { fromTokenDecimals, fromTokenAmount } = params;
|
|
@@ -3360,9 +3413,9 @@ function useCheckoutDirectExecution() {
|
|
|
3360
3413
|
toAmountBaseUnit: BigInt(Math.floor(toTokenAmount * multiplier))
|
|
3361
3414
|
});
|
|
3362
3415
|
},
|
|
3363
|
-
[address, apiKey]
|
|
3416
|
+
[address, apiKey, isPermitEnabledForToken, wagmiConfig]
|
|
3364
3417
|
);
|
|
3365
|
-
const checkAndSwitchChains =
|
|
3418
|
+
const checkAndSwitchChains = useCallback5(
|
|
3366
3419
|
async ({
|
|
3367
3420
|
executionChainId,
|
|
3368
3421
|
stepMessageSetter
|
|
@@ -3386,7 +3439,7 @@ function useCheckoutDirectExecution() {
|
|
|
3386
3439
|
},
|
|
3387
3440
|
[connector, switchChainAsync]
|
|
3388
3441
|
);
|
|
3389
|
-
const startRelayDirectExecution =
|
|
3442
|
+
const startRelayDirectExecution = useCallback5(
|
|
3390
3443
|
async ({
|
|
3391
3444
|
checkoutItem,
|
|
3392
3445
|
latestQuote,
|
|
@@ -3463,7 +3516,7 @@ function useCheckoutDirectExecution() {
|
|
|
3463
3516
|
},
|
|
3464
3517
|
[walletClient, checkAndSwitchChains]
|
|
3465
3518
|
);
|
|
3466
|
-
const getDirectExecutionInfo =
|
|
3519
|
+
const getDirectExecutionInfo = useCallback5(
|
|
3467
3520
|
(checkoutItem) => {
|
|
3468
3521
|
const noop10 = {
|
|
3469
3522
|
isDirectExecution: false,
|
|
@@ -3501,7 +3554,7 @@ function useCheckoutDirectExecution() {
|
|
|
3501
3554
|
startRelayDirectExecution
|
|
3502
3555
|
]
|
|
3503
3556
|
);
|
|
3504
|
-
const getWithdrawalDirectExecution =
|
|
3557
|
+
const getWithdrawalDirectExecution = useCallback5(() => {
|
|
3505
3558
|
const quoteAction = getRelayDirectExecutionBaseQuote;
|
|
3506
3559
|
const executeAction = startRelayDirectExecution;
|
|
3507
3560
|
return {
|
|
@@ -3521,9 +3574,9 @@ function useCheckoutDirectExecution() {
|
|
|
3521
3574
|
import {
|
|
3522
3575
|
initializeCheckoutTokenTransferAddress
|
|
3523
3576
|
} from "@funkit/api-base";
|
|
3524
|
-
import { FlagKey as
|
|
3577
|
+
import { FlagKey as FlagKey5 } from "@funkit/utils";
|
|
3525
3578
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
3526
|
-
import { useCallback as
|
|
3579
|
+
import { useCallback as useCallback6 } from "react";
|
|
3527
3580
|
|
|
3528
3581
|
// src/domains/clientMetadata.ts
|
|
3529
3582
|
function generateClientMetadataForBackend({
|
|
@@ -3596,7 +3649,7 @@ var useCheckoutTransferInit = () => {
|
|
|
3596
3649
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
3597
3650
|
const { walletAddress, userInfo } = useGeneralWallet();
|
|
3598
3651
|
const { apiKey } = useFunkitConfig();
|
|
3599
|
-
const isQrCodeEnabled = useFlag(
|
|
3652
|
+
const isQrCodeEnabled = useFlag(FlagKey5.EnableTokenTransfer, false);
|
|
3600
3653
|
const recipientAddr = checkoutConfig?.customRecipient || walletAddress || "0x";
|
|
3601
3654
|
const queryKey = {
|
|
3602
3655
|
userId: userInfo.id || "",
|
|
@@ -3606,7 +3659,7 @@ var useCheckoutTransferInit = () => {
|
|
|
3606
3659
|
apiKey,
|
|
3607
3660
|
actionType: checkoutConfig?.qrcodeActionType
|
|
3608
3661
|
};
|
|
3609
|
-
const queryFunction =
|
|
3662
|
+
const queryFunction = useCallback6(
|
|
3610
3663
|
async (params) => {
|
|
3611
3664
|
return await initializeCheckoutTokenTransferAddress({
|
|
3612
3665
|
...params,
|
|
@@ -3638,13 +3691,13 @@ var useCheckoutTransferInit = () => {
|
|
|
3638
3691
|
};
|
|
3639
3692
|
|
|
3640
3693
|
// src/hooks/useEffectEvent.ts
|
|
3641
|
-
import { useCallback as
|
|
3694
|
+
import { useCallback as useCallback7, useInsertionEffect, useRef } from "react";
|
|
3642
3695
|
function useEffectEvent(fn) {
|
|
3643
3696
|
const savedCallback = useRef(fn);
|
|
3644
3697
|
useInsertionEffect(() => {
|
|
3645
3698
|
savedCallback.current = fn;
|
|
3646
3699
|
}, [fn]);
|
|
3647
|
-
return
|
|
3700
|
+
return useCallback7(
|
|
3648
3701
|
((...args) => {
|
|
3649
3702
|
const f = savedCallback.current;
|
|
3650
3703
|
return f(...args);
|
|
@@ -3714,13 +3767,13 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3714
3767
|
const [activeCheckout, setActiveCheckout] = useState6(null);
|
|
3715
3768
|
const [activeWithdrawal, setActiveWithdrawal] = useState6(null);
|
|
3716
3769
|
const [checkoutsProgress, setCheckoutsProgress] = useState6({});
|
|
3717
|
-
const getCheckoutProgress =
|
|
3770
|
+
const getCheckoutProgress = useCallback8(
|
|
3718
3771
|
(checkoutId) => {
|
|
3719
3772
|
return checkoutsProgress[checkoutId];
|
|
3720
3773
|
},
|
|
3721
3774
|
[checkoutsProgress]
|
|
3722
3775
|
);
|
|
3723
|
-
const setCheckoutProgress =
|
|
3776
|
+
const setCheckoutProgress = useCallback8(
|
|
3724
3777
|
(checkoutId, progress) => {
|
|
3725
3778
|
setCheckoutsProgress((data) => ({ ...data, [checkoutId]: progress }));
|
|
3726
3779
|
},
|
|
@@ -3742,7 +3795,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3742
3795
|
});
|
|
3743
3796
|
}
|
|
3744
3797
|
);
|
|
3745
|
-
const initNewWithdrawal =
|
|
3798
|
+
const initNewWithdrawal = useCallback8(
|
|
3746
3799
|
(props) => {
|
|
3747
3800
|
const { onWithdrawalConfirmation, onWithdrawalError, config } = props;
|
|
3748
3801
|
const newWithdrawalId = uuid();
|
|
@@ -3760,7 +3813,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3760
3813
|
},
|
|
3761
3814
|
[]
|
|
3762
3815
|
);
|
|
3763
|
-
const initNewCheckout =
|
|
3816
|
+
const initNewCheckout = useCallback8(
|
|
3764
3817
|
({ config, ...initSettings }) => {
|
|
3765
3818
|
const newCheckoutId = uuid();
|
|
3766
3819
|
const newActiveCheckoutItem = {
|
|
@@ -3835,7 +3888,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3835
3888
|
});
|
|
3836
3889
|
}
|
|
3837
3890
|
);
|
|
3838
|
-
const startDirectExecutionCheckout =
|
|
3891
|
+
const startDirectExecutionCheckout = useCallback8(
|
|
3839
3892
|
async ({
|
|
3840
3893
|
stepMessageSetter,
|
|
3841
3894
|
latestQuote,
|
|
@@ -3921,7 +3974,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
3921
3974
|
manualFetch
|
|
3922
3975
|
]
|
|
3923
3976
|
);
|
|
3924
|
-
const startRegularCheckout =
|
|
3977
|
+
const startRegularCheckout = useCallback8(
|
|
3925
3978
|
async ({
|
|
3926
3979
|
stepMessageSetter,
|
|
3927
3980
|
latestQuote,
|
|
@@ -4121,15 +4174,15 @@ function useFunkitCheckout(props) {
|
|
|
4121
4174
|
const { openWithdrawalModal } = useWithdrawalModal();
|
|
4122
4175
|
const { connectModalOpen, openConnectModal } = useConnectModal();
|
|
4123
4176
|
const { isUserLoggedIn } = useGeneralWallet();
|
|
4124
|
-
const isCheckoutActivated = useFlag(
|
|
4125
|
-
const onErrorWrapper =
|
|
4177
|
+
const isCheckoutActivated = useFlag(FlagKey6.IsCheckoutActivated);
|
|
4178
|
+
const onErrorWrapper = useCallback8(
|
|
4126
4179
|
(payload) => {
|
|
4127
4180
|
logger.warn(payload.message, payload);
|
|
4128
4181
|
onError?.(payload);
|
|
4129
4182
|
},
|
|
4130
4183
|
[onError]
|
|
4131
4184
|
);
|
|
4132
|
-
const onOpenWrapper =
|
|
4185
|
+
const onOpenWrapper = useCallback8(
|
|
4133
4186
|
(newId) => {
|
|
4134
4187
|
props?.onOpen?.();
|
|
4135
4188
|
openFunCheckoutModal?.(newId);
|
|
@@ -4321,18 +4374,6 @@ async function validateCheckoutConfig(config) {
|
|
|
4321
4374
|
message: `Invalid targetChain configuration: Unsupported chain id ${config.targetChain} for checkout.`
|
|
4322
4375
|
};
|
|
4323
4376
|
}
|
|
4324
|
-
const chainCheckoutAssetWhitelist = FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO4[config.targetChain]?.checkoutAssetWhitelist || [];
|
|
4325
|
-
if (chainCheckoutAssetWhitelist?.[0] !== "*" && !chainCheckoutAssetWhitelist.some(
|
|
4326
|
-
(asset) => isTokenAddressEquivalent3({
|
|
4327
|
-
firstTokenAddress: asset,
|
|
4328
|
-
secondTokenAddress: config.targetAsset || ""
|
|
4329
|
-
})
|
|
4330
|
-
)) {
|
|
4331
|
-
return {
|
|
4332
|
-
isValid: false,
|
|
4333
|
-
message: `Invalid targetAsset ${config.targetAsset} for targetChain ${config.targetChain}.`
|
|
4334
|
-
};
|
|
4335
|
-
}
|
|
4336
4377
|
if (config.customRecipient && !isAddress(config.customRecipient)) {
|
|
4337
4378
|
return {
|
|
4338
4379
|
isValid: false,
|
|
@@ -4364,7 +4405,7 @@ async function validateCheckoutConfig(config) {
|
|
|
4364
4405
|
};
|
|
4365
4406
|
}
|
|
4366
4407
|
var hasSufficientBalance = async (wagmiConfig, walletAddress, tokenAddress, tokenChainId, requiredAssetAmount) => {
|
|
4367
|
-
const finalTokenAddress =
|
|
4408
|
+
const finalTokenAddress = isTokenAddressEquivalent4({
|
|
4368
4409
|
firstTokenAddress: tokenAddress,
|
|
4369
4410
|
secondTokenAddress: FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS2
|
|
4370
4411
|
}) ? void 0 : tokenAddress;
|
|
@@ -4385,6 +4426,27 @@ var hasSufficientBalance = async (wagmiConfig, walletAddress, tokenAddress, toke
|
|
|
4385
4426
|
}
|
|
4386
4427
|
return { balance, result: false, tokenTicker: null };
|
|
4387
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
|
+
};
|
|
4388
4450
|
function getFunkitEnvForCheckoutEstimation({
|
|
4389
4451
|
chainId,
|
|
4390
4452
|
bypassWalletInit
|
|
@@ -4707,7 +4769,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
4707
4769
|
const [isInited, setIsInited] = useState7(false);
|
|
4708
4770
|
const [isRefreshing, setIsRefreshing] = useState7(true);
|
|
4709
4771
|
const isGuestUserOnCheckoutHistory = !isUserLoggedIn && !!historyDepositAddress;
|
|
4710
|
-
const _refreshCheckoutHistory =
|
|
4772
|
+
const _refreshCheckoutHistory = useCallback9(async () => {
|
|
4711
4773
|
if (!funkitConfig.apiKey) {
|
|
4712
4774
|
return;
|
|
4713
4775
|
}
|
|
@@ -4775,7 +4837,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
4775
4837
|
clearInterval(intervalRef.current);
|
|
4776
4838
|
}
|
|
4777
4839
|
}, [logoutSymbol]);
|
|
4778
|
-
const startCheckoutHistoryListener =
|
|
4840
|
+
const startCheckoutHistoryListener = useCallback9(
|
|
4779
4841
|
(singleDepositAddr, expedited = false) => {
|
|
4780
4842
|
setHistoryDepositAddress(singleDepositAddr);
|
|
4781
4843
|
clearInterval(intervalRef.current);
|
|
@@ -4791,7 +4853,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
4791
4853
|
},
|
|
4792
4854
|
[triggerRefreshSymbol]
|
|
4793
4855
|
);
|
|
4794
|
-
const stopCheckoutHistoryListener =
|
|
4856
|
+
const stopCheckoutHistoryListener = useCallback9(
|
|
4795
4857
|
(cancelIntervalId) => {
|
|
4796
4858
|
clearInterval(cancelIntervalId);
|
|
4797
4859
|
if (cancelIntervalId === intervalRef.current) {
|
|
@@ -4943,7 +5005,7 @@ var useFunkitPostCheckoutInternal = (checkoutId) => {
|
|
|
4943
5005
|
};
|
|
4944
5006
|
|
|
4945
5007
|
// src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
|
|
4946
|
-
import React22, { useEffect as useEffect11, useMemo as
|
|
5008
|
+
import React22, { useEffect as useEffect11, useMemo as useMemo9, useState as useState10 } from "react";
|
|
4947
5009
|
|
|
4948
5010
|
// src/components/TransactionStatus/TransactionStatus.tsx
|
|
4949
5011
|
import {
|
|
@@ -4952,7 +5014,7 @@ import {
|
|
|
4952
5014
|
useAnimate
|
|
4953
5015
|
} from "motion/react";
|
|
4954
5016
|
import React21, {
|
|
4955
|
-
useCallback as
|
|
5017
|
+
useCallback as useCallback10,
|
|
4956
5018
|
useEffect as useEffect10,
|
|
4957
5019
|
useRef as useRef3,
|
|
4958
5020
|
useState as useState9
|
|
@@ -5675,11 +5737,11 @@ function TransactionStatus({
|
|
|
5675
5737
|
const [transitioningToStatus, setTransitioningToStatus] = useState9(status);
|
|
5676
5738
|
const [transitioningToStep, setTransitioningToStep] = useState9(step);
|
|
5677
5739
|
const spinAnimationRef = useRef3();
|
|
5678
|
-
const stopSpinning =
|
|
5740
|
+
const stopSpinning = useCallback10(() => {
|
|
5679
5741
|
spinAnimationRef.current?.cancel();
|
|
5680
5742
|
spinAnimationRef.current = void 0;
|
|
5681
5743
|
}, []);
|
|
5682
|
-
const startSpinning =
|
|
5744
|
+
const startSpinning = useCallback10(
|
|
5683
5745
|
(step2) => {
|
|
5684
5746
|
stopSpinning();
|
|
5685
5747
|
spinAnimationRef.current = animate(
|
|
@@ -5697,7 +5759,7 @@ function TransactionStatus({
|
|
|
5697
5759
|
},
|
|
5698
5760
|
[animate, stopSpinning]
|
|
5699
5761
|
);
|
|
5700
|
-
const animateCircleToSuccess =
|
|
5762
|
+
const animateCircleToSuccess = useCallback10(
|
|
5701
5763
|
async (step2) => {
|
|
5702
5764
|
const durationMs = 300;
|
|
5703
5765
|
const checkmarkDelayMs = 50;
|
|
@@ -6093,7 +6155,7 @@ function FunCheckoutStatusLoaded({
|
|
|
6093
6155
|
checkoutHistoryItem.state,
|
|
6094
6156
|
checkoutHistoryItem.refundState
|
|
6095
6157
|
);
|
|
6096
|
-
const startTimeMs =
|
|
6158
|
+
const startTimeMs = useMemo9(
|
|
6097
6159
|
() => extractStartTimeMs(
|
|
6098
6160
|
checkoutHistoryItem.clientMetadata.id,
|
|
6099
6161
|
activeCheckoutItem,
|
|
@@ -6349,7 +6411,7 @@ function isCustomWithdrawalConfig(config) {
|
|
|
6349
6411
|
import { isMobile as isMobile2, isSafari } from "@funkit/utils";
|
|
6350
6412
|
import clsx8 from "clsx";
|
|
6351
6413
|
import React43, {
|
|
6352
|
-
useCallback as
|
|
6414
|
+
useCallback as useCallback13,
|
|
6353
6415
|
useContext as useContext12,
|
|
6354
6416
|
useEffect as useEffect18,
|
|
6355
6417
|
useRef as useRef8
|
|
@@ -6665,7 +6727,7 @@ var ErrorFallback = () => /* @__PURE__ */ React31.createElement(
|
|
|
6665
6727
|
);
|
|
6666
6728
|
|
|
6667
6729
|
// src/components/FunBottomBar/FunBottomBar.tsx
|
|
6668
|
-
import { FlagKey as
|
|
6730
|
+
import { FlagKey as FlagKey7, isMobile } from "@funkit/utils";
|
|
6669
6731
|
import React35 from "react";
|
|
6670
6732
|
|
|
6671
6733
|
// src/components/FunButton/FunButton.tsx
|
|
@@ -6953,7 +7015,7 @@ var FunBottomBar = ({
|
|
|
6953
7015
|
onClose
|
|
6954
7016
|
}) => {
|
|
6955
7017
|
const { uiCustomizations } = useFunkitConfig();
|
|
6956
|
-
const showTagline = useFlag(
|
|
7018
|
+
const showTagline = useFlag(FlagKey7.ShowPoweredTagline);
|
|
6957
7019
|
const defaultBottomSection = showTagline ? /* @__PURE__ */ React35.createElement(FunPoweredTagline, null) : void 0;
|
|
6958
7020
|
const bottomSectionComponent = bottomSection ?? defaultBottomSection;
|
|
6959
7021
|
const hasMultipleButtons = !!onClose;
|
|
@@ -7086,7 +7148,7 @@ function FunDivider({
|
|
|
7086
7148
|
|
|
7087
7149
|
// src/components/FunTooltip/FunTooltip.tsx
|
|
7088
7150
|
import React40, {
|
|
7089
|
-
useCallback as
|
|
7151
|
+
useCallback as useCallback11,
|
|
7090
7152
|
useEffect as useEffect14,
|
|
7091
7153
|
useRef as useRef6,
|
|
7092
7154
|
useState as useState14
|
|
@@ -7177,7 +7239,7 @@ var FunTooltip = ({
|
|
|
7177
7239
|
const startDelayRef = useRef6();
|
|
7178
7240
|
const delayRef = useRef6();
|
|
7179
7241
|
const tooltipRef = useRef6(null);
|
|
7180
|
-
const show =
|
|
7242
|
+
const show = useCallback11(
|
|
7181
7243
|
(startHiding) => {
|
|
7182
7244
|
startDelayRef.current = setTimeout(() => {
|
|
7183
7245
|
setIsDisplayed(true);
|
|
@@ -7187,7 +7249,7 @@ var FunTooltip = ({
|
|
|
7187
7249
|
},
|
|
7188
7250
|
[startDelay]
|
|
7189
7251
|
);
|
|
7190
|
-
const hide =
|
|
7252
|
+
const hide = useCallback11(() => {
|
|
7191
7253
|
clearTimeout(startDelayRef.current);
|
|
7192
7254
|
delayRef.current = setTimeout(() => {
|
|
7193
7255
|
setIsDisplayed(false);
|
|
@@ -7300,7 +7362,7 @@ var HelpIcon = () => {
|
|
|
7300
7362
|
};
|
|
7301
7363
|
|
|
7302
7364
|
// src/components/Dialog/FocusTrap.tsx
|
|
7303
|
-
import React42, { useCallback as
|
|
7365
|
+
import React42, { useCallback as useCallback12, useEffect as useEffect15, useRef as useRef7 } from "react";
|
|
7304
7366
|
var moveFocusWithin = (element2, position) => {
|
|
7305
7367
|
const focusableElements = element2.querySelectorAll(
|
|
7306
7368
|
"button:not(:disabled), a[href]"
|
|
@@ -7333,7 +7395,7 @@ function FocusTrap(props) {
|
|
|
7333
7395
|
return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(
|
|
7334
7396
|
"div",
|
|
7335
7397
|
{
|
|
7336
|
-
onFocus:
|
|
7398
|
+
onFocus: useCallback12(
|
|
7337
7399
|
() => contentRef.current && moveFocusWithin(contentRef.current, "end"),
|
|
7338
7400
|
[]
|
|
7339
7401
|
),
|
|
@@ -7350,7 +7412,7 @@ function FocusTrap(props) {
|
|
|
7350
7412
|
), /* @__PURE__ */ React42.createElement(
|
|
7351
7413
|
"div",
|
|
7352
7414
|
{
|
|
7353
|
-
onFocus:
|
|
7415
|
+
onFocus: useCallback12(
|
|
7354
7416
|
() => contentRef.current && moveFocusWithin(contentRef.current, "start"),
|
|
7355
7417
|
[]
|
|
7356
7418
|
),
|
|
@@ -7486,7 +7548,7 @@ function Dialog({
|
|
|
7486
7548
|
}
|
|
7487
7549
|
return () => document.removeEventListener("keydown", handleEscape);
|
|
7488
7550
|
}, [open, onClose, isSmartCloseable]);
|
|
7489
|
-
const handleBackdropClick =
|
|
7551
|
+
const handleBackdropClick = useCallback13(
|
|
7490
7552
|
() => isSmartCloseable ? onClose() : () => void 0,
|
|
7491
7553
|
[isSmartCloseable, onClose]
|
|
7492
7554
|
);
|
|
@@ -7842,17 +7904,17 @@ Dialog.BottomBar = FunBottomBar;
|
|
|
7842
7904
|
// src/modals/WithdrwalModal/WithdrawalContent.tsx
|
|
7843
7905
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7 } from "@funkit/chains";
|
|
7844
7906
|
import {
|
|
7845
|
-
FlagKey as
|
|
7907
|
+
FlagKey as FlagKey14,
|
|
7846
7908
|
formatCryptoAndStringify as formatCryptoAndStringify2,
|
|
7847
7909
|
formatCurrencyAndStringify as formatCurrencyAndStringify3
|
|
7848
7910
|
} from "@funkit/utils";
|
|
7849
|
-
import React67, { useEffect as useEffect27, useMemo as
|
|
7911
|
+
import React67, { useEffect as useEffect27, useMemo as useMemo14, useState as useState26 } from "react";
|
|
7850
7912
|
import { createPortal as createPortal2 } from "react-dom";
|
|
7851
7913
|
import { useDebounce } from "use-debounce";
|
|
7852
7914
|
import { useAccount as useAccount3 } from "wagmi";
|
|
7853
7915
|
|
|
7854
7916
|
// src/components/AsyncImage/AsyncImage.tsx
|
|
7855
|
-
import React44, { useMemo as
|
|
7917
|
+
import React44, { useMemo as useMemo10, useReducer as useReducer2, useState as useState16 } from "react";
|
|
7856
7918
|
|
|
7857
7919
|
// src/components/AsyncImage/useAsyncImage.ts
|
|
7858
7920
|
import { useEffect as useEffect19, useReducer } from "react";
|
|
@@ -7920,7 +7982,7 @@ function AsyncImage({
|
|
|
7920
7982
|
const [hasError, setHasError] = useState16(
|
|
7921
7983
|
srcProp === void 0 && fallbackSrc === void 0
|
|
7922
7984
|
);
|
|
7923
|
-
const { asyncStyle, imgProps } =
|
|
7985
|
+
const { asyncStyle, imgProps } = useMemo10(() => {
|
|
7924
7986
|
const asyncStyle2 = !useAsImage ? getRemoteImageStyles(isRemoteImage, isRemoteImageLoaded, src) : {};
|
|
7925
7987
|
if (useAsImage || isRemoteImage) {
|
|
7926
7988
|
const imgProps2 = {
|
|
@@ -8022,13 +8084,13 @@ var getRemoteImageStyles = (isRemoteImage, isRemoteImageLoaded, src) => {
|
|
|
8022
8084
|
import React59 from "react";
|
|
8023
8085
|
|
|
8024
8086
|
// src/components/Dropdown/ChainDropdown.tsx
|
|
8025
|
-
import { FlagKey as
|
|
8087
|
+
import { FlagKey as FlagKey8 } from "@funkit/utils";
|
|
8026
8088
|
import React56 from "react";
|
|
8027
8089
|
|
|
8028
8090
|
// src/components/Dropdown/BaseDropdown.tsx
|
|
8029
8091
|
import { isMobile as isMobile3, noop as noop2 } from "@funkit/utils";
|
|
8030
8092
|
import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
|
|
8031
|
-
import React53, { useCallback as
|
|
8093
|
+
import React53, { useCallback as useCallback14, useEffect as useEffect22, useMemo as useMemo11, useRef as useRef10, useState as useState18 } from "react";
|
|
8032
8094
|
|
|
8033
8095
|
// src/consts/layout.ts
|
|
8034
8096
|
var VERTICAL_SECTION_GAP = "18";
|
|
@@ -8652,13 +8714,13 @@ function BaseDropdown({
|
|
|
8652
8714
|
const handleSearch = (event) => {
|
|
8653
8715
|
setSearchInput(event.target.value);
|
|
8654
8716
|
};
|
|
8655
|
-
const filteredOptions =
|
|
8717
|
+
const filteredOptions = useMemo11(
|
|
8656
8718
|
() => options.filter(
|
|
8657
8719
|
(singleOption) => singleOption.label.toLowerCase().includes(searchInput?.toLowerCase())
|
|
8658
8720
|
),
|
|
8659
8721
|
[options, searchInput]
|
|
8660
8722
|
);
|
|
8661
|
-
const closeDropdown =
|
|
8723
|
+
const closeDropdown = useCallback14(() => {
|
|
8662
8724
|
setIsOpened(false);
|
|
8663
8725
|
resetSearchOnClose && setSearchInput("");
|
|
8664
8726
|
}, [resetSearchOnClose]);
|
|
@@ -8931,9 +8993,9 @@ var ChainDropdown = ({
|
|
|
8931
8993
|
maxDropdownHeight,
|
|
8932
8994
|
tagComponent
|
|
8933
8995
|
}) => {
|
|
8934
|
-
const defaultChainIdJson = useFlag(
|
|
8996
|
+
const defaultChainIdJson = useFlag(FlagKey8.TokenTransferDefaultChainId);
|
|
8935
8997
|
const defaultChainId = safeJSONParse(defaultChainIdJson);
|
|
8936
|
-
const chainSortOrderJson = useFlag(
|
|
8998
|
+
const chainSortOrderJson = useFlag(FlagKey8.ChainIdSortOrder);
|
|
8937
8999
|
const chainSortOrder = safeJSONParse(chainSortOrderJson) || [];
|
|
8938
9000
|
const chainIds = getSortedChainIds();
|
|
8939
9001
|
const options = allowUnselect ? [DEFAULT_VALUE, ...chainIds] : chainIds;
|
|
@@ -9040,7 +9102,7 @@ var ChainDropdown = ({
|
|
|
9040
9102
|
};
|
|
9041
9103
|
|
|
9042
9104
|
// src/components/Dropdown/TokenDropdown.tsx
|
|
9043
|
-
import { FlagKey as
|
|
9105
|
+
import { FlagKey as FlagKey9, safeParseJson as safeParseJson3 } from "@funkit/utils";
|
|
9044
9106
|
import React58, { useState as useState19 } from "react";
|
|
9045
9107
|
|
|
9046
9108
|
// src/utils/flags/patches/enable-bitcoin-patch.ts
|
|
@@ -9181,12 +9243,12 @@ var NewTokenBadge = ({ iconSymbol }) => {
|
|
|
9181
9243
|
// src/components/Dropdown/TokenDropdown.tsx
|
|
9182
9244
|
var TOKEN_ICON_SIZE = 16;
|
|
9183
9245
|
var useNewTokens = () => {
|
|
9184
|
-
const enableBitcoin = useFlag(
|
|
9185
|
-
const bannerJson = useFlag(
|
|
9246
|
+
const enableBitcoin = useFlag(FlagKey9.EnableBitcoin);
|
|
9247
|
+
const bannerJson = useFlag(FlagKey9.NewTokenAssetSelectionBanner);
|
|
9186
9248
|
const bannerData = safeParseJson3(bannerJson);
|
|
9187
9249
|
const addBitcoinToNewTokensMiddleware = enableBitcoin ? addBitcoinToNewTokens : void 0;
|
|
9188
9250
|
const newBadgeTokensJson = useFlag(
|
|
9189
|
-
|
|
9251
|
+
FlagKey9.TokenTransferNewTokens,
|
|
9190
9252
|
void 0,
|
|
9191
9253
|
addBitcoinToNewTokensMiddleware
|
|
9192
9254
|
);
|
|
@@ -9206,7 +9268,7 @@ var TokenDropdown = ({
|
|
|
9206
9268
|
maxDropdownHeight,
|
|
9207
9269
|
hideNewTokenBadge
|
|
9208
9270
|
}) => {
|
|
9209
|
-
const defaultTokensJson = useFlag(
|
|
9271
|
+
const defaultTokensJson = useFlag(FlagKey9.TokenTransferDefaultTokens);
|
|
9210
9272
|
const defaultTokens = safeJSONParse(defaultTokensJson);
|
|
9211
9273
|
const enabledTokens = assets[selectedChainId];
|
|
9212
9274
|
const allTokens = getSortedTokens();
|
|
@@ -9606,7 +9668,7 @@ import {
|
|
|
9606
9668
|
formatPercent,
|
|
9607
9669
|
noop as noop4
|
|
9608
9670
|
} from "@funkit/utils";
|
|
9609
|
-
import React64, { useEffect as useEffect23, useMemo as
|
|
9671
|
+
import React64, { useEffect as useEffect23, useMemo as useMemo12, useState as useState20 } from "react";
|
|
9610
9672
|
import clsx14 from "clsx";
|
|
9611
9673
|
import { motion as motion6, useAnimationControls } from "motion/react";
|
|
9612
9674
|
import { mainnet as mainnet5 } from "viem/chains";
|
|
@@ -10002,7 +10064,7 @@ function PaymentFeesSummary({
|
|
|
10002
10064
|
}
|
|
10003
10065
|
}, [valuesNotAvailable, isExpanded]);
|
|
10004
10066
|
const { uiCustomizations } = useFunkitConfig();
|
|
10005
|
-
const { collapsed: collapsedItem, expanded: expandedItems } =
|
|
10067
|
+
const { collapsed: collapsedItem, expanded: expandedItems } = useMemo12(() => {
|
|
10006
10068
|
const fees = quote?.finalFeesBreakdown ?? fallbackFees;
|
|
10007
10069
|
if (!fees) {
|
|
10008
10070
|
return NO_DATA;
|
|
@@ -10156,7 +10218,7 @@ var EvmWallet = ({ size = 20 }) => /* @__PURE__ */ React65.createElement(
|
|
|
10156
10218
|
|
|
10157
10219
|
// src/hooks/queries/useWithdrawalQuote.ts
|
|
10158
10220
|
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
10159
|
-
import { useConfig as
|
|
10221
|
+
import { useConfig as useConfig3 } from "wagmi";
|
|
10160
10222
|
|
|
10161
10223
|
// src/domains/quote.ts
|
|
10162
10224
|
import { getCheckoutQuote as getApiCheckoutQuote } from "@funkit/api-base";
|
|
@@ -10592,7 +10654,7 @@ function useWithdrawalQuote({
|
|
|
10592
10654
|
});
|
|
10593
10655
|
const { loginType, userInfo } = useGeneralWallet();
|
|
10594
10656
|
const { apiKey } = useFunkitConfig();
|
|
10595
|
-
const wagmiConfig =
|
|
10657
|
+
const wagmiConfig = useConfig3();
|
|
10596
10658
|
const { getWithdrawalDirectExecution } = useCheckoutDirectExecution();
|
|
10597
10659
|
const { checkoutItem } = useCheckoutContext();
|
|
10598
10660
|
const isInstantQuoting = (symbol === "USDC" || symbol === "USDT") && chainId !== "1";
|
|
@@ -10805,13 +10867,13 @@ var useAssetSymbolPrice = ({
|
|
|
10805
10867
|
};
|
|
10806
10868
|
|
|
10807
10869
|
// src/hooks/useTokenChain.ts
|
|
10808
|
-
import { FlagKey as
|
|
10870
|
+
import { FlagKey as FlagKey11 } from "@funkit/utils";
|
|
10809
10871
|
import { useEffect as useEffect24, useState as useState21 } from "react";
|
|
10810
10872
|
import { polygon as polygon3 } from "viem/chains";
|
|
10811
10873
|
|
|
10812
10874
|
// src/hooks/useEnabledTokenTransferChainTokens.ts
|
|
10813
10875
|
import { bitcoinChain as bitcoinChain2, solanaChain as solanaChain3 } from "@funkit/chains";
|
|
10814
|
-
import { FlagKey as
|
|
10876
|
+
import { FlagKey as FlagKey10 } from "@funkit/utils";
|
|
10815
10877
|
import { base as base4 } from "viem/chains";
|
|
10816
10878
|
|
|
10817
10879
|
// src/hooks/useIsUsUser.ts
|
|
@@ -10833,14 +10895,14 @@ function useIsUsKatanaUser() {
|
|
|
10833
10895
|
// src/hooks/useEnabledTokenTransferChainTokens.ts
|
|
10834
10896
|
function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
|
|
10835
10897
|
const isBankrUsUser = useIsUsBankrUser();
|
|
10836
|
-
const enableBitcoin = useFlag(
|
|
10898
|
+
const enableBitcoin = useFlag(FlagKey10.EnableBitcoin);
|
|
10837
10899
|
const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
|
|
10838
10900
|
const depositAssets = useFlag(
|
|
10839
|
-
|
|
10901
|
+
FlagKey10.TokenTransferSourceChainsAndAssets,
|
|
10840
10902
|
void 0,
|
|
10841
10903
|
addBitcoinToSourceChainsAndAssetsMiddleware
|
|
10842
10904
|
);
|
|
10843
|
-
const withdrawalAssets = useFlag(
|
|
10905
|
+
const withdrawalAssets = useFlag(FlagKey10.WithdrawalChainsAndAssets);
|
|
10844
10906
|
const assetsJsonString = isWithdrawal ? withdrawalAssets : depositAssets;
|
|
10845
10907
|
const assets = safeJSONParse(assetsJsonString);
|
|
10846
10908
|
if (!assets) {
|
|
@@ -10877,7 +10939,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
|
|
|
10877
10939
|
transferInit ?? null,
|
|
10878
10940
|
isWithdrawal
|
|
10879
10941
|
);
|
|
10880
|
-
const defaultChainIdFlag = useFlag(
|
|
10942
|
+
const defaultChainIdFlag = useFlag(FlagKey11.TokenTransferDefaultChainId);
|
|
10881
10943
|
const defaultChainId = defaultValues?.chainId ?? Number(defaultChainIdFlag);
|
|
10882
10944
|
const validDefaultChainId = filteredAssets[defaultChainId] !== void 0 ? defaultChainId : polygon3.id;
|
|
10883
10945
|
const [selectedChainId, setSelectedChainId] = useState21(validDefaultChainId);
|
|
@@ -10932,7 +10994,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
|
|
|
10932
10994
|
import { useState as useState25 } from "react";
|
|
10933
10995
|
|
|
10934
10996
|
// src/hooks/useAutoClearState.ts
|
|
10935
|
-
import { useCallback as
|
|
10997
|
+
import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef11, useState as useState22 } from "react";
|
|
10936
10998
|
function useAutoClearState(initialValue = null) {
|
|
10937
10999
|
const [state, setState] = useState22(initialValue);
|
|
10938
11000
|
const timeoutRef = useRef11();
|
|
@@ -10945,7 +11007,7 @@ function useAutoClearState(initialValue = null) {
|
|
|
10945
11007
|
}, []);
|
|
10946
11008
|
return [
|
|
10947
11009
|
state,
|
|
10948
|
-
|
|
11010
|
+
useCallback15((newState, durationMs) => {
|
|
10949
11011
|
if (timeoutRef.current) {
|
|
10950
11012
|
clearTimeout(timeoutRef.current);
|
|
10951
11013
|
timeoutRef.current = void 0;
|
|
@@ -10963,11 +11025,11 @@ import { ClientError as ClientError2 } from "@funkit/utils";
|
|
|
10963
11025
|
import { useState as useState24 } from "react";
|
|
10964
11026
|
|
|
10965
11027
|
// src/hooks/useIsBlacklisted.ts
|
|
10966
|
-
import { FlagKey as
|
|
10967
|
-
import { useMemo as
|
|
11028
|
+
import { FlagKey as FlagKey12 } from "@funkit/utils";
|
|
11029
|
+
import { useMemo as useMemo13 } from "react";
|
|
10968
11030
|
var useIsBlacklisted = (walletAddress, customRecipient) => {
|
|
10969
|
-
const flagStr = useFlag(
|
|
10970
|
-
const blacklist =
|
|
11031
|
+
const flagStr = useFlag(FlagKey12.AddressBlacklist);
|
|
11032
|
+
const blacklist = useMemo13(
|
|
10971
11033
|
() => safeJSONParse(flagStr)?.map((addr) => addr.toLowerCase()) || [],
|
|
10972
11034
|
[flagStr]
|
|
10973
11035
|
);
|
|
@@ -10978,15 +11040,15 @@ var useIsBlacklisted = (walletAddress, customRecipient) => {
|
|
|
10978
11040
|
};
|
|
10979
11041
|
|
|
10980
11042
|
// src/providers/FunkitQuoteContext.tsx
|
|
10981
|
-
import { FlagKey as
|
|
11043
|
+
import { FlagKey as FlagKey13, isNotNullish as isNotNullish4 } from "@funkit/utils";
|
|
10982
11044
|
import React66, {
|
|
10983
11045
|
createContext as createContext13,
|
|
10984
|
-
useCallback as
|
|
11046
|
+
useCallback as useCallback16,
|
|
10985
11047
|
useContext as useContext13,
|
|
10986
11048
|
useEffect as useEffect26,
|
|
10987
11049
|
useState as useState23
|
|
10988
11050
|
} from "react";
|
|
10989
|
-
import { useConfig as
|
|
11051
|
+
import { useConfig as useConfig4 } from "wagmi";
|
|
10990
11052
|
|
|
10991
11053
|
// src/consts/quote.ts
|
|
10992
11054
|
import { ClientError } from "@funkit/utils";
|
|
@@ -11077,9 +11139,9 @@ var FunkitQuoteContext = createContext13({
|
|
|
11077
11139
|
function FunkitQuoteProvider({ children }) {
|
|
11078
11140
|
const { checkoutItem, setCheckout } = useCheckoutContext();
|
|
11079
11141
|
const funkitConfig = useFunkitConfig();
|
|
11080
|
-
const wagmiConfig =
|
|
11142
|
+
const wagmiConfig = useConfig4();
|
|
11081
11143
|
const { walletAddress, logoutSymbol, loginType, userInfo } = useGeneralWallet();
|
|
11082
|
-
const enableFrogProxyServer = useFlag(
|
|
11144
|
+
const enableFrogProxyServer = useFlag(FlagKey13.EnableFrogProxyServer);
|
|
11083
11145
|
const { getDirectExecutionInfo } = useCheckoutDirectExecution();
|
|
11084
11146
|
const [latestQuote, setLatestQuote] = useState23(null);
|
|
11085
11147
|
const [isQuoting, setIsQuoting] = useState23(false);
|
|
@@ -11095,7 +11157,7 @@ function FunkitQuoteProvider({ children }) {
|
|
|
11095
11157
|
});
|
|
11096
11158
|
}
|
|
11097
11159
|
}, [logoutSymbol]);
|
|
11098
|
-
const setQuoteProgress =
|
|
11160
|
+
const setQuoteProgress = useCallback16(
|
|
11099
11161
|
(state) => {
|
|
11100
11162
|
setQuoteErrorMessage(state.quoteErrorMessage);
|
|
11101
11163
|
setQuoteStepMessage(state.quoteStepMessage);
|
|
@@ -11103,7 +11165,7 @@ function FunkitQuoteProvider({ children }) {
|
|
|
11103
11165
|
},
|
|
11104
11166
|
[]
|
|
11105
11167
|
);
|
|
11106
|
-
const clearCheckoutQuoteMessages =
|
|
11168
|
+
const clearCheckoutQuoteMessages = useCallback16(() => {
|
|
11107
11169
|
setQuoteStepMessage("");
|
|
11108
11170
|
setQuoteErrorMessage("");
|
|
11109
11171
|
}, []);
|
|
@@ -11538,7 +11600,7 @@ function useWithdrawalAssets(config) {
|
|
|
11538
11600
|
},
|
|
11539
11601
|
true
|
|
11540
11602
|
);
|
|
11541
|
-
const excludedTokenStr = useFlag(
|
|
11603
|
+
const excludedTokenStr = useFlag(FlagKey14.WithdrawalExcludeTokens);
|
|
11542
11604
|
const excludedTokens = safeJSONParse(excludedTokenStr);
|
|
11543
11605
|
if (excludedTokens) {
|
|
11544
11606
|
for (const chainIdStr of Object.keys(excludedTokens)) {
|
|
@@ -11630,11 +11692,52 @@ function getErrorNotification(quoteErrorObject, withdrawalError, targetAssetFetc
|
|
|
11630
11692
|
}
|
|
11631
11693
|
return null;
|
|
11632
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
|
+
}
|
|
11633
11737
|
var WithdrawContent = ({
|
|
11634
11738
|
onContinue,
|
|
11635
11739
|
config,
|
|
11636
11740
|
withdrawalItem
|
|
11637
|
-
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: refactor this later
|
|
11638
11741
|
}) => {
|
|
11639
11742
|
const sourceTokenBalance = withdrawalItem?.withdrawalSourceTokenBalance?.() || 0;
|
|
11640
11743
|
const token = config.sourceTokenSymbol;
|
|
@@ -11685,7 +11788,6 @@ var WithdrawContent = ({
|
|
|
11685
11788
|
iconSrc: getTokenIconUrl(selectedToken)
|
|
11686
11789
|
});
|
|
11687
11790
|
}, [targetAssetInfo, updateTargetAsset, selectedChainId, selectedToken]);
|
|
11688
|
-
const withdrawalWalletAddress = "wallet" in config ? config.wallet.address() : "0x";
|
|
11689
11791
|
const {
|
|
11690
11792
|
isLoading: isQuoteLoading,
|
|
11691
11793
|
data: quote,
|
|
@@ -11701,11 +11803,7 @@ var WithdrawContent = ({
|
|
|
11701
11803
|
symbol: selectedToken,
|
|
11702
11804
|
targetAsset: targetAssetInfo?.address
|
|
11703
11805
|
});
|
|
11704
|
-
const {
|
|
11705
|
-
isConnected,
|
|
11706
|
-
connector,
|
|
11707
|
-
address: connectedWalletAddress
|
|
11708
|
-
} = useAccount3();
|
|
11806
|
+
const { connector, address: connectedWalletAddress } = useAccount3();
|
|
11709
11807
|
const { handleWithdrawal, isWithdrawing, withdrawalError } = useWithdrawal({
|
|
11710
11808
|
config,
|
|
11711
11809
|
withdrawalItem,
|
|
@@ -11727,27 +11825,25 @@ var WithdrawContent = ({
|
|
|
11727
11825
|
(wallet) => wallet.id === connector?.id
|
|
11728
11826
|
)?.iconUrl;
|
|
11729
11827
|
const normalizedSelectedToken = selectedToken.toUpperCase();
|
|
11730
|
-
const isValidAddress = isAddressSupported(recipientAddress);
|
|
11731
|
-
const isValidAddressAndChain = isAddressCompatibleWithChain(
|
|
11732
|
-
recipientAddress,
|
|
11733
|
-
selectedChainId
|
|
11734
|
-
);
|
|
11735
11828
|
const { checkoutItem } = useCheckoutContext();
|
|
11736
11829
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
11737
|
-
const
|
|
11738
|
-
|
|
11739
|
-
|
|
11740
|
-
|
|
11741
|
-
|
|
11742
|
-
|
|
11743
|
-
|
|
11744
|
-
|
|
11745
|
-
|
|
11746
|
-
|
|
11747
|
-
|
|
11748
|
-
|
|
11749
|
-
|
|
11750
|
-
}
|
|
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
|
+
});
|
|
11751
11847
|
const handleUseConnectedClick = () => {
|
|
11752
11848
|
if (!connectedWalletAddress) {
|
|
11753
11849
|
return;
|
|
@@ -11824,7 +11920,7 @@ var WithdrawContent = ({
|
|
|
11824
11920
|
isValidAddressAndChain,
|
|
11825
11921
|
selectedChainName
|
|
11826
11922
|
});
|
|
11827
|
-
const errorNotification =
|
|
11923
|
+
const errorNotification = useMemo14(
|
|
11828
11924
|
() => getErrorNotification(
|
|
11829
11925
|
quoteErrorObject,
|
|
11830
11926
|
withdrawalError,
|
|
@@ -12070,7 +12166,7 @@ import { useAccount as useAccount6 } from "wagmi";
|
|
|
12070
12166
|
// src/components/FunPayments/FunPaymentMethods.tsx
|
|
12071
12167
|
import { BridgeCustomerStatus as BridgeCustomerStatus3 } from "@funkit/api-base";
|
|
12072
12168
|
import {
|
|
12073
|
-
FlagKey as
|
|
12169
|
+
FlagKey as FlagKey17,
|
|
12074
12170
|
formatCurrencyAndStringify as formatCurrencyAndStringify4,
|
|
12075
12171
|
formatSecondsToReadableForm,
|
|
12076
12172
|
safeParseJson as safeParseJson4
|
|
@@ -12157,9 +12253,9 @@ var isSoftRejected = (customer) => customer && isKycUninitialized(customer.statu
|
|
|
12157
12253
|
var FIAT_PROCESSING_TIME = "1-2 business days";
|
|
12158
12254
|
|
|
12159
12255
|
// src/hooks/useCheckoutTimeEstimate.ts
|
|
12160
|
-
import { FlagKey as
|
|
12256
|
+
import { FlagKey as FlagKey15 } from "@funkit/utils";
|
|
12161
12257
|
function useCheckoutTimeEstimate(originalTimeEstimationMs, paymentMethod = "card" /* CARD */, bypassFlag = false) {
|
|
12162
|
-
const timeEstimatesJsonString = useFlag(
|
|
12258
|
+
const timeEstimatesJsonString = useFlag(FlagKey15.CheckoutTimeEstimateOverrides);
|
|
12163
12259
|
const timeEstimates = safeJSONParse(
|
|
12164
12260
|
timeEstimatesJsonString
|
|
12165
12261
|
);
|
|
@@ -12176,9 +12272,9 @@ import {
|
|
|
12176
12272
|
getBridgeKycLink
|
|
12177
12273
|
} from "@funkit/api-base";
|
|
12178
12274
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9 } from "@funkit/chains";
|
|
12179
|
-
import { FlagKey as
|
|
12275
|
+
import { FlagKey as FlagKey16 } from "@funkit/utils";
|
|
12180
12276
|
import { useQuery as useQuery10, useQueryClient } from "@tanstack/react-query";
|
|
12181
|
-
import { useCallback as
|
|
12277
|
+
import { useCallback as useCallback17 } from "react";
|
|
12182
12278
|
var sepaCountryCode = [
|
|
12183
12279
|
// EU countries that are part of SEPA
|
|
12184
12280
|
"AT",
|
|
@@ -12256,8 +12352,8 @@ function useFiatEnabled() {
|
|
|
12256
12352
|
const isEuSepaUser = sepaCountryCode.includes(
|
|
12257
12353
|
userIpInfo?.alpha2 || "PLACEHOLDER"
|
|
12258
12354
|
);
|
|
12259
|
-
const isTokenTransferEnabled = useFlag(
|
|
12260
|
-
const isFiatEnabled = useFlag(
|
|
12355
|
+
const isTokenTransferEnabled = useFlag(FlagKey16.EnableTokenTransfer);
|
|
12356
|
+
const isFiatEnabled = useFlag(FlagKey16.EnableFiatDeposit);
|
|
12261
12357
|
return isEuSepaUser && isTokenTransferEnabled && isFiatEnabled;
|
|
12262
12358
|
}
|
|
12263
12359
|
function useFrogAccounts() {
|
|
@@ -12277,13 +12373,13 @@ function useFrogAccounts() {
|
|
|
12277
12373
|
function useClearFrogAccountsCache() {
|
|
12278
12374
|
const { walletAddress } = useGeneralWallet();
|
|
12279
12375
|
const queryClient = useQueryClient();
|
|
12280
|
-
const clearFrogAccounts =
|
|
12376
|
+
const clearFrogAccounts = useCallback17(() => {
|
|
12281
12377
|
queryClient.removeQueries({
|
|
12282
12378
|
queryKey: ["frogSubAccounts", walletAddress],
|
|
12283
12379
|
exact: true
|
|
12284
12380
|
});
|
|
12285
12381
|
}, [queryClient, walletAddress]);
|
|
12286
|
-
const clearVirtualFiatAccounts =
|
|
12382
|
+
const clearVirtualFiatAccounts = useCallback17(() => {
|
|
12287
12383
|
queryClient.removeQueries({
|
|
12288
12384
|
queryKey: ["useVirtualFiatAccounts"]
|
|
12289
12385
|
});
|
|
@@ -12358,7 +12454,7 @@ function useCreateVirtualBankAccount() {
|
|
|
12358
12454
|
const chainName = targetChainId && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9[targetChainId]?.name?.toLowerCase();
|
|
12359
12455
|
const subAccountId = allFiatAccounts?.bridgeCustomer?.id;
|
|
12360
12456
|
const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
|
|
12361
|
-
const handleCreateVirtualFiatAccount =
|
|
12457
|
+
const handleCreateVirtualFiatAccount = useCallback17(async () => {
|
|
12362
12458
|
try {
|
|
12363
12459
|
if (!subAccountId || !chainName) {
|
|
12364
12460
|
return {
|
|
@@ -12408,7 +12504,7 @@ import {
|
|
|
12408
12504
|
FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS3,
|
|
12409
12505
|
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO10
|
|
12410
12506
|
} from "@funkit/chains";
|
|
12411
|
-
import { useMemo as
|
|
12507
|
+
import { useMemo as useMemo15 } from "react";
|
|
12412
12508
|
|
|
12413
12509
|
// src/hooks/useWalletAssets.ts
|
|
12414
12510
|
import {
|
|
@@ -12585,7 +12681,7 @@ var processWalletAssets = (walletAssets, targetChain) => {
|
|
|
12585
12681
|
};
|
|
12586
12682
|
function useWalletAssetHoldings(targetChain) {
|
|
12587
12683
|
const { walletAssets, isLoading, totalWalletAssetsUsd } = useWalletAssets();
|
|
12588
|
-
const processedAssets =
|
|
12684
|
+
const processedAssets = useMemo15(
|
|
12589
12685
|
() => processWalletAssets(walletAssets, targetChain),
|
|
12590
12686
|
[targetChain, walletAssets]
|
|
12591
12687
|
);
|
|
@@ -13833,16 +13929,6 @@ var CardPaymentMethodItem = ({
|
|
|
13833
13929
|
valueIcon: customValueIcon ?? /* @__PURE__ */ React74.createElement(CombinedCreditCardOptionsIcon, null),
|
|
13834
13930
|
onClick,
|
|
13835
13931
|
isDisabled: !isClickable,
|
|
13836
|
-
badge: /* @__PURE__ */ React74.createElement(
|
|
13837
|
-
FunBadge,
|
|
13838
|
-
{
|
|
13839
|
-
background: "approvedBadgeBackground",
|
|
13840
|
-
borderColor: "approvedBadgeBorder",
|
|
13841
|
-
color: "approvedBadgeText",
|
|
13842
|
-
hasShine: true
|
|
13843
|
-
},
|
|
13844
|
-
"NEW"
|
|
13845
|
-
),
|
|
13846
13932
|
disclaimerText: `$50,000 limit \u2022 ${formatSecondsToReadableForm(timeEstimate, true)}`
|
|
13847
13933
|
}
|
|
13848
13934
|
);
|
|
@@ -13855,12 +13941,12 @@ var TransferPaymentMethodItem = ({
|
|
|
13855
13941
|
paymentIcon
|
|
13856
13942
|
}) => {
|
|
13857
13943
|
const { textCustomizations } = useFunkitConfig();
|
|
13858
|
-
const enableBitcoin = useFlag(
|
|
13859
|
-
const bannerJson = useFlag(
|
|
13944
|
+
const enableBitcoin = useFlag(FlagKey17.EnableBitcoin);
|
|
13945
|
+
const bannerJson = useFlag(FlagKey17.NewTokenAssetSelectionBanner);
|
|
13860
13946
|
const bannerData = safeParseJson4(bannerJson);
|
|
13861
13947
|
const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
|
|
13862
13948
|
const depositAssetsJson = useFlag(
|
|
13863
|
-
|
|
13949
|
+
FlagKey17.TokenTransferSourceChainsAndAssets,
|
|
13864
13950
|
void 0,
|
|
13865
13951
|
addBitcoinToSourceChainsAndAssetsMiddleware
|
|
13866
13952
|
);
|
|
@@ -13977,16 +14063,6 @@ function PayPalPaymentMethodItem({
|
|
|
13977
14063
|
keyText: "Deposit with PayPal",
|
|
13978
14064
|
onClick,
|
|
13979
14065
|
isDisabled: !isClickable,
|
|
13980
|
-
badge: /* @__PURE__ */ React74.createElement(
|
|
13981
|
-
FunBadge,
|
|
13982
|
-
{
|
|
13983
|
-
background: "approvedBadgeBackground",
|
|
13984
|
-
borderColor: "approvedBadgeBorder",
|
|
13985
|
-
color: "approvedBadgeText",
|
|
13986
|
-
hasShine: true
|
|
13987
|
-
},
|
|
13988
|
-
"NEW"
|
|
13989
|
-
),
|
|
13990
14066
|
disclaimerText: "$10,000 limit \u2022 5 min"
|
|
13991
14067
|
}
|
|
13992
14068
|
);
|
|
@@ -14078,7 +14154,7 @@ var BankIconActive = ({ size = 20 }) => {
|
|
|
14078
14154
|
|
|
14079
14155
|
// src/components/FunConnectOptions/FunSignInStep.tsx
|
|
14080
14156
|
import { groupBy, isMobile as isMobile8, isSafari as isSafari3, redirectInMobile as redirectInMobile2 } from "@funkit/utils";
|
|
14081
|
-
import React191, { Fragment as Fragment2, useCallback as
|
|
14157
|
+
import React191, { Fragment as Fragment2, useCallback as useCallback43, useMemo as useMemo38, useState as useState62 } from "react";
|
|
14082
14158
|
|
|
14083
14159
|
// src/providers/walletConnectDeepLink.ts
|
|
14084
14160
|
var storageKey = "WALLETCONNECT_DEEPLINK_CHOICE";
|
|
@@ -14496,10 +14572,10 @@ var SocialsIcon = () => {
|
|
|
14496
14572
|
};
|
|
14497
14573
|
|
|
14498
14574
|
// src/components/FunConnectOptions/FunConnectOptions.tsx
|
|
14499
|
-
import React190, { useCallback as
|
|
14575
|
+
import React190, { useCallback as useCallback42, useMemo as useMemo37, useState as useState61 } from "react";
|
|
14500
14576
|
|
|
14501
14577
|
// src/hooks/useAnimatedNavigation.ts
|
|
14502
|
-
import { useCallback as
|
|
14578
|
+
import { useCallback as useCallback18, useState as useState28 } from "react";
|
|
14503
14579
|
|
|
14504
14580
|
// src/css/modalTransitionStyles.css.ts
|
|
14505
14581
|
var animateContentInClass = "stgjxl2";
|
|
@@ -14527,7 +14603,7 @@ function useAnimatedNavigation(callback) {
|
|
|
14527
14603
|
const [animateOut, setAnimateOut] = useState28(false);
|
|
14528
14604
|
const [isSkipped, setIsSkipped] = useState28(false);
|
|
14529
14605
|
const [isReversed, setIsReversed] = useState28(false);
|
|
14530
|
-
const navigateTo =
|
|
14606
|
+
const navigateTo = useCallback18(
|
|
14531
14607
|
(page, params = {}) => {
|
|
14532
14608
|
setIsSkipped(!!params.skip);
|
|
14533
14609
|
if (params.skip) {
|
|
@@ -14542,7 +14618,7 @@ function useAnimatedNavigation(callback) {
|
|
|
14542
14618
|
},
|
|
14543
14619
|
[callback]
|
|
14544
14620
|
);
|
|
14545
|
-
const animate =
|
|
14621
|
+
const animate = useCallback18(
|
|
14546
14622
|
(callback2, params = {}) => {
|
|
14547
14623
|
setIsSkipped(!!params.skip);
|
|
14548
14624
|
if (params.skip) {
|
|
@@ -14570,17 +14646,17 @@ import React180, { useEffect as useEffect45, useRef as useRef23, useState as use
|
|
|
14570
14646
|
|
|
14571
14647
|
// src/modals/CheckoutModal/stepTransition.ts
|
|
14572
14648
|
import {
|
|
14573
|
-
useCallback as
|
|
14649
|
+
useCallback as useCallback38,
|
|
14574
14650
|
useRef as useRef22,
|
|
14575
14651
|
useState as useState57
|
|
14576
14652
|
} from "react";
|
|
14577
14653
|
|
|
14578
14654
|
// src/hooks/useCheckoutQuoteNotification.ts
|
|
14579
|
-
import { useMemo as
|
|
14655
|
+
import { useMemo as useMemo16 } from "react";
|
|
14580
14656
|
function useCheckoutQuoteNotification() {
|
|
14581
14657
|
const { clearCheckoutQuoteMessages } = useQuoteContext();
|
|
14582
14658
|
const { quoteErrorMessage, quoteStepMessage } = useQuoteContext();
|
|
14583
|
-
const quoteNotification =
|
|
14659
|
+
const quoteNotification = useMemo16(() => {
|
|
14584
14660
|
if (quoteErrorMessage !== "") {
|
|
14585
14661
|
return {
|
|
14586
14662
|
messageType: "error",
|
|
@@ -14864,7 +14940,7 @@ import {
|
|
|
14864
14940
|
BridgeCustomerStatus as BridgeCustomerStatus4
|
|
14865
14941
|
} from "@funkit/api-base";
|
|
14866
14942
|
import { exhaustiveCheck as exhaustiveCheck4 } from "@funkit/utils";
|
|
14867
|
-
import React92, { useCallback as
|
|
14943
|
+
import React92, { useCallback as useCallback19, useState as useState30 } from "react";
|
|
14868
14944
|
import { createPortal as createPortal4 } from "react-dom";
|
|
14869
14945
|
|
|
14870
14946
|
// src/components/Icons/HomeIcon.tsx
|
|
@@ -15466,7 +15542,7 @@ var VerifyAccountScreen = ({
|
|
|
15466
15542
|
const kycUninitialized = !isSoftRejected2 && customerStatus && isKycUninitialized(customerStatus);
|
|
15467
15543
|
const canStartKyc = kycUninitialized || isSoftRejected2;
|
|
15468
15544
|
const handleCreateVirtualFiatAccount = useCreateVirtualBankAccount();
|
|
15469
|
-
const onClick =
|
|
15545
|
+
const onClick = useCallback19(async () => {
|
|
15470
15546
|
if (customerStatus === BridgeCustomerStatus4.ACTIVE) {
|
|
15471
15547
|
setCreating(true);
|
|
15472
15548
|
const result = await handleCreateVirtualFiatAccount();
|
|
@@ -15998,7 +16074,7 @@ function getCheckoutCompletionTime(checkout) {
|
|
|
15998
16074
|
}
|
|
15999
16075
|
|
|
16000
16076
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
|
|
16001
|
-
import React108, { useCallback as
|
|
16077
|
+
import React108, { useCallback as useCallback21, useMemo as useMemo17, useState as useState32 } from "react";
|
|
16002
16078
|
import { createPortal as createPortal6 } from "react-dom";
|
|
16003
16079
|
|
|
16004
16080
|
// src/components/HelpAlert/HelpAlert.tsx
|
|
@@ -16014,7 +16090,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
|
|
|
16014
16090
|
};
|
|
16015
16091
|
|
|
16016
16092
|
// src/hooks/useFunListeners.ts
|
|
16017
|
-
import { useCallback as
|
|
16093
|
+
import { useCallback as useCallback20, useEffect as useEffect28, useRef as useRef13 } from "react";
|
|
16018
16094
|
function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
|
|
16019
16095
|
const activeIntervalRef = useRef13();
|
|
16020
16096
|
const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
|
|
@@ -16037,21 +16113,21 @@ function useSIWFarcasterListener(channelToken) {
|
|
|
16037
16113
|
const { getFcConnectionStatus, handleFunkitWeb2Login } = useFunkitWeb2Login();
|
|
16038
16114
|
const intervalRef = useRef13();
|
|
16039
16115
|
const [refreshSymbol, triggerRefreshSymbol] = useSymbolRefresh_default();
|
|
16040
|
-
const startStatusListener =
|
|
16116
|
+
const startStatusListener = useCallback20(() => {
|
|
16041
16117
|
clearInterval(intervalRef.current);
|
|
16042
16118
|
triggerRefreshSymbol();
|
|
16043
16119
|
intervalRef.current = setInterval(() => {
|
|
16044
16120
|
triggerRefreshSymbol();
|
|
16045
16121
|
}, FARCASTER_STATUS_INTERVAL);
|
|
16046
16122
|
}, [triggerRefreshSymbol]);
|
|
16047
|
-
const stopStatusListener =
|
|
16123
|
+
const stopStatusListener = useCallback20(() => {
|
|
16048
16124
|
clearInterval(intervalRef.current);
|
|
16049
16125
|
}, []);
|
|
16050
16126
|
useEffect28(() => {
|
|
16051
16127
|
startStatusListener();
|
|
16052
16128
|
return () => stopStatusListener();
|
|
16053
16129
|
}, []);
|
|
16054
|
-
const check =
|
|
16130
|
+
const check = useCallback20(async () => {
|
|
16055
16131
|
if (!channelToken || !initalChainid) {
|
|
16056
16132
|
return;
|
|
16057
16133
|
}
|
|
@@ -16365,7 +16441,7 @@ function FunCheckoutHistoryDetail({
|
|
|
16365
16441
|
useCheckoutHistoryListener(isProcessing, checkoutHistoryInfo?.depositAddr);
|
|
16366
16442
|
useWalletAssets({ enableRefetchInterval: isProcessing || isCompleted });
|
|
16367
16443
|
const { beginCheckout } = useFunkitCheckout({});
|
|
16368
|
-
const handleNewCheckout =
|
|
16444
|
+
const handleNewCheckout = useCallback21(
|
|
16369
16445
|
(fromCheckout) => {
|
|
16370
16446
|
onClose({ isNewDeposit: true });
|
|
16371
16447
|
const historicalCheckout = fromCheckout.clientMetadata;
|
|
@@ -16384,7 +16460,7 @@ function FunCheckoutHistoryDetail({
|
|
|
16384
16460
|
isActiveCheckout
|
|
16385
16461
|
]
|
|
16386
16462
|
);
|
|
16387
|
-
const primaryButtonProps =
|
|
16463
|
+
const primaryButtonProps = useMemo17(() => {
|
|
16388
16464
|
if (!isCheckoutLoaded) {
|
|
16389
16465
|
return void 0;
|
|
16390
16466
|
}
|
|
@@ -16473,7 +16549,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
|
|
|
16473
16549
|
|
|
16474
16550
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
|
|
16475
16551
|
import { sendSupportMessage } from "@funkit/api-base";
|
|
16476
|
-
import React112, { useEffect as useEffect30, useMemo as
|
|
16552
|
+
import React112, { useEffect as useEffect30, useMemo as useMemo18, useRef as useRef15, useState as useState33 } from "react";
|
|
16477
16553
|
import { createPortal as createPortal7 } from "react-dom";
|
|
16478
16554
|
|
|
16479
16555
|
// src/components/FunInput/FunTextAreaInput.tsx
|
|
@@ -16650,7 +16726,7 @@ function FunCheckoutHistoryHelp({
|
|
|
16650
16726
|
);
|
|
16651
16727
|
const [descriptionInput, setDescriptionInput] = useState33("");
|
|
16652
16728
|
const [errorMessage, setErrorMessage] = useState33();
|
|
16653
|
-
const isEmailInputValid =
|
|
16729
|
+
const isEmailInputValid = useMemo18(() => {
|
|
16654
16730
|
return validateEmailString(emailInput);
|
|
16655
16731
|
}, [emailInput]);
|
|
16656
16732
|
const [processStage, setProcessStage] = useState33(
|
|
@@ -16842,7 +16918,7 @@ import {
|
|
|
16842
16918
|
formatTimestamp as formatTimestamp2,
|
|
16843
16919
|
isTokenEquivalent as isTokenEquivalent3
|
|
16844
16920
|
} from "@funkit/utils";
|
|
16845
|
-
import React113, { useCallback as
|
|
16921
|
+
import React113, { useCallback as useCallback22, useMemo as useMemo19, useRef as useRef16, useState as useState34 } from "react";
|
|
16846
16922
|
import { createPortal as createPortal8 } from "react-dom";
|
|
16847
16923
|
|
|
16848
16924
|
// src/hooks/useReceiveAmountLabel.ts
|
|
@@ -16871,7 +16947,7 @@ function FunDirectExecutionHistoryDetail({
|
|
|
16871
16947
|
const bottomSectionRef = document.getElementById(bottomBarId);
|
|
16872
16948
|
const { checkoutItem } = useCheckoutContext();
|
|
16873
16949
|
const { beginCheckout } = useFunkitCheckout({});
|
|
16874
|
-
const handleNewCheckout =
|
|
16950
|
+
const handleNewCheckout = useCallback22(
|
|
16875
16951
|
(fromCheckout) => {
|
|
16876
16952
|
onClose({ isNewDeposit: true });
|
|
16877
16953
|
const historicalCheckout = fromCheckout.clientMetadata;
|
|
@@ -16891,7 +16967,7 @@ function FunDirectExecutionHistoryDetail({
|
|
|
16891
16967
|
]
|
|
16892
16968
|
);
|
|
16893
16969
|
const isWithdrawal = directExecution?.clientMetadata?.isWithdrawal;
|
|
16894
|
-
const buttonProps =
|
|
16970
|
+
const buttonProps = useMemo19(() => {
|
|
16895
16971
|
if (!isLoaded) {
|
|
16896
16972
|
return void 0;
|
|
16897
16973
|
}
|
|
@@ -17114,11 +17190,11 @@ function FunCheckoutHistoryContent({
|
|
|
17114
17190
|
}
|
|
17115
17191
|
|
|
17116
17192
|
// src/modals/CheckoutModal/CheckoutComplete/useLogCheckoutCompletion.ts
|
|
17117
|
-
import { useCallback as
|
|
17193
|
+
import { useCallback as useCallback23 } from "react";
|
|
17118
17194
|
function useLogCheckoutCompletion() {
|
|
17119
17195
|
const { latestQuote } = useQuoteContext();
|
|
17120
17196
|
const { checkoutItem } = useCheckoutContext();
|
|
17121
|
-
const logCheckoutCompletion =
|
|
17197
|
+
const logCheckoutCompletion = useCallback23(
|
|
17122
17198
|
(depositAddress) => {
|
|
17123
17199
|
if (depositAddress) {
|
|
17124
17200
|
logger.log("checkoutFundingCompleted", {
|
|
@@ -17214,7 +17290,7 @@ function CheckoutHelp({
|
|
|
17214
17290
|
}
|
|
17215
17291
|
|
|
17216
17292
|
// src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
|
|
17217
|
-
import React131, { useEffect as useEffect36, useMemo as
|
|
17293
|
+
import React131, { useEffect as useEffect36, useMemo as useMemo24, useState as useState43 } from "react";
|
|
17218
17294
|
import { createPortal as createPortal10 } from "react-dom";
|
|
17219
17295
|
|
|
17220
17296
|
// src/providers/UserPresenceContext.tsx
|
|
@@ -17255,7 +17331,7 @@ import { DirectExecutionType as DirectExecutionType2 } from "@funkit/api-base";
|
|
|
17255
17331
|
|
|
17256
17332
|
// src/components/FunInfoBanner/FunInfoBanner.tsx
|
|
17257
17333
|
import React119 from "react";
|
|
17258
|
-
import { FlagKey as
|
|
17334
|
+
import { FlagKey as FlagKey18, safeParseJson as safeParseJson5 } from "@funkit/utils";
|
|
17259
17335
|
|
|
17260
17336
|
// src/components/FunInfoBanner/EphemeralInfoBanner.tsx
|
|
17261
17337
|
import React118, { useState as useState36 } from "react";
|
|
@@ -17293,7 +17369,7 @@ var EphemeralInfoBanner = ({
|
|
|
17293
17369
|
|
|
17294
17370
|
// src/components/FunInfoBanner/FunInfoBanner.tsx
|
|
17295
17371
|
var FunInfoBanner = () => {
|
|
17296
|
-
const bannerJson = useFlag(
|
|
17372
|
+
const bannerJson = useFlag(FlagKey18.ShowInfoBanner);
|
|
17297
17373
|
const bannerData = safeParseJson5(bannerJson);
|
|
17298
17374
|
if (!bannerData || !bannerData.message) {
|
|
17299
17375
|
return null;
|
|
@@ -17311,12 +17387,12 @@ var FunInfoBanner = () => {
|
|
|
17311
17387
|
// src/components/FunTransactionSummary/PaymentAmountSummary.tsx
|
|
17312
17388
|
import {
|
|
17313
17389
|
formatCurrencyAndStringify as formatCurrencyAndStringify5,
|
|
17314
|
-
isTokenAddressEquivalent as
|
|
17390
|
+
isTokenAddressEquivalent as isTokenAddressEquivalent5,
|
|
17315
17391
|
isTokenEquivalent as isTokenEquivalent4
|
|
17316
17392
|
} from "@funkit/utils";
|
|
17317
17393
|
import NumberFlow from "@number-flow/react";
|
|
17318
17394
|
import { motion as motion7 } from "motion/react";
|
|
17319
|
-
import React121, { useMemo as
|
|
17395
|
+
import React121, { useMemo as useMemo21 } from "react";
|
|
17320
17396
|
|
|
17321
17397
|
// src/consts/design.ts
|
|
17322
17398
|
var mapFontLineHeightToNumberFlowHeight = {
|
|
@@ -17329,7 +17405,7 @@ var defaultTransition = "all 150ms cubic-bezier(0.3, 0, 0.06, 1)";
|
|
|
17329
17405
|
// src/components/FunAssetAvatar/FunAssetAvatar.tsx
|
|
17330
17406
|
import { isNotNullish as isNotNullish5 } from "@funkit/utils";
|
|
17331
17407
|
import clsx16 from "clsx";
|
|
17332
|
-
import React120, { useMemo as
|
|
17408
|
+
import React120, { useMemo as useMemo20 } from "react";
|
|
17333
17409
|
|
|
17334
17410
|
// src/components/FunAssetAvatar/FunAssetAvatar.css.ts
|
|
17335
17411
|
var chainContainerStyle = "uwrdc22 _1rsrm2f19 _1rsrm2fa _1rsrm2f4 _1rsrm2f4i";
|
|
@@ -17349,7 +17425,7 @@ function FunAssetAvatar({
|
|
|
17349
17425
|
largeChainIcon = false
|
|
17350
17426
|
}) {
|
|
17351
17427
|
const chainMetadata = chainMetadataById[Number.parseInt((chainId || "").toString())] || null;
|
|
17352
|
-
const finalAssetSrc =
|
|
17428
|
+
const finalAssetSrc = useMemo20(() => {
|
|
17353
17429
|
const normalizedTicker = assetTicker?.toUpperCase() || "";
|
|
17354
17430
|
const defaultSrc = ASSET_LOGO_SRCS[normalizedTicker];
|
|
17355
17431
|
if (prioritizeDefaults) {
|
|
@@ -17449,7 +17525,7 @@ function PaymentAmountSummary({
|
|
|
17449
17525
|
})
|
|
17450
17526
|
});
|
|
17451
17527
|
const sourceTokenAmount = quote?.finalPaymentTokenAmount ? Number.parseFloat(quote.finalPaymentTokenAmount) : void 0;
|
|
17452
|
-
const paymentTokenUsdAmount =
|
|
17528
|
+
const paymentTokenUsdAmount = useMemo21(() => {
|
|
17453
17529
|
if (!quote) {
|
|
17454
17530
|
return void 0;
|
|
17455
17531
|
}
|
|
@@ -17457,7 +17533,7 @@ function PaymentAmountSummary({
|
|
|
17457
17533
|
quote.baseQuote.estSubtotalUsd + Number.parseFloat(quote.finalPaymentFeeUsd) - Number.parseFloat(quote.finalSpreadUsd)
|
|
17458
17534
|
);
|
|
17459
17535
|
}, [quote]);
|
|
17460
|
-
const receiveTokenUsdAmount =
|
|
17536
|
+
const receiveTokenUsdAmount = useMemo21(() => {
|
|
17461
17537
|
if (!quote) {
|
|
17462
17538
|
return void 0;
|
|
17463
17539
|
}
|
|
@@ -17471,7 +17547,7 @@ function PaymentAmountSummary({
|
|
|
17471
17547
|
const sourceChainId = sourceAssetInfo?.chainId;
|
|
17472
17548
|
const areSameChains = sourceChainId === targetChainId;
|
|
17473
17549
|
const sourceIcon = sourceAssetInfo?.iconSrc ?? void 0;
|
|
17474
|
-
const isSameTokenAddress =
|
|
17550
|
+
const isSameTokenAddress = isTokenAddressEquivalent5({
|
|
17475
17551
|
firstTokenAddress: sourceTokenAddress,
|
|
17476
17552
|
secondTokenAddress: targetTokenAddress
|
|
17477
17553
|
});
|
|
@@ -17748,7 +17824,7 @@ var DirectExecutionBrokerageAndCardAlert = () => {
|
|
|
17748
17824
|
};
|
|
17749
17825
|
|
|
17750
17826
|
// src/modals/CheckoutModal/ConfirmationStep/DisclaimerText.tsx
|
|
17751
|
-
import React126, { useMemo as
|
|
17827
|
+
import React126, { useMemo as useMemo22 } from "react";
|
|
17752
17828
|
var DisclaimerText = ({
|
|
17753
17829
|
continueText,
|
|
17754
17830
|
isCardPayment,
|
|
@@ -17783,7 +17859,7 @@ var DisclaimerText = ({
|
|
|
17783
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" }), ".");
|
|
17784
17860
|
};
|
|
17785
17861
|
function useCardDisclaimer(checkoutItem, finalConvertedAssetName) {
|
|
17786
|
-
const cardDisclaimer =
|
|
17862
|
+
const cardDisclaimer = useMemo22(() => {
|
|
17787
17863
|
if (!checkoutItem || !finalConvertedAssetName) {
|
|
17788
17864
|
return null;
|
|
17789
17865
|
}
|
|
@@ -17828,11 +17904,11 @@ import { useState as useState38 } from "react";
|
|
|
17828
17904
|
import { useEffect as useEffect33, useState as useState37 } from "react";
|
|
17829
17905
|
|
|
17830
17906
|
// src/hooks/useCheckoutAccountBalanceTransfer.ts
|
|
17831
|
-
import { useCallback as
|
|
17907
|
+
import { useCallback as useCallback24 } from "react";
|
|
17832
17908
|
function useCheckoutAccountBalanceTransfer() {
|
|
17833
17909
|
const { checkoutItem } = useCheckoutContext();
|
|
17834
17910
|
const { funWallet, funWalletAuth } = useGeneralWallet();
|
|
17835
|
-
const generateCheckoutTransferOpItems =
|
|
17911
|
+
const generateCheckoutTransferOpItems = useCallback24(
|
|
17836
17912
|
async (toAddress, tokenAmount) => {
|
|
17837
17913
|
if (checkoutItem?.selectedSourceAssetInfo?.chainId) {
|
|
17838
17914
|
const newConfig = getFunkitEnvForCheckoutEstimation({
|
|
@@ -18042,7 +18118,7 @@ import React128, { useState as useState39 } from "react";
|
|
|
18042
18118
|
// src/modals/CheckoutModal/ConfirmationStep/useAccountBalanceTransfer.ts
|
|
18043
18119
|
import { getPaymasterDataForCheckoutSponsoredTransfer } from "@funkit/api-base";
|
|
18044
18120
|
import { ERC20_ABI, USDT_ABI } from "@funkit/core";
|
|
18045
|
-
import { useCallback as
|
|
18121
|
+
import { useCallback as useCallback25 } from "react";
|
|
18046
18122
|
import { useAccount as useAccount5, useSendTransaction, useWriteContract } from "wagmi";
|
|
18047
18123
|
|
|
18048
18124
|
// src/utils/isMainnetUsdt.ts
|
|
@@ -18066,7 +18142,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
|
|
|
18066
18142
|
const { sendTransactionAsync } = useSendTransaction();
|
|
18067
18143
|
const { cancelCheckout, checkoutItem } = useCheckoutContext();
|
|
18068
18144
|
const { latestQuote } = useQuoteContext();
|
|
18069
|
-
const handleWeb3AccountBalancePostCheckout =
|
|
18145
|
+
const handleWeb3AccountBalancePostCheckout = useCallback25(
|
|
18070
18146
|
async (depositAddress) => {
|
|
18071
18147
|
if (!latestQuote?.baseQuote.estTotalFromAmountBaseUnit) {
|
|
18072
18148
|
return;
|
|
@@ -18172,7 +18248,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
|
|
|
18172
18248
|
function useWeb2AccountBalancePostCheckout(apiKey) {
|
|
18173
18249
|
const { latestQuote } = useQuoteContext();
|
|
18174
18250
|
const { generateCheckoutTransferOpItems } = useCheckoutAccountBalanceTransfer();
|
|
18175
|
-
const handleWeb2AccountBalancePostCheckout =
|
|
18251
|
+
const handleWeb2AccountBalancePostCheckout = useCallback25(
|
|
18176
18252
|
async (depositAddress) => {
|
|
18177
18253
|
const { rFunWallet, rFunWalletAuth, transferOp, envConfig } = await generateCheckoutTransferOpItems(
|
|
18178
18254
|
depositAddress,
|
|
@@ -18221,7 +18297,7 @@ function useAccountBalancePostCheckout(setPostCheckoutStepMessage, apiKey) {
|
|
|
18221
18297
|
const { loginType } = useGeneralWallet();
|
|
18222
18298
|
const handleWeb2AccountBalancePostCheckout = useWeb2AccountBalancePostCheckout(apiKey);
|
|
18223
18299
|
const handleWeb3AccountBalancePostCheckout = useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage);
|
|
18224
|
-
const handleAccountBalancePostCheckout =
|
|
18300
|
+
const handleAccountBalancePostCheckout = useCallback25(
|
|
18225
18301
|
async (depositAddress) => {
|
|
18226
18302
|
if (loginType === "web2" /* Web2 */) {
|
|
18227
18303
|
await handleWeb2AccountBalancePostCheckout(depositAddress);
|
|
@@ -18372,15 +18448,15 @@ function usePostCheckout({
|
|
|
18372
18448
|
}
|
|
18373
18449
|
|
|
18374
18450
|
// src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
|
|
18375
|
-
import { useCallback as
|
|
18451
|
+
import { useCallback as useCallback28, useEffect as useEffect35, useMemo as useMemo23, useRef as useRef18, useState as useState42 } from "react";
|
|
18376
18452
|
|
|
18377
18453
|
// src/hooks/useCountdown.tsx
|
|
18378
18454
|
import React130 from "react";
|
|
18379
|
-
import { useCallback as
|
|
18455
|
+
import { useCallback as useCallback27, useState as useState41 } from "react";
|
|
18380
18456
|
|
|
18381
18457
|
// src/components/FunCountdown/FunCountdown.tsx
|
|
18382
18458
|
import { noop as noop7 } from "@funkit/utils";
|
|
18383
|
-
import React129, { useCallback as
|
|
18459
|
+
import React129, { useCallback as useCallback26, useEffect as useEffect34, useState as useState40 } from "react";
|
|
18384
18460
|
|
|
18385
18461
|
// src/components/FunCountdown/FunCountdown.css.ts
|
|
18386
18462
|
var backgroundRing = "_1t0bc111 _1rsrm2f1l4";
|
|
@@ -18416,7 +18492,7 @@ var FunCountdown = ({
|
|
|
18416
18492
|
const onCountdownEndedOnce = useEffectEvent(onCountdownEnded);
|
|
18417
18493
|
const onBeforeCountdownEndsOnce = useEffectEvent(onBeforeCountdownEnds);
|
|
18418
18494
|
const onCountdownLastSecondOnce = useEffectEvent(onCountdownLastSecond);
|
|
18419
|
-
const handleInterval =
|
|
18495
|
+
const handleInterval = useCallback26(() => {
|
|
18420
18496
|
if (isPaused) {
|
|
18421
18497
|
return;
|
|
18422
18498
|
}
|
|
@@ -18534,7 +18610,7 @@ function useCountdown({
|
|
|
18534
18610
|
}) {
|
|
18535
18611
|
const [countdownKey, setCountdownKey] = useState41(0);
|
|
18536
18612
|
const [isLastSecond, setIsLastSecond] = useState41(false);
|
|
18537
|
-
const restartCountdown =
|
|
18613
|
+
const restartCountdown = useCallback27(() => {
|
|
18538
18614
|
setIsLastSecond(false);
|
|
18539
18615
|
setCountdownKey((key) => key + 1);
|
|
18540
18616
|
}, []);
|
|
@@ -18589,7 +18665,7 @@ function useQuoteRefresh({
|
|
|
18589
18665
|
preloadedQuoteRef.current = data;
|
|
18590
18666
|
}
|
|
18591
18667
|
);
|
|
18592
|
-
const preloadQuote =
|
|
18668
|
+
const preloadQuote = useCallback28(() => {
|
|
18593
18669
|
if (!isSourceAssetConfirming) {
|
|
18594
18670
|
onSourceAssetConfirmed(true);
|
|
18595
18671
|
}
|
|
@@ -18603,7 +18679,7 @@ function useQuoteRefresh({
|
|
|
18603
18679
|
onBeforeCountdownEnds: preloadQuote,
|
|
18604
18680
|
onCountdownEnded: () => refreshQuote()
|
|
18605
18681
|
});
|
|
18606
|
-
const refreshQuote =
|
|
18682
|
+
const refreshQuote = useCallback28(
|
|
18607
18683
|
async (forceHardRefresh = false) => {
|
|
18608
18684
|
if (isOnHold) {
|
|
18609
18685
|
setIsPendingRefresh(true);
|
|
@@ -18635,7 +18711,7 @@ function useQuoteRefresh({
|
|
|
18635
18711
|
},
|
|
18636
18712
|
[isOnHold, restartCountdown, setCheckoutQuote, triggerAssetConfirm]
|
|
18637
18713
|
);
|
|
18638
|
-
const quoteError =
|
|
18714
|
+
const quoteError = useMemo23(() => {
|
|
18639
18715
|
if (quoteErrorMessage && !isQuoting) {
|
|
18640
18716
|
return {
|
|
18641
18717
|
message: quoteErrorMessage,
|
|
@@ -18773,7 +18849,7 @@ function ConfirmationStep({
|
|
|
18773
18849
|
refreshIntervalSeconds: directExecutionType === DirectExecutionType2.RELAY ? RELAY_ESTIMATE_REFRESH_INTERVAL_SEC : DEFAULT_ESTIMATE_REFRESH_INTERVAL_SEC
|
|
18774
18850
|
})
|
|
18775
18851
|
);
|
|
18776
|
-
const error =
|
|
18852
|
+
const error = useMemo24(() => {
|
|
18777
18853
|
if (!isInitialQuoting && moonpayAmountCheck?.isInvalid) {
|
|
18778
18854
|
return {
|
|
18779
18855
|
message: moonpayAmountCheck.message,
|
|
@@ -18788,7 +18864,7 @@ function ConfirmationStep({
|
|
|
18788
18864
|
quoteError,
|
|
18789
18865
|
isInitialQuoting
|
|
18790
18866
|
]);
|
|
18791
|
-
const stepMessage =
|
|
18867
|
+
const stepMessage = useMemo24(() => {
|
|
18792
18868
|
if (initialQuoteStep) {
|
|
18793
18869
|
return initialQuoteStep;
|
|
18794
18870
|
}
|
|
@@ -18845,7 +18921,7 @@ function ConfirmationStep({
|
|
|
18845
18921
|
const isStepLoading = isInitialQuoting || isContinuing || isRefreshing;
|
|
18846
18922
|
const uiCustomizations = funkitConfig.uiCustomizations?.confirmationScreen;
|
|
18847
18923
|
const customRecipient = checkoutItem?.initSettings.config.customRecipient;
|
|
18848
|
-
const showKatanaBridgeAlert =
|
|
18924
|
+
const showKatanaBridgeAlert = useMemo24(() => {
|
|
18849
18925
|
const relayQuoteMetadata = latestQuote?.baseQuote?.metadata;
|
|
18850
18926
|
if (!relayQuoteMetadata) {
|
|
18851
18927
|
return false;
|
|
@@ -18859,7 +18935,7 @@ function ConfirmationStep({
|
|
|
18859
18935
|
// https://fun-xyz.slack.com/archives/C08PVUDA1M2/p1752179735981389?thread_ts=1752176009.628309&cid=C08PVUDA1M2
|
|
18860
18936
|
swapImpact + appFeePercent > KATANA_BRIDGE_ALERT_THRESHOLD_PERCENT;
|
|
18861
18937
|
}, [funkitConfig.apiKey, latestQuote, checkoutItem]);
|
|
18862
|
-
const showDirectExecutionNotificationBanner =
|
|
18938
|
+
const showDirectExecutionNotificationBanner = useMemo24(() => {
|
|
18863
18939
|
const isRelayEnabled = checkoutItem !== null && getIsRelayEnabled({
|
|
18864
18940
|
fromChainId: checkoutItem.selectedSourceAssetInfo.chainId,
|
|
18865
18941
|
fromTokenAddress: checkoutItem.selectedSourceAssetInfo.address || "",
|
|
@@ -19111,7 +19187,7 @@ import { getMeldDefaultFiat } from "@funkit/api-base";
|
|
|
19111
19187
|
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
19112
19188
|
|
|
19113
19189
|
// src/hooks/queries/useMeldCryptoCurrencyCode.ts
|
|
19114
|
-
import { FlagKey as
|
|
19190
|
+
import { FlagKey as FlagKey19 } from "@funkit/utils";
|
|
19115
19191
|
import { arbitrum as arbitrum3, base as base6, polygon as polygon5 } from "viem/chains";
|
|
19116
19192
|
var ARB_USDC = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase();
|
|
19117
19193
|
var POLYGON_USDC = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359".toLowerCase();
|
|
@@ -19144,7 +19220,7 @@ function useMeldCryptoCurrencyCode() {
|
|
|
19144
19220
|
return mappedCurrency;
|
|
19145
19221
|
}
|
|
19146
19222
|
function useIsMeldEnabled() {
|
|
19147
|
-
const meldEnabled = useFlag(
|
|
19223
|
+
const meldEnabled = useFlag(FlagKey19.EnableMeldPayment);
|
|
19148
19224
|
const meldCurrencyCode = useMeldCryptoCurrencyCode();
|
|
19149
19225
|
return meldEnabled && !!meldCurrencyCode;
|
|
19150
19226
|
}
|
|
@@ -19278,13 +19354,13 @@ import {
|
|
|
19278
19354
|
MeldServiceProvider as MeldServiceProvider2
|
|
19279
19355
|
} from "@funkit/api-base";
|
|
19280
19356
|
import {
|
|
19281
|
-
FlagKey as
|
|
19357
|
+
FlagKey as FlagKey22,
|
|
19282
19358
|
formatCryptoAndStringify as formatCryptoAndStringify4,
|
|
19283
19359
|
formatCurrencyAndStringify as formatCurrencyAndStringify9,
|
|
19284
19360
|
isTokenEquivalent as isTokenEquivalent6,
|
|
19285
19361
|
round as round4
|
|
19286
19362
|
} from "@funkit/utils";
|
|
19287
|
-
import React145, { useMemo as
|
|
19363
|
+
import React145, { useMemo as useMemo26 } from "react";
|
|
19288
19364
|
|
|
19289
19365
|
// src/components/CurrencySelector/CurrencySelector.tsx
|
|
19290
19366
|
import React134 from "react";
|
|
@@ -19550,7 +19626,7 @@ var MeldProviderLabel = ({
|
|
|
19550
19626
|
};
|
|
19551
19627
|
|
|
19552
19628
|
// src/components/SourcePaymentMethodItem/SourcePaymentMethodItem.tsx
|
|
19553
|
-
import { FlagKey as
|
|
19629
|
+
import { FlagKey as FlagKey20 } from "@funkit/utils";
|
|
19554
19630
|
import clsx17 from "clsx";
|
|
19555
19631
|
import { useAnimate as useAnimate2 } from "motion/react";
|
|
19556
19632
|
import React139 from "react";
|
|
@@ -20155,8 +20231,8 @@ var SourcePaymentMethodItem = ({
|
|
|
20155
20231
|
icon: /* @__PURE__ */ React139.createElement(MasterCardPillIcon, { key: "mastercard", backdropColor })
|
|
20156
20232
|
}
|
|
20157
20233
|
];
|
|
20158
|
-
const isCardEnabled = useFlag(
|
|
20159
|
-
const isBrokerageEnabled = useFlag(
|
|
20234
|
+
const isCardEnabled = useFlag(FlagKey20.EnableCard);
|
|
20235
|
+
const isBrokerageEnabled = useFlag(FlagKey20.EnableBrokerage);
|
|
20160
20236
|
const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
|
|
20161
20237
|
if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isCardEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
|
|
20162
20238
|
return false;
|
|
@@ -20578,7 +20654,7 @@ import {
|
|
|
20578
20654
|
katanaChain
|
|
20579
20655
|
} from "@funkit/chains";
|
|
20580
20656
|
import { getTokenAddressBySymbolAndChainId as getTokenAddressBySymbolAndChainId2 } from "@funkit/core";
|
|
20581
|
-
import { useCallback as
|
|
20657
|
+
import { useCallback as useCallback29, useState as useState44 } from "react";
|
|
20582
20658
|
import { mainnet as mainnet7, mantle, zksync as zksync2 } from "viem/chains";
|
|
20583
20659
|
var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
|
|
20584
20660
|
if (!checkoutItem?.initSettings.config.targetChain) {
|
|
@@ -20639,7 +20715,7 @@ function useUpdateCardSourceAsset() {
|
|
|
20639
20715
|
const { checkoutItem, updateSourceAsset } = useCheckoutContext();
|
|
20640
20716
|
const { userIpInfo } = useFunkitUserIp();
|
|
20641
20717
|
const [isUpdating, setIsUpdating] = useState44(false);
|
|
20642
|
-
const onSelectCard =
|
|
20718
|
+
const onSelectCard = useCallback29(async () => {
|
|
20643
20719
|
setIsUpdating(true);
|
|
20644
20720
|
try {
|
|
20645
20721
|
const source = await pickSourceAssetForCard(checkoutItem, userIpInfo);
|
|
@@ -20762,7 +20838,7 @@ function InputAmountLayout({
|
|
|
20762
20838
|
}
|
|
20763
20839
|
|
|
20764
20840
|
// src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
|
|
20765
|
-
import { FlagKey as
|
|
20841
|
+
import { FlagKey as FlagKey21, clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify8 } from "@funkit/utils";
|
|
20766
20842
|
import React144 from "react";
|
|
20767
20843
|
var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
|
|
20768
20844
|
function deduplicateArray(arr) {
|
|
@@ -20770,7 +20846,7 @@ function deduplicateArray(arr) {
|
|
|
20770
20846
|
}
|
|
20771
20847
|
function useFiatAmountOptions(currency) {
|
|
20772
20848
|
const isMeldEnabled = useIsMeldEnabled();
|
|
20773
|
-
const currencyQuickOptionStr = useFlag(
|
|
20849
|
+
const currencyQuickOptionStr = useFlag(FlagKey21.MeldQuickOptions);
|
|
20774
20850
|
const currencyQuickOption = safeJSONParse(
|
|
20775
20851
|
currencyQuickOptionStr
|
|
20776
20852
|
);
|
|
@@ -20836,19 +20912,19 @@ var QuickOptions = ({
|
|
|
20836
20912
|
|
|
20837
20913
|
// src/modals/CheckoutModal/InputAmount/useAmountInput.ts
|
|
20838
20914
|
import {
|
|
20839
|
-
useCallback as
|
|
20915
|
+
useCallback as useCallback31,
|
|
20840
20916
|
useEffect as useEffect37,
|
|
20841
|
-
useMemo as
|
|
20917
|
+
useMemo as useMemo25,
|
|
20842
20918
|
useReducer as useReducer3,
|
|
20843
20919
|
useRef as useRef20,
|
|
20844
20920
|
useState as useState45
|
|
20845
20921
|
} from "react";
|
|
20846
20922
|
|
|
20847
20923
|
// src/hooks/useTextMeasurer.ts
|
|
20848
|
-
import { useCallback as
|
|
20924
|
+
import { useCallback as useCallback30, useRef as useRef19 } from "react";
|
|
20849
20925
|
function useTextMeasurer(inputRef) {
|
|
20850
20926
|
const canvasRef = useRef19(document.createElement("canvas"));
|
|
20851
|
-
const measureText =
|
|
20927
|
+
const measureText = useCallback30(
|
|
20852
20928
|
(text, fontSize) => {
|
|
20853
20929
|
if (!inputRef.current) {
|
|
20854
20930
|
return void 0;
|
|
@@ -21099,7 +21175,7 @@ var MAX_WIDTH = 310;
|
|
|
21099
21175
|
function useAmountInput(options) {
|
|
21100
21176
|
const isMeldEnabled = useIsMeldEnabled();
|
|
21101
21177
|
const [state, dispatch] = useReducer3(reduceState, options, initializeState);
|
|
21102
|
-
const derivedState =
|
|
21178
|
+
const derivedState = useMemo25(() => getDerivedState(state), [state]);
|
|
21103
21179
|
const inputRef = useRef20(null);
|
|
21104
21180
|
const { inputValue, locale } = state;
|
|
21105
21181
|
const { inputDecimals, inputPrefix, placeholder } = derivedState;
|
|
@@ -21134,7 +21210,7 @@ function useAmountInput(options) {
|
|
|
21134
21210
|
quickOptions
|
|
21135
21211
|
} = options;
|
|
21136
21212
|
const unitPrice = isStablecoin(checkoutConfig.targetAssetTicker) ? 1 : realUnitPrice;
|
|
21137
|
-
const dispatchAndGetNewState =
|
|
21213
|
+
const dispatchAndGetNewState = useCallback31(
|
|
21138
21214
|
(action) => {
|
|
21139
21215
|
dispatch(action);
|
|
21140
21216
|
return getDerivedState(reduceState(state, action));
|
|
@@ -21322,7 +21398,7 @@ function useAmountInput(options) {
|
|
|
21322
21398
|
return () => element2.removeEventListener("beforeinput", onBeforeInput2);
|
|
21323
21399
|
}
|
|
21324
21400
|
}, [inputDecimals, locale]);
|
|
21325
|
-
const onChange =
|
|
21401
|
+
const onChange = useCallback31(
|
|
21326
21402
|
(event) => {
|
|
21327
21403
|
dispatch({
|
|
21328
21404
|
type: "setInputValue",
|
|
@@ -21357,7 +21433,7 @@ function useAmountInput(options) {
|
|
|
21357
21433
|
});
|
|
21358
21434
|
}
|
|
21359
21435
|
}, [defaultAmount]);
|
|
21360
|
-
const setFiatAmount =
|
|
21436
|
+
const setFiatAmount = useCallback31(
|
|
21361
21437
|
(fiatAmount) => {
|
|
21362
21438
|
const newState = dispatchAndGetNewState({
|
|
21363
21439
|
type: "setFiatAmount",
|
|
@@ -21369,7 +21445,7 @@ function useAmountInput(options) {
|
|
|
21369
21445
|
},
|
|
21370
21446
|
[dispatchAndGetNewState, unitPrice]
|
|
21371
21447
|
);
|
|
21372
|
-
const toggleInputInFiat =
|
|
21448
|
+
const toggleInputInFiat = useCallback31(() => {
|
|
21373
21449
|
dispatch({ type: "toggleInputInFiat" });
|
|
21374
21450
|
inputRef.current?.focus();
|
|
21375
21451
|
}, []);
|
|
@@ -21435,7 +21511,7 @@ function InputAmountLoaded({
|
|
|
21435
21511
|
defaultFiatCurrency,
|
|
21436
21512
|
textCustomizations
|
|
21437
21513
|
}) {
|
|
21438
|
-
const maxCheckoutUsdString = useFlag(
|
|
21514
|
+
const maxCheckoutUsdString = useFlag(FlagKey22.MaxCheckoutUsd);
|
|
21439
21515
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
21440
21516
|
const { paymentMethod } = modalState.paymentMethodInfo;
|
|
21441
21517
|
const { quote: manuallySelectedQuote } = modalState;
|
|
@@ -21495,7 +21571,7 @@ function InputAmountLoaded({
|
|
|
21495
21571
|
selectedQuote,
|
|
21496
21572
|
isSelectedQuoteUnavailable
|
|
21497
21573
|
} = useMeld(manuallySelectedQuote, fiatAmount, fiatCurrency);
|
|
21498
|
-
const error =
|
|
21574
|
+
const error = useMemo26(() => {
|
|
21499
21575
|
if (isCardCheckout) {
|
|
21500
21576
|
if (isSelectedQuoteUnavailable) {
|
|
21501
21577
|
return {
|
|
@@ -21780,7 +21856,7 @@ function YouPayYouReceiveWrapper({
|
|
|
21780
21856
|
|
|
21781
21857
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoading.tsx
|
|
21782
21858
|
import { formatCryptoAndStringify as formatCryptoAndStringify5 } from "@funkit/utils";
|
|
21783
|
-
import React146, { useMemo as
|
|
21859
|
+
import React146, { useMemo as useMemo27 } from "react";
|
|
21784
21860
|
function InputAmountLoading({
|
|
21785
21861
|
modalState,
|
|
21786
21862
|
sourceHoldingError,
|
|
@@ -21792,7 +21868,7 @@ function InputAmountLoading({
|
|
|
21792
21868
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
21793
21869
|
const targetAssetAmount = checkoutItem?.initSettings.config.targetAssetAmount;
|
|
21794
21870
|
const targetAssetTicker = checkoutItem?.initSettings.config.targetAssetTicker;
|
|
21795
|
-
const error =
|
|
21871
|
+
const error = useMemo27(() => {
|
|
21796
21872
|
if (sourceHoldingError) {
|
|
21797
21873
|
return {
|
|
21798
21874
|
message: /* @__PURE__ */ React146.createElement("div", null, "Unable to retrieve your account balance. Please try re-linking your account.", " "),
|
|
@@ -21872,7 +21948,7 @@ function InputAmountLoading({
|
|
|
21872
21948
|
}
|
|
21873
21949
|
|
|
21874
21950
|
// src/modals/CheckoutModal/InputAmount/useAvailableBalanceForCheckout.ts
|
|
21875
|
-
import { useMemo as
|
|
21951
|
+
import { useMemo as useMemo28 } from "react";
|
|
21876
21952
|
function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetChainId, assetSymbol) {
|
|
21877
21953
|
const { data: walletAssetHoldings, isLoading: isLoadingWalletAssetHoldings } = useWalletAssetHoldings(targetChainId);
|
|
21878
21954
|
const holdings = {
|
|
@@ -21882,7 +21958,7 @@ function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetC
|
|
|
21882
21958
|
["token_transfer" /* TOKEN_TRANSFER */]: null,
|
|
21883
21959
|
["virtual_bank" /* VIRTUAL_BANK */]: null
|
|
21884
21960
|
}[paymentMethodInfo.paymentMethod];
|
|
21885
|
-
const holdingItem =
|
|
21961
|
+
const holdingItem = useMemo28(() => {
|
|
21886
21962
|
if (!assetSymbol || !holdings) {
|
|
21887
21963
|
return;
|
|
21888
21964
|
}
|
|
@@ -22005,14 +22081,14 @@ import { mainnet as mainnet8, polygon as polygon6 } from "viem/chains";
|
|
|
22005
22081
|
var ASSETS_LOW_VALUE_THRESHOLD2 = 0.1;
|
|
22006
22082
|
|
|
22007
22083
|
// src/hooks/usePaymentSources.ts
|
|
22008
|
-
import { FlagKey as
|
|
22084
|
+
import { FlagKey as FlagKey23, isNotNullish as isNotNullish7 } from "@funkit/utils";
|
|
22009
22085
|
function usePaymentMethodEnablement({
|
|
22010
22086
|
checkoutConfig
|
|
22011
22087
|
}) {
|
|
22012
22088
|
const { apiKey } = useFunkitConfig();
|
|
22013
|
-
const isTokenTransferFlagEnabled = useFlag(
|
|
22089
|
+
const isTokenTransferFlagEnabled = useFlag(FlagKey23.EnableTokenTransfer);
|
|
22014
22090
|
const isFiatFlagEnabled = useFiatEnabled();
|
|
22015
|
-
const isCardFlagEnabled = useFlag(
|
|
22091
|
+
const isCardFlagEnabled = useFlag(FlagKey23.EnableCard);
|
|
22016
22092
|
const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
|
|
22017
22093
|
const isUsKatanaUser = useIsUsKatanaUser();
|
|
22018
22094
|
const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
|
|
@@ -22390,7 +22466,7 @@ function LoadingAccount({
|
|
|
22390
22466
|
|
|
22391
22467
|
// src/modals/CheckoutModal/MeldCurrencySelect/MeldCurrencySelect.tsx
|
|
22392
22468
|
import clsx18 from "clsx";
|
|
22393
|
-
import React151, { useMemo as
|
|
22469
|
+
import React151, { useMemo as useMemo29, useState as useState46 } from "react";
|
|
22394
22470
|
|
|
22395
22471
|
// src/css/scrollStyles.css.ts
|
|
22396
22472
|
var hideScrollBar = "_163ehmk0";
|
|
@@ -22446,7 +22522,7 @@ function MeldCurrencySelect({
|
|
|
22446
22522
|
const [selectedCurrency, setSelectedCurrency] = useState46(
|
|
22447
22523
|
defaultCurrency
|
|
22448
22524
|
);
|
|
22449
|
-
const filteredOptions =
|
|
22525
|
+
const filteredOptions = useMemo29(() => {
|
|
22450
22526
|
const newOptions = data?.filter(
|
|
22451
22527
|
({ name, currencyCode }) => currencyCode.toLowerCase().includes(query.toLowerCase()) || name.toLowerCase().includes(query.toLowerCase())
|
|
22452
22528
|
) ?? [];
|
|
@@ -22582,7 +22658,7 @@ function MeldQuotes({
|
|
|
22582
22658
|
}
|
|
22583
22659
|
|
|
22584
22660
|
// src/modals/CheckoutModal/MoonpaySetup.tsx
|
|
22585
|
-
import React154, { useCallback as
|
|
22661
|
+
import React154, { useCallback as useCallback32, useMemo as useMemo31, useState as useState48 } from "react";
|
|
22586
22662
|
|
|
22587
22663
|
// src/components/FunPayments/FunPaymentMoonpayType.css.ts
|
|
22588
22664
|
var mpClass = "_1kmpeyf0";
|
|
@@ -22591,7 +22667,7 @@ var stretchStyle = "_1kmpeyf1";
|
|
|
22591
22667
|
// src/components/FunPayments/FunPaymentMoonpayType.tsx
|
|
22592
22668
|
import { getMoonpayUrlSignature } from "@funkit/api-base";
|
|
22593
22669
|
import { colorToHex } from "@funkit/utils";
|
|
22594
|
-
import React153, { Fragment, useEffect as useEffect40, useMemo as
|
|
22670
|
+
import React153, { Fragment, useEffect as useEffect40, useMemo as useMemo30, useState as useState47 } from "react";
|
|
22595
22671
|
var LazyMoonPayBuyWidget = (props) => {
|
|
22596
22672
|
const [MoonPayBuyWidget, setMoonPayBuyWidget] = useState47(null);
|
|
22597
22673
|
useEffect40(() => {
|
|
@@ -22622,7 +22698,7 @@ function FunPaymentMoonpayType({
|
|
|
22622
22698
|
const isSandboxMode = useIsFunkitSandboxMode();
|
|
22623
22699
|
const funkitConfig = useFunkitConfig();
|
|
22624
22700
|
const { userInfo } = useGeneralWallet();
|
|
22625
|
-
const currencyCode =
|
|
22701
|
+
const currencyCode = useMemo30(() => {
|
|
22626
22702
|
return generateMoonpayCurrencyCode(depositToken, depositTokenChainId);
|
|
22627
22703
|
}, [depositToken, depositTokenChainId]);
|
|
22628
22704
|
const depositTokenAmountStringFormatted = formatTokenAmountForMoonpay(
|
|
@@ -22645,7 +22721,7 @@ function FunPaymentMoonpayType({
|
|
|
22645
22721
|
});
|
|
22646
22722
|
return signature || "";
|
|
22647
22723
|
};
|
|
22648
|
-
const moonpayButtonColor =
|
|
22724
|
+
const moonpayButtonColor = useMemo30(() => {
|
|
22649
22725
|
const primaryButtonHex = colorToHex(activeTheme.colors.buttonPrimary);
|
|
22650
22726
|
if (["#FFF", "#FFFF", "#FFFFFF", "#FFFFFFFF"].includes(primaryButtonHex)) {
|
|
22651
22727
|
return void 0;
|
|
@@ -22703,12 +22779,12 @@ function MoonpaySetup({
|
|
|
22703
22779
|
const { paymentAddress, token, tokenChainId, depositAmount } = modalState;
|
|
22704
22780
|
const [isSupportedRegion, setIsSupportedRegion] = useState48(true);
|
|
22705
22781
|
const [isContinueEnabled, setIsContinueEnabled] = useState48(false);
|
|
22706
|
-
const handleOnCompleted =
|
|
22782
|
+
const handleOnCompleted = useCallback32(() => {
|
|
22707
22783
|
onNext({
|
|
22708
22784
|
depositAddress: paymentAddress
|
|
22709
22785
|
});
|
|
22710
22786
|
}, [onNext, paymentAddress]);
|
|
22711
|
-
const MoonpayWidget =
|
|
22787
|
+
const MoonpayWidget = useMemo31(() => {
|
|
22712
22788
|
return /* @__PURE__ */ React154.createElement(
|
|
22713
22789
|
FunPaymentMoonpayType,
|
|
22714
22790
|
{
|
|
@@ -22739,7 +22815,7 @@ function MoonpaySetup({
|
|
|
22739
22815
|
// src/modals/CheckoutModal/SelectAsset.tsx
|
|
22740
22816
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST2 } from "@funkit/chains";
|
|
22741
22817
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent7 } from "@funkit/utils";
|
|
22742
|
-
import React157, { useEffect as useEffect41, useMemo as
|
|
22818
|
+
import React157, { useEffect as useEffect41, useMemo as useMemo33, useState as useState49 } from "react";
|
|
22743
22819
|
import { createPortal as createPortal14 } from "react-dom";
|
|
22744
22820
|
|
|
22745
22821
|
// src/components/Dropdown/ReceiveTokenDropdown.tsx
|
|
@@ -22835,13 +22911,13 @@ var ReceiveTokenDropdown = ({
|
|
|
22835
22911
|
|
|
22836
22912
|
// src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
|
|
22837
22913
|
import React156 from "react";
|
|
22838
|
-
import { FlagKey as
|
|
22914
|
+
import { FlagKey as FlagKey24, safeParseJson as safeParseJson6 } from "@funkit/utils";
|
|
22839
22915
|
var NewTokenDepositAlert = ({
|
|
22840
22916
|
onClick
|
|
22841
22917
|
}) => {
|
|
22842
|
-
const alertJson = useFlag(
|
|
22918
|
+
const alertJson = useFlag(FlagKey24.NewTokenAssetSelectionBanner);
|
|
22843
22919
|
const alertData = safeParseJson6(alertJson);
|
|
22844
|
-
const isTokenTransferEnabled = useFlag(
|
|
22920
|
+
const isTokenTransferEnabled = useFlag(FlagKey24.EnableTokenTransfer);
|
|
22845
22921
|
if (!alertData || !isTokenTransferEnabled) {
|
|
22846
22922
|
return null;
|
|
22847
22923
|
}
|
|
@@ -22869,7 +22945,7 @@ var NewTokenDepositAlert = ({
|
|
|
22869
22945
|
// src/hooks/useAllowedAssets.ts
|
|
22870
22946
|
import { getAllowedAssets } from "@funkit/api-base";
|
|
22871
22947
|
import { useQuery as useQuery17 } from "@tanstack/react-query";
|
|
22872
|
-
import { useCallback as
|
|
22948
|
+
import { useCallback as useCallback33, useMemo as useMemo32 } from "react";
|
|
22873
22949
|
function useAllowedAssets() {
|
|
22874
22950
|
const { apiKey } = useFunkitConfig();
|
|
22875
22951
|
const { checkoutItem } = useCheckoutContext();
|
|
@@ -22883,7 +22959,7 @@ function useAllowedAssets() {
|
|
|
22883
22959
|
staleTime: 5 * 60 * 1e3,
|
|
22884
22960
|
gcTime: Number.POSITIVE_INFINITY
|
|
22885
22961
|
});
|
|
22886
|
-
const tokens =
|
|
22962
|
+
const tokens = useMemo32(() => {
|
|
22887
22963
|
if (!allowedAssets) {
|
|
22888
22964
|
return {};
|
|
22889
22965
|
}
|
|
@@ -22894,7 +22970,7 @@ function useAllowedAssets() {
|
|
|
22894
22970
|
}
|
|
22895
22971
|
return ret;
|
|
22896
22972
|
}, [allowedAssets]);
|
|
22897
|
-
const isAllowed =
|
|
22973
|
+
const isAllowed = useCallback33(
|
|
22898
22974
|
(chainId, tokenAddress) => {
|
|
22899
22975
|
const disabledByCustomerList = checkoutItem?.initSettings.config.disabledSourceTokens?.some(
|
|
22900
22976
|
(token) => {
|
|
@@ -22960,7 +23036,7 @@ function useEnrichedAccountHoldings({
|
|
|
22960
23036
|
}) {
|
|
22961
23037
|
const { isAllowed, isLoading } = useAllowedAssets();
|
|
22962
23038
|
const { loginType, walletAddress } = useGeneralWallet();
|
|
22963
|
-
const enrichedAccountHoldings =
|
|
23039
|
+
const enrichedAccountHoldings = useMemo33(() => {
|
|
22964
23040
|
if (!checkoutConfig) {
|
|
22965
23041
|
return [];
|
|
22966
23042
|
}
|
|
@@ -23000,7 +23076,7 @@ function useAssetOptions({
|
|
|
23000
23076
|
chainId,
|
|
23001
23077
|
dynamicTargetAssetCandidates
|
|
23002
23078
|
}) {
|
|
23003
|
-
const assetOptions =
|
|
23079
|
+
const assetOptions = useMemo33(() => {
|
|
23004
23080
|
return enrichedAccountHoldings.filter(
|
|
23005
23081
|
({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
|
|
23006
23082
|
).map(({ asset, usableForCheckout }) => {
|
|
@@ -23072,7 +23148,7 @@ function useScrollToSelectedAsset(selectedChainTokenSymbol) {
|
|
|
23072
23148
|
}
|
|
23073
23149
|
function useComputeDefault(checkoutConfig, accountHoldings) {
|
|
23074
23150
|
const candidates = checkoutConfig?.dynamicTargetAssetCandidates;
|
|
23075
|
-
const defaultTargetAsset =
|
|
23151
|
+
const defaultTargetAsset = useMemo33(() => {
|
|
23076
23152
|
if (!candidates || candidates.length <= 1) {
|
|
23077
23153
|
return {
|
|
23078
23154
|
tokenAddress: checkoutConfig?.targetAsset || "0x",
|
|
@@ -23086,7 +23162,7 @@ function useComputeDefault(checkoutConfig, accountHoldings) {
|
|
|
23086
23162
|
(token) => token.tokenSymbol === checkoutConfig?.targetAssetTicker
|
|
23087
23163
|
) ?? candidates.find((token) => token.isDefault) ?? candidates[0];
|
|
23088
23164
|
}, [candidates, checkoutConfig]);
|
|
23089
|
-
const defaultTokenSymbols =
|
|
23165
|
+
const defaultTokenSymbols = useMemo33(() => {
|
|
23090
23166
|
if (!checkoutConfig) {
|
|
23091
23167
|
return [];
|
|
23092
23168
|
}
|
|
@@ -23179,7 +23255,7 @@ function AccountSelectAsset({
|
|
|
23179
23255
|
handleTargetAssetUpdate(tokenItem);
|
|
23180
23256
|
onFinish();
|
|
23181
23257
|
});
|
|
23182
|
-
const selectedChainTokenSymbol =
|
|
23258
|
+
const selectedChainTokenSymbol = useMemo33(() => {
|
|
23183
23259
|
if (explicitlySelectedChainTokenSymbol) {
|
|
23184
23260
|
const assetExists = assetOptions.find(
|
|
23185
23261
|
({ asset }) => asset.chainSymbolKey === explicitlySelectedChainTokenSymbol
|
|
@@ -23429,7 +23505,7 @@ function SelectAsset({
|
|
|
23429
23505
|
|
|
23430
23506
|
// src/modals/CheckoutModal/SourceChange/SourceChange.tsx
|
|
23431
23507
|
import { BridgeCustomerStatus as BridgeCustomerStatus6, MeldServiceProvider as MeldServiceProvider4 } from "@funkit/api-base";
|
|
23432
|
-
import React159, { useCallback as
|
|
23508
|
+
import React159, { useCallback as useCallback34, useEffect as useEffect42, useState as useState50 } from "react";
|
|
23433
23509
|
import { createPortal as createPortal15 } from "react-dom";
|
|
23434
23510
|
|
|
23435
23511
|
// src/modals/CheckoutModal/SourceChange/DefiPurchaseSection.tsx
|
|
@@ -23563,7 +23639,7 @@ function PayPal() {
|
|
|
23563
23639
|
const isMeldEnabled = useIsMeldEnabled();
|
|
23564
23640
|
const { checkoutItem } = useCheckoutContext();
|
|
23565
23641
|
const isPaypalReady = false;
|
|
23566
|
-
const onClick =
|
|
23642
|
+
const onClick = useCallback34(() => {
|
|
23567
23643
|
if (isMeldEnabled && isPaypalReady) {
|
|
23568
23644
|
openMeldPopup(() => mutateAsync(MeldServiceProvider4.PAYPAL));
|
|
23569
23645
|
} else {
|
|
@@ -23777,13 +23853,13 @@ import { createPortal as createPortal16 } from "react-dom";
|
|
|
23777
23853
|
|
|
23778
23854
|
// src/components/CopyAddress/CopyInputDisplayedAddress.tsx
|
|
23779
23855
|
import { truncateMiddleOfAddress } from "@funkit/utils";
|
|
23780
|
-
import React160, { useCallback as
|
|
23856
|
+
import React160, { useCallback as useCallback36, useState as useState52 } from "react";
|
|
23781
23857
|
|
|
23782
23858
|
// src/hooks/useCopyToClipboard.ts
|
|
23783
|
-
import { useCallback as
|
|
23859
|
+
import { useCallback as useCallback35, useEffect as useEffect43, useState as useState51 } from "react";
|
|
23784
23860
|
var useCopyToClipboard = (text, delay = 1500) => {
|
|
23785
23861
|
const [isCopied, setCopied] = useState51(false);
|
|
23786
|
-
const handleCopy =
|
|
23862
|
+
const handleCopy = useCallback35(() => {
|
|
23787
23863
|
if (!text) {
|
|
23788
23864
|
return;
|
|
23789
23865
|
}
|
|
@@ -23823,7 +23899,7 @@ function CopyInputDisplayedAddress({
|
|
|
23823
23899
|
const { handleCopy } = useCopyToClipboard(address);
|
|
23824
23900
|
const [isActive, setIsActive] = useState52(null);
|
|
23825
23901
|
const displayAddress = truncateAddress ? truncateMiddleOfAddress(address, 40, 24, 8) : address;
|
|
23826
|
-
const handleClick =
|
|
23902
|
+
const handleClick = useCallback36(() => {
|
|
23827
23903
|
if (isActive) {
|
|
23828
23904
|
return;
|
|
23829
23905
|
}
|
|
@@ -23863,12 +23939,12 @@ function CopyInputDisplayedAddress({
|
|
|
23863
23939
|
}
|
|
23864
23940
|
|
|
23865
23941
|
// src/components/FunInfoBanner/ChainInfoBanners.tsx
|
|
23866
|
-
import { FlagKey as
|
|
23942
|
+
import { FlagKey as FlagKey25, safeParseJson as safeParseJson7 } from "@funkit/utils";
|
|
23867
23943
|
import React161 from "react";
|
|
23868
23944
|
var ChainInfoBanners = ({
|
|
23869
23945
|
chainId
|
|
23870
23946
|
}) => {
|
|
23871
|
-
const chainInfoBanners = useFlag(
|
|
23947
|
+
const chainInfoBanners = useFlag(FlagKey25.ChainInfoBanners);
|
|
23872
23948
|
const chainInfoBannersData = safeParseJson7(chainInfoBanners) ?? {};
|
|
23873
23949
|
try {
|
|
23874
23950
|
const chainBanners = chainInfoBannersData[chainId] ?? [];
|
|
@@ -23912,7 +23988,7 @@ var LightningBoltIcon = ({ size = 16 }) => /* @__PURE__ */ React162.createElemen
|
|
|
23912
23988
|
|
|
23913
23989
|
// src/components/QRCode/QRCode.tsx
|
|
23914
23990
|
import QRCodeUtil from "qrcode";
|
|
23915
|
-
import React163, { useMemo as
|
|
23991
|
+
import React163, { useMemo as useMemo34 } from "react";
|
|
23916
23992
|
var generateMatrix = (value, errorCorrectionLevel) => {
|
|
23917
23993
|
const { data } = QRCodeUtil.create(value, { errorCorrectionLevel }).modules;
|
|
23918
23994
|
const sqrt = Math.sqrt(data.length);
|
|
@@ -23940,7 +24016,7 @@ function QRCode({
|
|
|
23940
24016
|
}) {
|
|
23941
24017
|
const { activeTheme } = useActiveTheme();
|
|
23942
24018
|
const size = sizeProp - Number.parseInt(outsidePadding, 10) * 2;
|
|
23943
|
-
const dots =
|
|
24019
|
+
const dots = useMemo34(() => {
|
|
23944
24020
|
const dots2 = [];
|
|
23945
24021
|
const matrix = generateMatrix(uri, ecl);
|
|
23946
24022
|
const cellSize = size / matrix.length;
|
|
@@ -24484,8 +24560,8 @@ var TransferTokenDetails = ({
|
|
|
24484
24560
|
|
|
24485
24561
|
// src/hooks/useTokenTransfer.ts
|
|
24486
24562
|
import { bitcoinChain as bitcoinChain3, solanaChain as solanaChain4 } from "@funkit/chains";
|
|
24487
|
-
import { FlagKey as
|
|
24488
|
-
import { useMemo as
|
|
24563
|
+
import { FlagKey as FlagKey26 } from "@funkit/utils";
|
|
24564
|
+
import { useMemo as useMemo35 } from "react";
|
|
24489
24565
|
import { arbitrum as arbitrum4, base as base7, mainnet as mainnet9, optimism, polygon as polygon7 } from "viem/chains";
|
|
24490
24566
|
|
|
24491
24567
|
// src/utils/transfer.ts
|
|
@@ -24508,7 +24584,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
24508
24584
|
const { apiKey } = useFunkitConfig();
|
|
24509
24585
|
const { checkoutItem } = useCheckoutContext();
|
|
24510
24586
|
const enableUniversal = useFlag(
|
|
24511
|
-
|
|
24587
|
+
FlagKey26.EnableTokenTransferUniversalDepositAddress,
|
|
24512
24588
|
false
|
|
24513
24589
|
);
|
|
24514
24590
|
const estPriceImpact = usePriceImpactEstimation(
|
|
@@ -24560,7 +24636,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
24560
24636
|
};
|
|
24561
24637
|
var useMinTransferLimits = () => {
|
|
24562
24638
|
const { userIpInfo } = useFunkitUserIp();
|
|
24563
|
-
const minTransferValueJsonString = useFlag(
|
|
24639
|
+
const minTransferValueJsonString = useFlag(FlagKey26.MinTokenTransferValue);
|
|
24564
24640
|
const minTransferValue = safeJSONParse(
|
|
24565
24641
|
minTransferValueJsonString
|
|
24566
24642
|
);
|
|
@@ -24582,7 +24658,7 @@ var useMinTransferValue = (selectedChainId) => {
|
|
|
24582
24658
|
};
|
|
24583
24659
|
var useMinTransferValues = (chainIds) => {
|
|
24584
24660
|
const limits = useMinTransferLimits();
|
|
24585
|
-
return
|
|
24661
|
+
return useMemo35(() => {
|
|
24586
24662
|
return chainIds.reduce(
|
|
24587
24663
|
(acc, id) => {
|
|
24588
24664
|
const limit = getMinTransferValueForChain(id, limits);
|
|
@@ -25304,9 +25380,9 @@ var FiatAccountDetail = {
|
|
|
25304
25380
|
|
|
25305
25381
|
// src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
|
|
25306
25382
|
import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
|
|
25307
|
-
import React179, { useCallback as
|
|
25383
|
+
import React179, { useCallback as useCallback37, useEffect as useEffect44, useMemo as useMemo36, useState as useState56 } from "react";
|
|
25308
25384
|
function useIframeListener(listeners) {
|
|
25309
|
-
const handleMessage =
|
|
25385
|
+
const handleMessage = useCallback37(
|
|
25310
25386
|
(event) => {
|
|
25311
25387
|
switch (event.data.name) {
|
|
25312
25388
|
case "load": {
|
|
@@ -25357,7 +25433,7 @@ function KycIframe({
|
|
|
25357
25433
|
const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
|
|
25358
25434
|
const { data: kycLink, isLoading: isLinkLoading } = useLoadKycLink(modalState);
|
|
25359
25435
|
const [iframeLoading, setIframeLoading] = useState56(true);
|
|
25360
|
-
const listeners =
|
|
25436
|
+
const listeners = useMemo36(
|
|
25361
25437
|
() => ({
|
|
25362
25438
|
load: () => {
|
|
25363
25439
|
logger.info("KYC iframe loaded");
|
|
@@ -25496,7 +25572,7 @@ function initialState(checkoutItem) {
|
|
|
25496
25572
|
function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
25497
25573
|
const [modalState, setModalState] = useState57(() => initialState(checkoutItem));
|
|
25498
25574
|
const { clearCheckoutQuoteMessages } = useCheckoutQuoteNotification();
|
|
25499
|
-
const onCloseWrapper =
|
|
25575
|
+
const onCloseWrapper = useCallback38(
|
|
25500
25576
|
(options) => {
|
|
25501
25577
|
const normalizedIsNewDeposit = !!options?.isNewDeposit;
|
|
25502
25578
|
checkoutItem.initSettings.onClose?.({
|
|
@@ -25516,7 +25592,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
25516
25592
|
const [stateHistory, setHistory] = useState57([]);
|
|
25517
25593
|
const prevStep = useRef22(null);
|
|
25518
25594
|
const hasHistoryEntry = stateHistory.length > 1;
|
|
25519
|
-
const onNext =
|
|
25595
|
+
const onNext = useCallback38(
|
|
25520
25596
|
(payload) => {
|
|
25521
25597
|
if (prevStep.current === modalState.step) {
|
|
25522
25598
|
return;
|
|
@@ -25549,7 +25625,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
25549
25625
|
},
|
|
25550
25626
|
[clearCheckoutQuoteMessages, modalState, animate, hasHistoryEntry]
|
|
25551
25627
|
);
|
|
25552
|
-
const onStepChange =
|
|
25628
|
+
const onStepChange = useCallback38(
|
|
25553
25629
|
(nextState) => {
|
|
25554
25630
|
if (prevStep.current === modalState.step) {
|
|
25555
25631
|
return;
|
|
@@ -25562,7 +25638,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
25562
25638
|
},
|
|
25563
25639
|
[modalState, animate]
|
|
25564
25640
|
);
|
|
25565
|
-
const onBack =
|
|
25641
|
+
const onBack = useCallback38(() => {
|
|
25566
25642
|
clearCheckoutQuoteMessages();
|
|
25567
25643
|
const backStepOverride = checkoutBackMap[modalState.step];
|
|
25568
25644
|
const prevState = [...stateHistory].reverse().find((s) => s.step === backStepOverride) ?? stateHistory[stateHistory.length - 1];
|
|
@@ -25757,7 +25833,7 @@ var FunConnectResultStep = ({
|
|
|
25757
25833
|
|
|
25758
25834
|
// src/components/FunConnectOptions/FunFarcasterConnectingStep.tsx
|
|
25759
25835
|
import { isMobile as isMobile7, isSafari as isSafari2, redirectInMobile } from "@funkit/utils";
|
|
25760
|
-
import React184, { useCallback as
|
|
25836
|
+
import React184, { useCallback as useCallback39, useEffect as useEffect47 } from "react";
|
|
25761
25837
|
|
|
25762
25838
|
// src/components/CopyAddress/OldCopyAddressButton.tsx
|
|
25763
25839
|
import React183 from "react";
|
|
@@ -25810,7 +25886,7 @@ function FunFarcasterConnectingStep({
|
|
|
25810
25886
|
}
|
|
25811
25887
|
}, [farcasterUri, mobile, safari]);
|
|
25812
25888
|
useSIWFarcasterListener(farcasterToken);
|
|
25813
|
-
const svgUrl =
|
|
25889
|
+
const svgUrl = useCallback39(async () => {
|
|
25814
25890
|
return (await import("./farcaster-MF6WINBA.js")).default;
|
|
25815
25891
|
}, []);
|
|
25816
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.";
|
|
@@ -25858,11 +25934,11 @@ function FunFarcasterConnectingStep({
|
|
|
25858
25934
|
|
|
25859
25935
|
// src/components/FunConnectOptions/FunWeb2ConnectingStep.tsx
|
|
25860
25936
|
import { isNotNullish as isNotNullish9 } from "@funkit/utils";
|
|
25861
|
-
import React187, { useCallback as
|
|
25937
|
+
import React187, { useCallback as useCallback41, useEffect as useEffect49, useState as useState60 } from "react";
|
|
25862
25938
|
|
|
25863
25939
|
// src/components/FunInput/FunTwoFaInput.tsx
|
|
25864
25940
|
import React185, {
|
|
25865
|
-
useCallback as
|
|
25941
|
+
useCallback as useCallback40,
|
|
25866
25942
|
useEffect as useEffect48,
|
|
25867
25943
|
useRef as useRef24,
|
|
25868
25944
|
useState as useState59
|
|
@@ -25889,12 +25965,12 @@ var FunTwoFaInput = ({
|
|
|
25889
25965
|
setFocusIndex(0);
|
|
25890
25966
|
}
|
|
25891
25967
|
}, [value]);
|
|
25892
|
-
const ensureFocus =
|
|
25968
|
+
const ensureFocus = useCallback40((nextIndex) => {
|
|
25893
25969
|
setTimeout(() => {
|
|
25894
25970
|
inputRefs.current[nextIndex]?.focus();
|
|
25895
25971
|
}, 10);
|
|
25896
25972
|
}, []);
|
|
25897
|
-
const handleBackspace =
|
|
25973
|
+
const handleBackspace = useCallback40(
|
|
25898
25974
|
(index) => {
|
|
25899
25975
|
if (index === maxInputLength - 1 && value.length === maxInputLength) {
|
|
25900
25976
|
onChange(value.slice(0, index));
|
|
@@ -25918,7 +25994,7 @@ var FunTwoFaInput = ({
|
|
|
25918
25994
|
},
|
|
25919
25995
|
[currentLength, initialInputLength, maxInputLength, onChange, value]
|
|
25920
25996
|
);
|
|
25921
|
-
const handleChange =
|
|
25997
|
+
const handleChange = useCallback40(
|
|
25922
25998
|
(changeEvent) => {
|
|
25923
25999
|
changeEvent.stopPropagation();
|
|
25924
26000
|
const nativeEvent = changeEvent.nativeEvent;
|
|
@@ -26087,7 +26163,7 @@ var FunWeb2ConnectingStep = ({
|
|
|
26087
26163
|
useEffect49(() => {
|
|
26088
26164
|
clearLoginError();
|
|
26089
26165
|
}, []);
|
|
26090
|
-
const handleOtpComplete =
|
|
26166
|
+
const handleOtpComplete = useCallback41(
|
|
26091
26167
|
async (finalOtpInput) => {
|
|
26092
26168
|
if (isNotNullish9(initialChainId)) {
|
|
26093
26169
|
await handleFunkitWeb2Login({
|
|
@@ -26234,7 +26310,7 @@ function FunConnectOptions({
|
|
|
26234
26310
|
const { loginConfig } = useFunkitConfig();
|
|
26235
26311
|
const prioritizedLoginType = loginConfig.prioritizedLogin;
|
|
26236
26312
|
const hasSecondarySignIn = prioritizedLoginType !== "none" && loginConfig.web2 && loginConfig.web3;
|
|
26237
|
-
const changeStep =
|
|
26313
|
+
const changeStep = useCallback42((newStep) => {
|
|
26238
26314
|
setStep(newStep);
|
|
26239
26315
|
if (isSignIn(newStep)) {
|
|
26240
26316
|
setSelectedWallet(void 0);
|
|
@@ -26242,7 +26318,7 @@ function FunConnectOptions({
|
|
|
26242
26318
|
}
|
|
26243
26319
|
}, []);
|
|
26244
26320
|
const { animation, navigateTo } = useAnimatedNavigation(changeStep);
|
|
26245
|
-
const handleBackToSignIn =
|
|
26321
|
+
const handleBackToSignIn = useCallback42(
|
|
26246
26322
|
(type) => {
|
|
26247
26323
|
const isPrimary = !hasSecondarySignIn || type === prioritizedLoginType;
|
|
26248
26324
|
navigateTo(
|
|
@@ -26253,7 +26329,7 @@ function FunConnectOptions({
|
|
|
26253
26329
|
[navigateTo, hasSecondarySignIn, prioritizedLoginType]
|
|
26254
26330
|
);
|
|
26255
26331
|
const walletConnectors = usePreparedWalletConnectors();
|
|
26256
|
-
const onRegenerateQrCode =
|
|
26332
|
+
const onRegenerateQrCode = useCallback42(
|
|
26257
26333
|
async (wallet) => {
|
|
26258
26334
|
const sWallet = walletConnectors.find((w) => wallet.id === w.id);
|
|
26259
26335
|
const uri = await sWallet?.getQrCodeUri?.();
|
|
@@ -26261,7 +26337,7 @@ function FunConnectOptions({
|
|
|
26261
26337
|
},
|
|
26262
26338
|
[walletConnectors]
|
|
26263
26339
|
);
|
|
26264
|
-
const connectToWallet =
|
|
26340
|
+
const connectToWallet = useCallback42(
|
|
26265
26341
|
async (wallet) => {
|
|
26266
26342
|
if (!wallet.ready) {
|
|
26267
26343
|
return;
|
|
@@ -26280,7 +26356,7 @@ function FunConnectOptions({
|
|
|
26280
26356
|
},
|
|
26281
26357
|
[changeStep, onRegenerateQrCode]
|
|
26282
26358
|
);
|
|
26283
|
-
const handleRetry =
|
|
26359
|
+
const handleRetry = useCallback42(() => {
|
|
26284
26360
|
if (!selectedWallet || selectedWallet.id === FUNKIT_CONNECT_WALLET_ID) {
|
|
26285
26361
|
handleBackToSignIn("web2");
|
|
26286
26362
|
} else {
|
|
@@ -26328,7 +26404,7 @@ function FunConnectOptions({
|
|
|
26328
26404
|
}
|
|
26329
26405
|
}
|
|
26330
26406
|
};
|
|
26331
|
-
const stepComponent =
|
|
26407
|
+
const stepComponent = useMemo37(() => {
|
|
26332
26408
|
switch (step) {
|
|
26333
26409
|
case 0 /* SIGNIN_PRIMARY */:
|
|
26334
26410
|
case 1 /* SIGNIN_SECONDARY */:
|
|
@@ -26437,7 +26513,7 @@ var FULL_SOCIAL_LOGIN_OPTIONS = [
|
|
|
26437
26513
|
function useEnabledSocialLogins() {
|
|
26438
26514
|
const funkitConfig = useFunkitConfig();
|
|
26439
26515
|
const { web2SocialLogins } = funkitConfig.loginConfig;
|
|
26440
|
-
const enabledSocialItems =
|
|
26516
|
+
const enabledSocialItems = useMemo38(() => {
|
|
26441
26517
|
return FULL_SOCIAL_LOGIN_OPTIONS.filter(
|
|
26442
26518
|
(oAuthItem) => !!web2SocialLogins[oAuthItem.funkitKey]
|
|
26443
26519
|
);
|
|
@@ -26466,7 +26542,7 @@ function FunSignInStep({
|
|
|
26466
26542
|
handleOauthRedirect,
|
|
26467
26543
|
handleGenerateFcUri
|
|
26468
26544
|
} = useFunkitWeb2Login();
|
|
26469
|
-
const isEmailInputValid =
|
|
26545
|
+
const isEmailInputValid = useMemo38(() => {
|
|
26470
26546
|
return validateEmailString(emailInput);
|
|
26471
26547
|
}, [emailInput]);
|
|
26472
26548
|
const [emailError, setEmailError] = useState62();
|
|
@@ -26539,7 +26615,7 @@ function FunSignInStep({
|
|
|
26539
26615
|
changeStep(3 /* PENDING_WALLET */);
|
|
26540
26616
|
}
|
|
26541
26617
|
};
|
|
26542
|
-
const handleEmailSubmit =
|
|
26618
|
+
const handleEmailSubmit = useCallback43(async () => {
|
|
26543
26619
|
if (!isEmailInputValid) {
|
|
26544
26620
|
return;
|
|
26545
26621
|
}
|
|
@@ -26878,7 +26954,7 @@ function PaymentMethodSummary({
|
|
|
26878
26954
|
|
|
26879
26955
|
// src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
|
|
26880
26956
|
import clsx21 from "clsx";
|
|
26881
|
-
import React201, { useEffect as useEffect51, useMemo as
|
|
26957
|
+
import React201, { useEffect as useEffect51, useMemo as useMemo39, useState as useState64 } from "react";
|
|
26882
26958
|
|
|
26883
26959
|
// src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
|
|
26884
26960
|
import React196 from "react";
|
|
@@ -26926,13 +27002,13 @@ var FunNotificationShowMoreButton = ({
|
|
|
26926
27002
|
import {
|
|
26927
27003
|
getCheckoutsByUserId as getCheckoutsByUserId2
|
|
26928
27004
|
} from "@funkit/api-base";
|
|
26929
|
-
import { FlagKey as
|
|
27005
|
+
import { FlagKey as FlagKey27 } from "@funkit/utils";
|
|
26930
27006
|
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
26931
27007
|
var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
|
|
26932
27008
|
var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
|
|
26933
27009
|
var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
|
|
26934
27010
|
function useCheckoutRefreshInterval() {
|
|
26935
|
-
const str = useFlag(
|
|
27011
|
+
const str = useFlag(FlagKey27.CheckoutNotificationsRefreshInterval);
|
|
26936
27012
|
return safeJSONParse(str) || { listRefresh: 50 * 1e3, itemRefresh: 5 * 1e3 };
|
|
26937
27013
|
}
|
|
26938
27014
|
var useRecentCheckouts = ({
|
|
@@ -27012,7 +27088,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f11m _1rsrm2f1f _1rsrm2f1c _1rsrm2fls
|
|
|
27012
27088
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
|
|
27013
27089
|
import clsx19 from "clsx";
|
|
27014
27090
|
import { motion as motion12, useAnimate as useAnimate3 } from "motion/react";
|
|
27015
|
-
import React197, { useCallback as
|
|
27091
|
+
import React197, { useCallback as useCallback44, useEffect as useEffect50, useRef as useRef25 } from "react";
|
|
27016
27092
|
|
|
27017
27093
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
|
|
27018
27094
|
var STATUS_SPINNER_BOTTOM_POSITION = -5;
|
|
@@ -27261,7 +27337,7 @@ var FunNotificationBannerIcon = ({
|
|
|
27261
27337
|
fallbackIconUrl = FALLBACK_ASSET
|
|
27262
27338
|
}) => {
|
|
27263
27339
|
const [animationScope, animate] = useAnimate3();
|
|
27264
|
-
const triggerAnimationProcessingToCompleted =
|
|
27340
|
+
const triggerAnimationProcessingToCompleted = useCallback44(async () => {
|
|
27265
27341
|
const completedIconPath = document.querySelector(
|
|
27266
27342
|
`.${generateAnimationPrefixClassName("icon-wrapper-completed")} path`
|
|
27267
27343
|
);
|
|
@@ -27368,7 +27444,7 @@ var FunNotificationBannerIcon = ({
|
|
|
27368
27444
|
)
|
|
27369
27445
|
]);
|
|
27370
27446
|
}, [animate]);
|
|
27371
|
-
const triggerAnimationDelayedToFailed =
|
|
27447
|
+
const triggerAnimationDelayedToFailed = useCallback44(async () => {
|
|
27372
27448
|
await Promise.all([
|
|
27373
27449
|
animate(
|
|
27374
27450
|
`.${generateAnimationPrefixClassName("icon-wrapper")}`,
|
|
@@ -27959,19 +28035,19 @@ var CheckoutNotifications = ({
|
|
|
27959
28035
|
}
|
|
27960
28036
|
setInitialDirectExecutions(directExecutions);
|
|
27961
28037
|
}, [initialDirectExecutions, directExecutions]);
|
|
27962
|
-
const displayedDirectExecutions =
|
|
28038
|
+
const displayedDirectExecutions = useMemo39(() => {
|
|
27963
28039
|
if (!directExecutions) {
|
|
27964
28040
|
return [];
|
|
27965
28041
|
}
|
|
27966
28042
|
return getUpdatedDirectExecutions(directExecutions, initialDirectExecutions).filter(({ txHash }) => !closedNotifications.includes(txHash)).slice(0, MAX_COUNT);
|
|
27967
28043
|
}, [initialDirectExecutions, directExecutions, closedNotifications]);
|
|
27968
|
-
const displayedCheckouts =
|
|
28044
|
+
const displayedCheckouts = useMemo39(() => {
|
|
27969
28045
|
if (!checkouts) {
|
|
27970
28046
|
return [];
|
|
27971
28047
|
}
|
|
27972
28048
|
return getUpdatedCheckouts(checkouts, initialCheckouts).filter(({ depositAddr }) => !closedNotifications.includes(depositAddr)).slice(0, MAX_COUNT);
|
|
27973
28049
|
}, [initialCheckouts, checkouts, closedNotifications]);
|
|
27974
|
-
const combinedNotifications =
|
|
28050
|
+
const combinedNotifications = useMemo39(() => {
|
|
27975
28051
|
return [
|
|
27976
28052
|
...displayedDirectExecutions.map(
|
|
27977
28053
|
(item) => ({ ...item, isDirectExecution: true })
|
|
@@ -27981,7 +28057,7 @@ var CheckoutNotifications = ({
|
|
|
27981
28057
|
)
|
|
27982
28058
|
].sort((a, b) => b.createdTimeMs - a.createdTimeMs);
|
|
27983
28059
|
}, [displayedDirectExecutions, displayedCheckouts]);
|
|
27984
|
-
const displayedNotifications =
|
|
28060
|
+
const displayedNotifications = useMemo39(() => {
|
|
27985
28061
|
return isExpanded ? combinedNotifications : combinedNotifications.slice(0, COLLAPSED_COUNT);
|
|
27986
28062
|
}, [isExpanded, combinedNotifications]);
|
|
27987
28063
|
const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
|
|
@@ -28258,7 +28334,7 @@ import React217 from "react";
|
|
|
28258
28334
|
// src/modals/ProfileDetails/ActivityTraversalContext.tsx
|
|
28259
28335
|
import React205, {
|
|
28260
28336
|
createContext as createContext15,
|
|
28261
|
-
useCallback as
|
|
28337
|
+
useCallback as useCallback45,
|
|
28262
28338
|
useContext as useContext15,
|
|
28263
28339
|
useState as useState66
|
|
28264
28340
|
} from "react";
|
|
@@ -28279,7 +28355,7 @@ var ActivityTraversalProvider = ({
|
|
|
28279
28355
|
const [returnViewPresets, setReturnViewPresets] = useState66(
|
|
28280
28356
|
{}
|
|
28281
28357
|
);
|
|
28282
|
-
const onSelectActivity =
|
|
28358
|
+
const onSelectActivity = useCallback45(
|
|
28283
28359
|
({
|
|
28284
28360
|
checkoutId,
|
|
28285
28361
|
initialPage,
|
|
@@ -28297,7 +28373,7 @@ var ActivityTraversalProvider = ({
|
|
|
28297
28373
|
},
|
|
28298
28374
|
[]
|
|
28299
28375
|
);
|
|
28300
|
-
const resetActivityTraversal =
|
|
28376
|
+
const resetActivityTraversal = useCallback45(() => {
|
|
28301
28377
|
setSelectedPurchaseId(void 0);
|
|
28302
28378
|
setSelectedPurchaseInitView(void 0);
|
|
28303
28379
|
setReturnView(void 0);
|
|
@@ -28317,7 +28393,7 @@ var useActivityTraversal = () => {
|
|
|
28317
28393
|
};
|
|
28318
28394
|
|
|
28319
28395
|
// src/modals/ProfileDetails/ProfileDetails.tsx
|
|
28320
|
-
import React216, { useCallback as
|
|
28396
|
+
import React216, { useCallback as useCallback47, useState as useState69 } from "react";
|
|
28321
28397
|
|
|
28322
28398
|
// src/hooks/useCheckoutModalTitle.ts
|
|
28323
28399
|
function useCheckoutModalTitle(depositAddress, defaultTitle) {
|
|
@@ -28331,7 +28407,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
|
|
|
28331
28407
|
import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
|
|
28332
28408
|
import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
|
|
28333
28409
|
import clsx23 from "clsx";
|
|
28334
|
-
import React214, { useEffect as useEffect52, useMemo as
|
|
28410
|
+
import React214, { useEffect as useEffect52, useMemo as useMemo40, useRef as useRef26, useState as useState68 } from "react";
|
|
28335
28411
|
import { Virtuoso } from "react-virtuoso";
|
|
28336
28412
|
import { useAccount as useAccount7 } from "wagmi";
|
|
28337
28413
|
|
|
@@ -28705,7 +28781,7 @@ var HomeTokenBalanceDisplayRowSkeleton = () => {
|
|
|
28705
28781
|
|
|
28706
28782
|
// src/modals/ProfileDetails/FunProfileViews/Home/ProfileTitleSection.tsx
|
|
28707
28783
|
import React213 from "react";
|
|
28708
|
-
import { useCallback as
|
|
28784
|
+
import { useCallback as useCallback46, useState as useState67 } from "react";
|
|
28709
28785
|
|
|
28710
28786
|
// src/components/Icons/LogoutIcon.tsx
|
|
28711
28787
|
import React211 from "react";
|
|
@@ -28772,7 +28848,7 @@ var ProfileTitleSection = ({
|
|
|
28772
28848
|
onClose
|
|
28773
28849
|
}) => {
|
|
28774
28850
|
const [isDisconnectExpanded, setIsDisconnectExpanded] = useState67(false);
|
|
28775
|
-
const collapseDisconnect =
|
|
28851
|
+
const collapseDisconnect = useCallback46(
|
|
28776
28852
|
() => setIsDisconnectExpanded(false),
|
|
28777
28853
|
[]
|
|
28778
28854
|
);
|
|
@@ -28878,7 +28954,7 @@ function Home({
|
|
|
28878
28954
|
const virtuosoDiv = virtuosoParentRef.current?.firstChild;
|
|
28879
28955
|
virtuosoDiv?.classList.add(animateVirtuosoInClass);
|
|
28880
28956
|
}, []);
|
|
28881
|
-
const AssetsList =
|
|
28957
|
+
const AssetsList = useMemo40(() => {
|
|
28882
28958
|
if (walletAssets && !Object.keys(walletAssets).length) {
|
|
28883
28959
|
return /* @__PURE__ */ React214.createElement(EmptyTabAlert, null);
|
|
28884
28960
|
}
|
|
@@ -28905,7 +28981,7 @@ function Home({
|
|
|
28905
28981
|
}
|
|
28906
28982
|
));
|
|
28907
28983
|
}, [walletAssets]);
|
|
28908
|
-
const CheckoutsList =
|
|
28984
|
+
const CheckoutsList = useMemo40(() => {
|
|
28909
28985
|
if (checkoutHistoryList.length === 0 && isCheckoutHistoryInited) {
|
|
28910
28986
|
return /* @__PURE__ */ React214.createElement(EmptyTabAlert, null);
|
|
28911
28987
|
}
|
|
@@ -29128,13 +29204,13 @@ function ProfileDetails({ onClose, defaultTab }) {
|
|
|
29128
29204
|
const [singleActivityPage, setSingleActivityPage] = useState69(
|
|
29129
29205
|
selectedPurchaseInitView ?? "detail" /* DETAIL */
|
|
29130
29206
|
);
|
|
29131
|
-
const resetView =
|
|
29207
|
+
const resetView = useCallback47(() => {
|
|
29132
29208
|
setView(returnView ?? 0 /* HOME */);
|
|
29133
29209
|
setSelectedHomeTab("checkouts" /* CHECKOUTS */);
|
|
29134
29210
|
resetActivityTraversal();
|
|
29135
29211
|
}, [resetActivityTraversal, returnView]);
|
|
29136
29212
|
const { animation, animate } = useAnimatedNavigation(void 0);
|
|
29137
|
-
const onSelectActivityWrapper =
|
|
29213
|
+
const onSelectActivityWrapper = useCallback47(
|
|
29138
29214
|
(activity) => {
|
|
29139
29215
|
onSelectActivity({
|
|
29140
29216
|
...activity,
|
|
@@ -29171,7 +29247,7 @@ function ProfileDetails({ onClose, defaultTab }) {
|
|
|
29171
29247
|
const isHelpPage = singleActivityPage === "help" /* HELP */;
|
|
29172
29248
|
const isCheckoutDetailView = isSingleActivityView && singleActivityPage === "detail" /* DETAIL */;
|
|
29173
29249
|
const withDivider = isSingleActivityView ? isHelpPage ? "scroll" : "always" : void 0;
|
|
29174
|
-
const handleHelp =
|
|
29250
|
+
const handleHelp = useCallback47(() => {
|
|
29175
29251
|
animate(() => setSingleActivityPage("help" /* HELP */));
|
|
29176
29252
|
}, [animate]);
|
|
29177
29253
|
const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
|
|
@@ -29246,7 +29322,7 @@ function AccountModal({ onClose, open, defaultTab }) {
|
|
|
29246
29322
|
// src/modals/ChainModal/ChainModal.tsx
|
|
29247
29323
|
import { isMobile as isMobile13 } from "@funkit/utils";
|
|
29248
29324
|
import React222 from "react";
|
|
29249
|
-
import { useAccount as useAccount8, useConfig as
|
|
29325
|
+
import { useAccount as useAccount8, useConfig as useConfig5 } from "wagmi";
|
|
29250
29326
|
|
|
29251
29327
|
// src/components/Icons/DisconnectSqIcon.tsx
|
|
29252
29328
|
import React218 from "react";
|
|
@@ -29459,7 +29535,7 @@ var MobileScrollClassName = "_1d2b1vf1";
|
|
|
29459
29535
|
// src/modals/ChainModal/ChainModal.tsx
|
|
29460
29536
|
function ChainModal({ onClose, open }) {
|
|
29461
29537
|
const { chainId } = useAccount8();
|
|
29462
|
-
const { chains } =
|
|
29538
|
+
const { chains } = useConfig5();
|
|
29463
29539
|
const { switchChain, pendingChainId } = useFunkitSwitchChains({
|
|
29464
29540
|
onSettled: () => onClose()
|
|
29465
29541
|
});
|
|
@@ -29578,7 +29654,7 @@ function ChainModal({ onClose, open }) {
|
|
|
29578
29654
|
// src/modals/CheckoutModal/FunCheckoutModal.tsx
|
|
29579
29655
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST3 } from "@funkit/chains";
|
|
29580
29656
|
import { LogLevel, initializeRelayClient } from "@funkit/fun-relay";
|
|
29581
|
-
import { FlagKey as
|
|
29657
|
+
import { FlagKey as FlagKey28 } from "@funkit/utils";
|
|
29582
29658
|
import React224, { useRef as useRef27 } from "react";
|
|
29583
29659
|
|
|
29584
29660
|
// src/components/FunCheckoutBlocked/FunCheckoutBlocked.tsx
|
|
@@ -29665,7 +29741,7 @@ function FunCheckoutModalInner({
|
|
|
29665
29741
|
const isBlocked = isUserGeoblocked || modalState.isBlocked;
|
|
29666
29742
|
const hasBack = hasHistoryEntry && !disableBack;
|
|
29667
29743
|
const checkoutConfig = checkoutItem.initSettings.config;
|
|
29668
|
-
const helpButtonUrl = useFlag(
|
|
29744
|
+
const helpButtonUrl = useFlag(FlagKey28.HelpTutorialUrl);
|
|
29669
29745
|
const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
|
|
29670
29746
|
depositAddress: checkoutItem.depositAddress ?? void 0,
|
|
29671
29747
|
isActiveCheckout: true,
|
|
@@ -29781,16 +29857,16 @@ function ConnectModal({
|
|
|
29781
29857
|
function useModalStateValue() {
|
|
29782
29858
|
const [isModalOpen, setModalOpen] = useState70(false);
|
|
29783
29859
|
return {
|
|
29784
|
-
closeModal:
|
|
29860
|
+
closeModal: useCallback48(() => setModalOpen(false), []),
|
|
29785
29861
|
isModalOpen,
|
|
29786
|
-
openModal:
|
|
29862
|
+
openModal: useCallback48(() => setModalOpen(true), [])
|
|
29787
29863
|
};
|
|
29788
29864
|
}
|
|
29789
29865
|
function useModalStateValueWithProp() {
|
|
29790
29866
|
const [isModalOpen, setModalOpen] = useState70(false);
|
|
29791
29867
|
const [prop, setProp] = useState70(null);
|
|
29792
29868
|
return {
|
|
29793
|
-
closeModal:
|
|
29869
|
+
closeModal: useCallback48(() => {
|
|
29794
29870
|
setTimeout(
|
|
29795
29871
|
() => {
|
|
29796
29872
|
setProp(null);
|
|
@@ -29801,7 +29877,7 @@ function useModalStateValueWithProp() {
|
|
|
29801
29877
|
}, []),
|
|
29802
29878
|
isModalOpen,
|
|
29803
29879
|
prop,
|
|
29804
|
-
openModal:
|
|
29880
|
+
openModal: useCallback48((prop2) => {
|
|
29805
29881
|
if (prop2 != null) {
|
|
29806
29882
|
setProp(prop2);
|
|
29807
29883
|
}
|
|
@@ -29850,7 +29926,7 @@ function ModalProvider({ children }) {
|
|
|
29850
29926
|
} = useModalStateValueWithProp();
|
|
29851
29927
|
const connectionStatus = useConnectionStatus();
|
|
29852
29928
|
const { chainId } = useAccount10();
|
|
29853
|
-
const { chains } =
|
|
29929
|
+
const { chains } = useConfig6();
|
|
29854
29930
|
const isCurrentChainSupported = chains.some((chain) => chain.id === chainId);
|
|
29855
29931
|
function closeModals(keepConnectModalOpen = false) {
|
|
29856
29932
|
if (!keepConnectModalOpen) {
|
|
@@ -29872,7 +29948,7 @@ function ModalProvider({ children }) {
|
|
|
29872
29948
|
return /* @__PURE__ */ React226.createElement(
|
|
29873
29949
|
ModalContext.Provider,
|
|
29874
29950
|
{
|
|
29875
|
-
value:
|
|
29951
|
+
value: useMemo41(
|
|
29876
29952
|
() => ({
|
|
29877
29953
|
accountModalOpen,
|
|
29878
29954
|
accountModalTab,
|
|
@@ -30277,7 +30353,7 @@ var FunkitWeb2Provider = ({
|
|
|
30277
30353
|
children
|
|
30278
30354
|
}) => {
|
|
30279
30355
|
const { connectAsync } = useConnect2();
|
|
30280
|
-
const { chains } =
|
|
30356
|
+
const { chains } = useConfig7();
|
|
30281
30357
|
const { connectors, disconnectAsync } = useDisconnect2();
|
|
30282
30358
|
const [privy, setPrivy] = useState71(null);
|
|
30283
30359
|
const [privyIframeUrl, setPrivyIframeUrl] = useState71();
|
|
@@ -30288,7 +30364,7 @@ var FunkitWeb2Provider = ({
|
|
|
30288
30364
|
const [isLoggingIn, setIsLoggingIn] = useState71(false);
|
|
30289
30365
|
const [loginErrorMessage, setLoginErrorMessage] = useState71("");
|
|
30290
30366
|
const [loggedInUser, setLoggedInUser] = useState71(null);
|
|
30291
|
-
const setLoginMethodAndCache =
|
|
30367
|
+
const setLoginMethodAndCache = useCallback49(
|
|
30292
30368
|
(method) => {
|
|
30293
30369
|
try {
|
|
30294
30370
|
setLoginMethod(method);
|
|
@@ -30312,7 +30388,7 @@ var FunkitWeb2Provider = ({
|
|
|
30312
30388
|
setPrivyIframeUrl(newPrivy.embeddedWallet.getURL());
|
|
30313
30389
|
setPrivy(newPrivy);
|
|
30314
30390
|
}, [chains]);
|
|
30315
|
-
const handleIframeMessage =
|
|
30391
|
+
const handleIframeMessage = useCallback49(
|
|
30316
30392
|
(e) => {
|
|
30317
30393
|
if (e.origin === PRIVY_AUTH_URL && privy) {
|
|
30318
30394
|
const iframeHandler = privy.embeddedWallet.getMessageHandler();
|
|
@@ -30321,7 +30397,7 @@ var FunkitWeb2Provider = ({
|
|
|
30321
30397
|
},
|
|
30322
30398
|
[privy]
|
|
30323
30399
|
);
|
|
30324
|
-
const handleFunkitWeb2Logout =
|
|
30400
|
+
const handleFunkitWeb2Logout = useCallback49(async () => {
|
|
30325
30401
|
if (privy) {
|
|
30326
30402
|
logger.log("handleFunkitWeb2Logout_disconnecting_connectors", {
|
|
30327
30403
|
numConnectors: connectors.length
|
|
@@ -30334,7 +30410,7 @@ var FunkitWeb2Provider = ({
|
|
|
30334
30410
|
setLoginMethodAndCache(null);
|
|
30335
30411
|
}
|
|
30336
30412
|
}, [connectors, disconnectAsync, privy, setLoginMethodAndCache]);
|
|
30337
|
-
const handleFreshPrivyLogin =
|
|
30413
|
+
const handleFreshPrivyLogin = useCallback49(
|
|
30338
30414
|
async ({
|
|
30339
30415
|
firstLoginCode,
|
|
30340
30416
|
secondLoginCode,
|
|
@@ -30386,7 +30462,7 @@ var FunkitWeb2Provider = ({
|
|
|
30386
30462
|
},
|
|
30387
30463
|
[handleFunkitWeb2Logout, privy]
|
|
30388
30464
|
);
|
|
30389
|
-
const getPrivyUserEmbeddedWallet =
|
|
30465
|
+
const getPrivyUserEmbeddedWallet = useCallback49(
|
|
30390
30466
|
async (inputPrivyUser) => {
|
|
30391
30467
|
try {
|
|
30392
30468
|
if (!privy || !inputPrivyUser) {
|
|
@@ -30405,7 +30481,7 @@ var FunkitWeb2Provider = ({
|
|
|
30405
30481
|
},
|
|
30406
30482
|
[privy]
|
|
30407
30483
|
);
|
|
30408
|
-
const getExistingPrivySession =
|
|
30484
|
+
const getExistingPrivySession = useCallback49(async () => {
|
|
30409
30485
|
try {
|
|
30410
30486
|
if (!privy) {
|
|
30411
30487
|
throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
|
|
@@ -30416,7 +30492,7 @@ var FunkitWeb2Provider = ({
|
|
|
30416
30492
|
return null;
|
|
30417
30493
|
}
|
|
30418
30494
|
}, [privy]);
|
|
30419
|
-
const handleFunkitWeb2Login =
|
|
30495
|
+
const handleFunkitWeb2Login = useCallback49(
|
|
30420
30496
|
async ({
|
|
30421
30497
|
chainId,
|
|
30422
30498
|
firstLoginCode,
|
|
@@ -30493,9 +30569,9 @@ var FunkitWeb2Provider = ({
|
|
|
30493
30569
|
wallets
|
|
30494
30570
|
]
|
|
30495
30571
|
);
|
|
30496
|
-
const clearLoginError =
|
|
30572
|
+
const clearLoginError = useCallback49(() => setLoginErrorMessage(""), []);
|
|
30497
30573
|
const initChainId = useInitialChainId();
|
|
30498
|
-
const handleAutoLoginFlows =
|
|
30574
|
+
const handleAutoLoginFlows = useCallback49(async () => {
|
|
30499
30575
|
if (isNotNullish11(loginMethod) && isNotNullish11(initChainId)) {
|
|
30500
30576
|
const queryParams = new URLSearchParams(window.location.search);
|
|
30501
30577
|
const oauthCode = queryParams.get(PRIVY_OAUTH_CODE_URL_PARAM);
|
|
@@ -30539,7 +30615,7 @@ var FunkitWeb2Provider = ({
|
|
|
30539
30615
|
initChainId
|
|
30540
30616
|
// Do not include `handleAutoLoginFlows`,
|
|
30541
30617
|
]);
|
|
30542
|
-
const handleOauthRedirect =
|
|
30618
|
+
const handleOauthRedirect = useCallback49(
|
|
30543
30619
|
async (authProvider) => {
|
|
30544
30620
|
if (!privy) {
|
|
30545
30621
|
throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
|
|
@@ -30565,7 +30641,7 @@ var FunkitWeb2Provider = ({
|
|
|
30565
30641
|
[privy, setLoginMethodAndCache]
|
|
30566
30642
|
);
|
|
30567
30643
|
const [isSendingOtpEmail, setIsSendingOtpEmail] = useState71(false);
|
|
30568
|
-
const handleSendOtpEmail =
|
|
30644
|
+
const handleSendOtpEmail = useCallback49(
|
|
30569
30645
|
async (emailAddress) => {
|
|
30570
30646
|
try {
|
|
30571
30647
|
if (!privy) {
|
|
@@ -30593,7 +30669,7 @@ var FunkitWeb2Provider = ({
|
|
|
30593
30669
|
[privy, setLoginMethodAndCache]
|
|
30594
30670
|
);
|
|
30595
30671
|
const [isGeneratingFcUri, setIsGeneratingFcUri] = useState71(false);
|
|
30596
|
-
const handleGenerateFcUri =
|
|
30672
|
+
const handleGenerateFcUri = useCallback49(async () => {
|
|
30597
30673
|
try {
|
|
30598
30674
|
if (!privy) {
|
|
30599
30675
|
throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
|
|
@@ -30620,7 +30696,7 @@ var FunkitWeb2Provider = ({
|
|
|
30620
30696
|
setIsGeneratingFcUri(false);
|
|
30621
30697
|
}
|
|
30622
30698
|
}, [privy]);
|
|
30623
|
-
const getFcConnectionStatus =
|
|
30699
|
+
const getFcConnectionStatus = useCallback49(
|
|
30624
30700
|
async (channelToken) => {
|
|
30625
30701
|
try {
|
|
30626
30702
|
if (!privy) {
|
|
@@ -30643,7 +30719,7 @@ var FunkitWeb2Provider = ({
|
|
|
30643
30719
|
},
|
|
30644
30720
|
[privy]
|
|
30645
30721
|
);
|
|
30646
|
-
const web2UserInfo =
|
|
30722
|
+
const web2UserInfo = useMemo42(() => {
|
|
30647
30723
|
if (!loggedInUser || !loggedInUser?.linked_accounts || !loggedInUser?.linked_accounts?.length) {
|
|
30648
30724
|
return PLACEHOLDER_FUNKIT_USER_INFO;
|
|
30649
30725
|
}
|
|
@@ -30764,10 +30840,10 @@ var useShowBalance = () => useContext18(ShowBalanceContext);
|
|
|
30764
30840
|
// src/components/ConnectButton/ConnectButtonRenderer.tsx
|
|
30765
30841
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify15, isMobile as isMobile14, noop as noop9 } from "@funkit/utils";
|
|
30766
30842
|
import React229 from "react";
|
|
30767
|
-
import { useAccount as useAccount12, useBalance, useConfig as
|
|
30843
|
+
import { useAccount as useAccount12, useBalance, useConfig as useConfig8 } from "wagmi";
|
|
30768
30844
|
|
|
30769
30845
|
// src/hooks/useIsMounted.ts
|
|
30770
|
-
import { useCallback as
|
|
30846
|
+
import { useCallback as useCallback50, useEffect as useEffect55, useState as useState73 } from "react";
|
|
30771
30847
|
function useIsMounted() {
|
|
30772
30848
|
const [isMounted, setIsMounted] = useState73(false);
|
|
30773
30849
|
useEffect55(() => {
|
|
@@ -30776,7 +30852,7 @@ function useIsMounted() {
|
|
|
30776
30852
|
setIsMounted(false);
|
|
30777
30853
|
};
|
|
30778
30854
|
}, []);
|
|
30779
|
-
return
|
|
30855
|
+
return useCallback50(() => isMounted, [isMounted]);
|
|
30780
30856
|
}
|
|
30781
30857
|
|
|
30782
30858
|
// src/components/ConnectButton/abbreviateETHBalance.ts
|
|
@@ -30822,7 +30898,7 @@ function ConnectButtonRenderer({
|
|
|
30822
30898
|
const { totalWalletAssetsUsd } = useWalletAssets({
|
|
30823
30899
|
enableRefetchInterval: false
|
|
30824
30900
|
});
|
|
30825
|
-
const { chains: wagmiChains } =
|
|
30901
|
+
const { chains: wagmiChains } = useConfig8();
|
|
30826
30902
|
const isCurrentChainSupported = wagmiChains.some(
|
|
30827
30903
|
(chain) => chain.id === chainId
|
|
30828
30904
|
);
|
|
@@ -31585,18 +31661,18 @@ function cssStringFromTheme(theme, options = {}) {
|
|
|
31585
31661
|
}
|
|
31586
31662
|
|
|
31587
31663
|
// src/hooks/useIsFunkitCheckoutActivated.ts
|
|
31588
|
-
import { FlagKey as
|
|
31664
|
+
import { FlagKey as FlagKey29 } from "@funkit/utils";
|
|
31589
31665
|
var useIsFunkitCheckoutActivated = () => {
|
|
31590
|
-
const isCheckoutActivated = useFlag(
|
|
31666
|
+
const isCheckoutActivated = useFlag(FlagKey29.IsCheckoutActivated);
|
|
31591
31667
|
return {
|
|
31592
31668
|
isActivated: isCheckoutActivated
|
|
31593
31669
|
};
|
|
31594
31670
|
};
|
|
31595
31671
|
|
|
31596
31672
|
// src/hooks/useFunkitMaxCheckoutUsdInfo.ts
|
|
31597
|
-
import { FlagKey as
|
|
31673
|
+
import { FlagKey as FlagKey30, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
|
|
31598
31674
|
var useFunkitMaxCheckoutUsdInfo = () => {
|
|
31599
|
-
const maxCheckoutUsd = Number(useFlag(
|
|
31675
|
+
const maxCheckoutUsd = Number(useFlag(FlagKey30.MaxCheckoutUsd));
|
|
31600
31676
|
const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify16(maxCheckoutUsd, {
|
|
31601
31677
|
decimalPrecisionForSuffix: 0,
|
|
31602
31678
|
minimumSignificantDigits: 0,
|
|
@@ -31629,16 +31705,16 @@ import React233, { createContext as createContext19, useContext as useContext19
|
|
|
31629
31705
|
import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
|
|
31630
31706
|
|
|
31631
31707
|
// src/providers/useFingerprint.ts
|
|
31632
|
-
import { useCallback as
|
|
31708
|
+
import { useCallback as useCallback51, useEffect as useEffect57 } from "react";
|
|
31633
31709
|
var storageKey5 = "funkit-connect-version";
|
|
31634
31710
|
function setFunkitConnectVersion({ version }) {
|
|
31635
31711
|
localStorage.setItem(storageKey5, version);
|
|
31636
31712
|
}
|
|
31637
31713
|
function getCurrentSdkVersion() {
|
|
31638
|
-
return "6.14.
|
|
31714
|
+
return "6.14.3";
|
|
31639
31715
|
}
|
|
31640
31716
|
function useFingerprint() {
|
|
31641
|
-
const fingerprint =
|
|
31717
|
+
const fingerprint = useCallback51(() => {
|
|
31642
31718
|
setFunkitConnectVersion({ version: getCurrentSdkVersion() });
|
|
31643
31719
|
}, []);
|
|
31644
31720
|
useEffect57(() => {
|
|
@@ -31648,11 +31724,11 @@ function useFingerprint() {
|
|
|
31648
31724
|
|
|
31649
31725
|
// src/providers/usePreloadImages.ts
|
|
31650
31726
|
import { isNotNullish as isNotNullish12 } from "@funkit/utils";
|
|
31651
|
-
import { useCallback as
|
|
31727
|
+
import { useCallback as useCallback52, useEffect as useEffect58 } from "react";
|
|
31652
31728
|
function usePreloadImages() {
|
|
31653
31729
|
const funkitConnectChains = useFunkitConnectChains();
|
|
31654
31730
|
const walletConnectors = useWalletConnectors();
|
|
31655
|
-
const preloadImages =
|
|
31731
|
+
const preloadImages = useCallback52(() => {
|
|
31656
31732
|
loadImages(
|
|
31657
31733
|
...walletConnectors.map((wallet) => wallet.iconUrl),
|
|
31658
31734
|
...funkitConnectChains.map((chain) => chain.iconUrl).filter(isNotNullish12)
|