@funkit/connect 7.0.2 → 7.0.3-next.1
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 +35 -0
- package/dist/__generated__/default_configs.d.ts +181 -3
- package/dist/{chunk-DN7UTQK5.js → chunk-5GV4UXWB.js} +3 -3
- package/dist/{chunk-OVMNR35O.js → chunk-IVO7KGHT.js} +3 -3
- package/dist/components/FunCheckoutHistory/useCustomStatusAnimationAboveTopbar.d.ts +3 -1
- package/dist/components/TransactionStatus/TransactionStatus.d.ts +2 -2
- package/dist/consts/customers.d.ts +3 -0
- package/dist/domains/asset.d.ts +2 -1
- package/dist/hooks/statsig/useDynamicConfig.d.ts +1 -1
- package/dist/hooks/track/useTrack.d.ts +3 -1
- package/dist/hooks/useCheckoutTransferInit.d.ts +5 -2
- package/dist/hooks/useDynamicRoutes.d.ts +4 -0
- package/dist/hooks/useUDAParams.d.ts +9 -0
- package/dist/index.js +1022 -540
- package/dist/providers/FunkitCheckoutContext/index.d.ts +6 -0
- package/dist/providers/FunkitCheckoutContext/types.d.ts +4 -0
- package/dist/themes/darkTheme.js +1 -1
- package/dist/themes/lightTheme.js +1 -1
- package/dist/utils/customer.d.ts +196 -0
- package/dist/utils/flags/config.d.ts +15 -41
- package/dist/utils/funLogger.d.ts +3 -1
- package/dist/utils/lighter.d.ts +4 -0
- package/dist/wallets/walletConnectors/index.js +7 -7
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
darkTheme
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IVO7KGHT.js";
|
|
5
5
|
import {
|
|
6
6
|
lightTheme
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5GV4UXWB.js";
|
|
8
8
|
import {
|
|
9
9
|
systemFontStack
|
|
10
10
|
} from "./chunk-RJAD5CZH.js";
|
|
@@ -844,7 +844,7 @@ function useMainnetEnsName(address) {
|
|
|
844
844
|
import {
|
|
845
845
|
getAllWalletTokens
|
|
846
846
|
} from "@funkit/api-base";
|
|
847
|
-
import { keepPreviousData as keepPreviousData2, useQuery as
|
|
847
|
+
import { keepPreviousData as keepPreviousData2, useQuery as useQuery22 } from "@tanstack/react-query";
|
|
848
848
|
import { arbitrum as arbitrum6, polygon as polygon7 } from "viem/chains";
|
|
849
849
|
import { useAccount as useAccount11 } from "wagmi";
|
|
850
850
|
|
|
@@ -859,7 +859,7 @@ import {
|
|
|
859
859
|
isTokenEquivalent as isTokenEquivalent7,
|
|
860
860
|
round as round4
|
|
861
861
|
} from "@funkit/utils";
|
|
862
|
-
import { arbitrum as arbitrum5, base as base7, mainnet as
|
|
862
|
+
import { arbitrum as arbitrum5, base as base7, mainnet as mainnet13, optimism, polygon as polygon6 } from "viem/chains";
|
|
863
863
|
|
|
864
864
|
// src/modals/CheckoutModal/InputAmount/utils.ts
|
|
865
865
|
import { formatCurrencyAndStringify } from "@funkit/utils";
|
|
@@ -1065,7 +1065,7 @@ import {
|
|
|
1065
1065
|
initializeCheckout as postApiInitializeCheckout
|
|
1066
1066
|
} from "@funkit/api-base";
|
|
1067
1067
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO12 } from "@funkit/chains";
|
|
1068
|
-
import { FlagKey as
|
|
1068
|
+
import { FlagKey as FlagKey21, isNotNullish as isNotNullish8 } from "@funkit/utils";
|
|
1069
1069
|
import React234, {
|
|
1070
1070
|
createContext as createContext17,
|
|
1071
1071
|
useCallback as useCallback49,
|
|
@@ -1377,7 +1377,7 @@ function setFunkitConnectVersion({ version }) {
|
|
|
1377
1377
|
localStorage.setItem(storageKey, version);
|
|
1378
1378
|
}
|
|
1379
1379
|
function getCurrentSdkVersion() {
|
|
1380
|
-
return "7.0.
|
|
1380
|
+
return "7.0.3-next.1";
|
|
1381
1381
|
}
|
|
1382
1382
|
function useFingerprint() {
|
|
1383
1383
|
const fingerprint = useCallback3(() => {
|
|
@@ -1410,6 +1410,7 @@ var FunLogger = class {
|
|
|
1410
1410
|
this.userName = null;
|
|
1411
1411
|
this.userLoginType = null;
|
|
1412
1412
|
this.sdkVersion = null;
|
|
1413
|
+
this.l2Address = null;
|
|
1413
1414
|
}
|
|
1414
1415
|
getFunLogEnv() {
|
|
1415
1416
|
if (!this.apiKey || FUN_DEV_API_KEYS.includes(this.apiKey)) {
|
|
@@ -1535,11 +1536,15 @@ var FunLogger = class {
|
|
|
1535
1536
|
getUserLoginType() {
|
|
1536
1537
|
return this.userLoginType;
|
|
1537
1538
|
}
|
|
1538
|
-
|
|
1539
|
+
getL2Address() {
|
|
1540
|
+
return this.l2Address;
|
|
1541
|
+
}
|
|
1542
|
+
setUserInfo(userId, userAddress, userName, userLoginType, l2Address) {
|
|
1539
1543
|
this.userId = userId;
|
|
1540
1544
|
this.userAddress = userAddress;
|
|
1541
1545
|
this.userName = userName;
|
|
1542
1546
|
this.userLoginType = userLoginType;
|
|
1547
|
+
this.l2Address = l2Address ?? null;
|
|
1543
1548
|
}
|
|
1544
1549
|
};
|
|
1545
1550
|
datadogLogs.init({
|
|
@@ -1599,7 +1604,8 @@ var useTrack = () => {
|
|
|
1599
1604
|
userAgent,
|
|
1600
1605
|
appVersion,
|
|
1601
1606
|
customIDs: {
|
|
1602
|
-
apiKey
|
|
1607
|
+
apiKey,
|
|
1608
|
+
l2Address: userInfo.l2Address
|
|
1603
1609
|
},
|
|
1604
1610
|
custom: {
|
|
1605
1611
|
name: userInfo.name,
|
|
@@ -1764,6 +1770,7 @@ import React17, {
|
|
|
1764
1770
|
useContext as useContext6,
|
|
1765
1771
|
useEffect as useEffect6,
|
|
1766
1772
|
useMemo as useMemo6,
|
|
1773
|
+
useRef,
|
|
1767
1774
|
useState as useState7
|
|
1768
1775
|
} from "react";
|
|
1769
1776
|
import {
|
|
@@ -1773,6 +1780,116 @@ import {
|
|
|
1773
1780
|
useSwitchChain
|
|
1774
1781
|
} from "wagmi";
|
|
1775
1782
|
|
|
1783
|
+
// src/utils/customer.ts
|
|
1784
|
+
import { useQuery } from "@tanstack/react-query";
|
|
1785
|
+
|
|
1786
|
+
// src/consts/customers.ts
|
|
1787
|
+
import {
|
|
1788
|
+
AVANTIS_API_KEY,
|
|
1789
|
+
BANKR_API_KEY,
|
|
1790
|
+
BASED_API_KEY,
|
|
1791
|
+
BSX_API_KEY,
|
|
1792
|
+
ETHEREAL_API_KEY as ETHEREAL_API_KEY2,
|
|
1793
|
+
HYENA_API_KEY,
|
|
1794
|
+
HYPERBEAT_API_KEY,
|
|
1795
|
+
HYPERDASH_API_KEY,
|
|
1796
|
+
KATANA_API_KEY,
|
|
1797
|
+
LIGHTERXYZ_API_KEY,
|
|
1798
|
+
MONAD_API_KEY,
|
|
1799
|
+
MONKEY_TILT_API_KEY,
|
|
1800
|
+
OSTIUM_API_KEY,
|
|
1801
|
+
PERPL_API_KEY,
|
|
1802
|
+
POLYMARKET_API_KEY
|
|
1803
|
+
} from "@funkit/api-base";
|
|
1804
|
+
import { mainnet as mainnet4 } from "viem/chains";
|
|
1805
|
+
function isPolymarketCustomer(apiKey) {
|
|
1806
|
+
return apiKey === POLYMARKET_API_KEY;
|
|
1807
|
+
}
|
|
1808
|
+
function isOstiumCustomer(apiKey) {
|
|
1809
|
+
return apiKey === OSTIUM_API_KEY;
|
|
1810
|
+
}
|
|
1811
|
+
function isBankrCustomer(apiKey) {
|
|
1812
|
+
return apiKey === BANKR_API_KEY;
|
|
1813
|
+
}
|
|
1814
|
+
function isEtherealCustomer(apiKey) {
|
|
1815
|
+
return apiKey === ETHEREAL_API_KEY2;
|
|
1816
|
+
}
|
|
1817
|
+
function isKatanaCustomer(apiKey) {
|
|
1818
|
+
return apiKey === KATANA_API_KEY;
|
|
1819
|
+
}
|
|
1820
|
+
function isMonadCustomer(apiKey) {
|
|
1821
|
+
return apiKey === MONAD_API_KEY;
|
|
1822
|
+
}
|
|
1823
|
+
function isBasedCustomer(apiKey) {
|
|
1824
|
+
return apiKey === BASED_API_KEY;
|
|
1825
|
+
}
|
|
1826
|
+
function isHyenaCustomer(apiKey) {
|
|
1827
|
+
return apiKey === HYENA_API_KEY;
|
|
1828
|
+
}
|
|
1829
|
+
function isLighterxyzCustomer(apiKey) {
|
|
1830
|
+
return apiKey === LIGHTERXYZ_API_KEY;
|
|
1831
|
+
}
|
|
1832
|
+
function isLighterEthSpot(apiKey, checkoutConfig) {
|
|
1833
|
+
return checkoutConfig && isLighterxyzCustomer(apiKey) && ["LIGHTER_ETH_SPOT_NEW_USER", "LIGHTER_ETH_SPOT"].includes(
|
|
1834
|
+
checkoutConfig.dynamicRoutingId || ""
|
|
1835
|
+
);
|
|
1836
|
+
}
|
|
1837
|
+
function isLighterNativeFlow(apiKey, checkoutConfig) {
|
|
1838
|
+
return !!checkoutConfig && isLighterxyzCustomer(apiKey) && checkoutConfig.targetChain === mainnet4.id.toString();
|
|
1839
|
+
}
|
|
1840
|
+
|
|
1841
|
+
// src/utils/customer.ts
|
|
1842
|
+
function isKatanaEarnFlow({
|
|
1843
|
+
apiKey,
|
|
1844
|
+
checkoutConfig
|
|
1845
|
+
}) {
|
|
1846
|
+
return isKatanaCustomer(apiKey) && !!checkoutConfig && isCheckoutPostActionRequired(checkoutConfig);
|
|
1847
|
+
}
|
|
1848
|
+
async function getLighterAccountsByL1Address(address) {
|
|
1849
|
+
const response = await fetch(
|
|
1850
|
+
`https://mainnet.zklighter.elliot.ai/api/v1/accountsByL1Address?l1_address=${address}`
|
|
1851
|
+
);
|
|
1852
|
+
if (!response.ok) {
|
|
1853
|
+
throw new Error(`Failed to fetch lighter accounts: ${response.statusText}`);
|
|
1854
|
+
}
|
|
1855
|
+
const data = await response.json();
|
|
1856
|
+
return data;
|
|
1857
|
+
}
|
|
1858
|
+
function useLighterAccounts({
|
|
1859
|
+
address,
|
|
1860
|
+
isEnabled = true
|
|
1861
|
+
}) {
|
|
1862
|
+
const enabled = !!address && address !== "0x" && isEnabled;
|
|
1863
|
+
const query = useQuery({
|
|
1864
|
+
queryKey: ["lighterAccounts", address],
|
|
1865
|
+
queryFn: () => getLighterAccountsByL1Address(address),
|
|
1866
|
+
enabled,
|
|
1867
|
+
staleTime: Number.POSITIVE_INFINITY,
|
|
1868
|
+
gcTime: Number.POSITIVE_INFINITY,
|
|
1869
|
+
retry: false,
|
|
1870
|
+
// allows us to always refetch the data but return the previous data until the new data is fetched
|
|
1871
|
+
refetchOnMount: "always"
|
|
1872
|
+
});
|
|
1873
|
+
return {
|
|
1874
|
+
...query,
|
|
1875
|
+
mainAccountIndex: query.data?.sub_accounts?.[0]?.index?.toString(),
|
|
1876
|
+
subAccounts: query.data?.sub_accounts
|
|
1877
|
+
};
|
|
1878
|
+
}
|
|
1879
|
+
function useLighterNativeFlowNeeded(apiKey, checkoutConfig) {
|
|
1880
|
+
const { walletAddress } = useGeneralWallet();
|
|
1881
|
+
const isLighter = isLighterxyzCustomer(apiKey);
|
|
1882
|
+
const { mainAccountIndex, isLoading } = useLighterAccounts({
|
|
1883
|
+
address: walletAddress || "0x",
|
|
1884
|
+
isEnabled: isLighter && !!walletAddress && walletAddress !== "0x"
|
|
1885
|
+
});
|
|
1886
|
+
const lighterNativeNeeded = checkoutConfig && isLighter && mainAccountIndex === void 0 && checkoutConfig.qrcodeActionType === "LIGHTER_ETH_SPOT_DEPOSIT";
|
|
1887
|
+
return {
|
|
1888
|
+
isLoading,
|
|
1889
|
+
lighterNativeNeeded
|
|
1890
|
+
};
|
|
1891
|
+
}
|
|
1892
|
+
|
|
1776
1893
|
// src/utils/funkitProvider.ts
|
|
1777
1894
|
function getInitialChainIdFromFunkitProviderProps(props) {
|
|
1778
1895
|
if (!props.wagmiConfig) {
|
|
@@ -1924,6 +2041,7 @@ function GeneralWalletProvider({ children }) {
|
|
|
1924
2041
|
const ensAvatar = useMainnetEnsAvatar(ensName);
|
|
1925
2042
|
const { externalUserId, apiKey } = useFunkitConfig();
|
|
1926
2043
|
const { updateUserAsync } = useTrack();
|
|
2044
|
+
const prevApiKeyRef = useRef(apiKey);
|
|
1927
2045
|
const loginType = !connector ? "guest" /* Guest */ : "web3" /* Web3 */;
|
|
1928
2046
|
const isUserLoggedIn = loginType !== "guest" /* Guest */ || !!externalUserId;
|
|
1929
2047
|
const userInfo = useMemo6(() => {
|
|
@@ -1956,20 +2074,28 @@ function GeneralWalletProvider({ children }) {
|
|
|
1956
2074
|
apiKey,
|
|
1957
2075
|
externalUserId
|
|
1958
2076
|
]);
|
|
2077
|
+
const { mainAccountIndex: l2Address } = useLighterAccounts({
|
|
2078
|
+
address
|
|
2079
|
+
});
|
|
1959
2080
|
useEffect6(() => {
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
2081
|
+
const apiKeyChanged = prevApiKeyRef.current !== apiKey;
|
|
2082
|
+
const userInfoChanged = userInfo.id !== logger.getUserId() || userInfo.address !== logger.getUserAddress() || userInfo.name !== logger.getUserName() || userInfo.type !== logger.getUserLoginType() || l2Address !== logger.getL2Address();
|
|
2083
|
+
if (apiKeyChanged || userInfoChanged) {
|
|
2084
|
+
const userInfoWithL2Address = { ...userInfo, l2Address };
|
|
2085
|
+
logger.log("settingUserInfo", userInfoWithL2Address);
|
|
2086
|
+
updateUserAsync(userInfoWithL2Address, apiKey).catch(
|
|
1963
2087
|
(error) => logger.error("updateUserAsync:error", error)
|
|
1964
2088
|
);
|
|
1965
2089
|
logger.setUserInfo(
|
|
1966
2090
|
userInfo.id,
|
|
1967
2091
|
userInfo.address,
|
|
1968
2092
|
userInfo.name,
|
|
1969
|
-
userInfo.type
|
|
2093
|
+
userInfo.type,
|
|
2094
|
+
userInfoWithL2Address.l2Address
|
|
1970
2095
|
);
|
|
2096
|
+
prevApiKeyRef.current = apiKey;
|
|
1971
2097
|
}
|
|
1972
|
-
}, [userInfo, updateUserAsync, apiKey]);
|
|
2098
|
+
}, [userInfo, updateUserAsync, apiKey, l2Address]);
|
|
1973
2099
|
const [logoutSymbol, triggerLogoutSymbol] = useSymbolRefresh_default();
|
|
1974
2100
|
const handleLogout = useCallback5(async () => {
|
|
1975
2101
|
logger.log("handleLogout_called");
|
|
@@ -2122,55 +2248,9 @@ async function disableAtomicBatchIfSupported(wallet, chainId) {
|
|
|
2122
2248
|
import { FlagKey as FlagKey3, isTokenAddressEquivalent } from "@funkit/utils";
|
|
2123
2249
|
import { useCallback as useCallback6, useMemo as useMemo10 } from "react";
|
|
2124
2250
|
|
|
2125
|
-
// src/consts/customers.ts
|
|
2126
|
-
import {
|
|
2127
|
-
AVANTIS_API_KEY,
|
|
2128
|
-
BANKR_API_KEY,
|
|
2129
|
-
BASED_API_KEY,
|
|
2130
|
-
BSX_API_KEY,
|
|
2131
|
-
ETHEREAL_API_KEY as ETHEREAL_API_KEY2,
|
|
2132
|
-
HYENA_API_KEY,
|
|
2133
|
-
HYPERBEAT_API_KEY,
|
|
2134
|
-
HYPERDASH_API_KEY,
|
|
2135
|
-
KATANA_API_KEY,
|
|
2136
|
-
LIGHTERXYZ_API_KEY,
|
|
2137
|
-
MONAD_API_KEY,
|
|
2138
|
-
MONKEY_TILT_API_KEY,
|
|
2139
|
-
OSTIUM_API_KEY,
|
|
2140
|
-
PERPL_API_KEY,
|
|
2141
|
-
POLYMARKET_API_KEY
|
|
2142
|
-
} from "@funkit/api-base";
|
|
2143
|
-
function isPolymarketCustomer(apiKey) {
|
|
2144
|
-
return apiKey === POLYMARKET_API_KEY;
|
|
2145
|
-
}
|
|
2146
|
-
function isOstiumCustomer(apiKey) {
|
|
2147
|
-
return apiKey === OSTIUM_API_KEY;
|
|
2148
|
-
}
|
|
2149
|
-
function isBankrCustomer(apiKey) {
|
|
2150
|
-
return apiKey === BANKR_API_KEY;
|
|
2151
|
-
}
|
|
2152
|
-
function isEtherealCustomer(apiKey) {
|
|
2153
|
-
return apiKey === ETHEREAL_API_KEY2;
|
|
2154
|
-
}
|
|
2155
|
-
function isKatanaCustomer(apiKey) {
|
|
2156
|
-
return apiKey === KATANA_API_KEY;
|
|
2157
|
-
}
|
|
2158
|
-
function isMonadCustomer(apiKey) {
|
|
2159
|
-
return apiKey === MONAD_API_KEY;
|
|
2160
|
-
}
|
|
2161
|
-
function isBasedCustomer(apiKey) {
|
|
2162
|
-
return apiKey === BASED_API_KEY;
|
|
2163
|
-
}
|
|
2164
|
-
function isHyenaCustomer(apiKey) {
|
|
2165
|
-
return apiKey === HYENA_API_KEY;
|
|
2166
|
-
}
|
|
2167
|
-
function isLighterxyzCustomer(apiKey) {
|
|
2168
|
-
return apiKey === LIGHTERXYZ_API_KEY;
|
|
2169
|
-
}
|
|
2170
|
-
|
|
2171
2251
|
// src/providers/FunkitFlagsProvider.tsx
|
|
2172
2252
|
import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
|
|
2173
|
-
import { useQuery as
|
|
2253
|
+
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
2174
2254
|
import React18, {
|
|
2175
2255
|
createContext as createContext7,
|
|
2176
2256
|
useContext as useContext7,
|
|
@@ -2184,20 +2264,16 @@ import {
|
|
|
2184
2264
|
BANKR_API_KEY as BANKR_API_KEY2,
|
|
2185
2265
|
BASED_API_KEY as BASED_API_KEY2,
|
|
2186
2266
|
BULLPEN_API_KEY,
|
|
2187
|
-
CAMBRIA_API_KEY,
|
|
2188
2267
|
ETHEREAL_API_KEY as ETHEREAL_API_KEY3,
|
|
2189
2268
|
FELIX_API_KEY,
|
|
2190
|
-
GINZA_API_KEY,
|
|
2191
2269
|
HYENA_API_KEY as HYENA_API_KEY2,
|
|
2192
2270
|
HYPERBEAT_API_KEY as HYPERBEAT_API_KEY2,
|
|
2193
2271
|
HYPERDASH_API_KEY as HYPERDASH_API_KEY2,
|
|
2194
2272
|
HYPEREDGE_API_KEY,
|
|
2195
2273
|
HYPERSWAP_API_KEY,
|
|
2196
2274
|
KATANA_API_KEY as KATANA_API_KEY2,
|
|
2197
|
-
LIGHTERXYZ_API_KEY as LIGHTERXYZ_API_KEY2,
|
|
2198
2275
|
MEGAPOT_API_KEY,
|
|
2199
2276
|
MONAD_API_KEY as MONAD_API_KEY2,
|
|
2200
|
-
MONKEY_TILT_API_KEY as MONKEY_TILT_API_KEY2,
|
|
2201
2277
|
OSTIUM_API_KEY as OSTIUM_API_KEY2,
|
|
2202
2278
|
PERPL_API_KEY as PERPL_API_KEY2,
|
|
2203
2279
|
POLYMARKET_API_KEY as POLYMARKET_API_KEY2,
|
|
@@ -2205,9 +2281,9 @@ import {
|
|
|
2205
2281
|
SUSHI_API_KEY,
|
|
2206
2282
|
VENTUALS_API_KEY
|
|
2207
2283
|
} from "@funkit/api-base";
|
|
2208
|
-
import { MONAD_CHAIN_ID
|
|
2284
|
+
import { MONAD_CHAIN_ID } from "@funkit/chains";
|
|
2209
2285
|
import { FlagKey } from "@funkit/utils";
|
|
2210
|
-
import { arbitrum, base as base3, polygon } from "viem/chains";
|
|
2286
|
+
import { arbitrum, base as base3, mainnet as mainnet5, polygon } from "viem/chains";
|
|
2211
2287
|
var FUN_INTERNAL_USERS = [
|
|
2212
2288
|
"0x6ec0c2f25d323e7779925Cc20c3740101f990d9F",
|
|
2213
2289
|
// Chloe
|
|
@@ -2307,8 +2383,9 @@ var QR_CODE_WITH_SOLANA = {
|
|
|
2307
2383
|
1151111081099710: ["SOL", "USDC", "USDT", "TRUMP", "USDe"]
|
|
2308
2384
|
};
|
|
2309
2385
|
var QR_CODE_WITH_BITCOIN = {
|
|
2310
|
-
...QR_CODE_WITH_SOLANA
|
|
2311
|
-
|
|
2386
|
+
...QR_CODE_WITH_SOLANA
|
|
2387
|
+
// uncomment to re-enable bitcoin
|
|
2388
|
+
// [bitcoinChain.id]: ['BTC'],
|
|
2312
2389
|
};
|
|
2313
2390
|
var QR_CODE_WITH_MONAD = {
|
|
2314
2391
|
...QR_CODE_WITH_BITCOIN,
|
|
@@ -2385,7 +2462,7 @@ var flagConfig = {
|
|
|
2385
2462
|
},
|
|
2386
2463
|
[FlagKey.EnableTokenTransfer]: {
|
|
2387
2464
|
type: "boolean",
|
|
2388
|
-
default_value:
|
|
2465
|
+
default_value: true,
|
|
2389
2466
|
overrides: [
|
|
2390
2467
|
{
|
|
2391
2468
|
if_any: [
|
|
@@ -2397,58 +2474,12 @@ var flagConfig = {
|
|
|
2397
2474
|
],
|
|
2398
2475
|
value: true
|
|
2399
2476
|
},
|
|
2400
|
-
|
|
2401
|
-
if_any: [
|
|
2402
|
-
{
|
|
2403
|
-
key: "userId",
|
|
2404
|
-
type: "isAnyOf",
|
|
2405
|
-
values: FUN_INTERNAL_USERS
|
|
2406
|
-
}
|
|
2407
|
-
],
|
|
2408
|
-
value: true
|
|
2409
|
-
},
|
|
2410
|
-
disableFlagForCountries(US_COUNTRY_CODES),
|
|
2411
|
-
{
|
|
2412
|
-
if_any: [
|
|
2413
|
-
{
|
|
2414
|
-
key: "apiKey",
|
|
2415
|
-
type: "isAnyOf",
|
|
2416
|
-
values: [
|
|
2417
|
-
AVANTIS_API_KEY2,
|
|
2418
|
-
BANKR_API_KEY2,
|
|
2419
|
-
BASED_API_KEY2,
|
|
2420
|
-
BULLPEN_API_KEY,
|
|
2421
|
-
CAMBRIA_API_KEY,
|
|
2422
|
-
ETHEREAL_API_KEY3,
|
|
2423
|
-
FELIX_API_KEY,
|
|
2424
|
-
GINZA_API_KEY,
|
|
2425
|
-
HYENA_API_KEY2,
|
|
2426
|
-
HYPERBEAT_API_KEY2,
|
|
2427
|
-
HYPERDASH_API_KEY2,
|
|
2428
|
-
HYPEREDGE_API_KEY,
|
|
2429
|
-
HYPERSWAP_API_KEY,
|
|
2430
|
-
KATANA_API_KEY2,
|
|
2431
|
-
LIGHTERXYZ_API_KEY2,
|
|
2432
|
-
LIGHTERXYZ_API_KEY2,
|
|
2433
|
-
MEGAPOT_API_KEY,
|
|
2434
|
-
MONAD_API_KEY2,
|
|
2435
|
-
MONKEY_TILT_API_KEY2,
|
|
2436
|
-
OSTIUM_API_KEY2,
|
|
2437
|
-
PERPL_API_KEY2,
|
|
2438
|
-
POLYMARKET_API_KEY2,
|
|
2439
|
-
RAREBETSPORTS_API_KEY,
|
|
2440
|
-
SUSHI_API_KEY,
|
|
2441
|
-
VENTUALS_API_KEY
|
|
2442
|
-
]
|
|
2443
|
-
}
|
|
2444
|
-
],
|
|
2445
|
-
value: true
|
|
2446
|
-
}
|
|
2477
|
+
disableFlagForCountries(US_COUNTRY_CODES)
|
|
2447
2478
|
]
|
|
2448
2479
|
},
|
|
2449
2480
|
[FlagKey.EnableFiatDeposit]: {
|
|
2450
2481
|
type: "boolean",
|
|
2451
|
-
default_value:
|
|
2482
|
+
default_value: true,
|
|
2452
2483
|
overrides: [
|
|
2453
2484
|
{
|
|
2454
2485
|
if_any: [
|
|
@@ -2460,17 +2491,7 @@ var flagConfig = {
|
|
|
2460
2491
|
],
|
|
2461
2492
|
value: true
|
|
2462
2493
|
},
|
|
2463
|
-
disableFlagForCountries(US_COUNTRY_CODES)
|
|
2464
|
-
{
|
|
2465
|
-
if_any: [
|
|
2466
|
-
{
|
|
2467
|
-
key: "userId",
|
|
2468
|
-
type: "pctRollout",
|
|
2469
|
-
pct: 100
|
|
2470
|
-
}
|
|
2471
|
-
],
|
|
2472
|
-
value: true
|
|
2473
|
-
}
|
|
2494
|
+
disableFlagForCountries(US_COUNTRY_CODES)
|
|
2474
2495
|
]
|
|
2475
2496
|
},
|
|
2476
2497
|
[FlagKey.TokenTransferSourceChainsAndAssets]: {
|
|
@@ -2496,6 +2517,24 @@ var flagConfig = {
|
|
|
2496
2517
|
5064014: void 0
|
|
2497
2518
|
})
|
|
2498
2519
|
},
|
|
2520
|
+
{
|
|
2521
|
+
if_any: [
|
|
2522
|
+
{
|
|
2523
|
+
key: "apiKey",
|
|
2524
|
+
type: "isAnyOf",
|
|
2525
|
+
values: [KATANA_API_KEY2]
|
|
2526
|
+
}
|
|
2527
|
+
],
|
|
2528
|
+
value: JSON.stringify({
|
|
2529
|
+
...COMMON_SUPPORT_CHAINS_AND_ASSETS,
|
|
2530
|
+
// abstract
|
|
2531
|
+
2741: ["USDC.e", "ETH", "WETH", "USDT"],
|
|
2532
|
+
// hyperevm.
|
|
2533
|
+
999: ["USDC", "HYPE", "WETH", "USDT", "UBTC", "USDe"],
|
|
2534
|
+
// solana - only enable once customers are on v5.0.11, anything prior will break
|
|
2535
|
+
1151111081099710: ["SOL", "USDC", "USDT", "TRUMP", "USDe"]
|
|
2536
|
+
})
|
|
2537
|
+
},
|
|
2499
2538
|
// Omit MON as a source asset for Monad
|
|
2500
2539
|
{
|
|
2501
2540
|
if_any: [
|
|
@@ -2519,7 +2558,7 @@ var flagConfig = {
|
|
|
2519
2558
|
{
|
|
2520
2559
|
key: "apiKey",
|
|
2521
2560
|
type: "isAnyOf",
|
|
2522
|
-
values: [POLYMARKET_API_KEY2]
|
|
2561
|
+
values: [POLYMARKET_API_KEY2, BASED_API_KEY2, HYENA_API_KEY2]
|
|
2523
2562
|
}
|
|
2524
2563
|
],
|
|
2525
2564
|
value: JSON.stringify(QR_CODE_WITH_MONAD)
|
|
@@ -2590,6 +2629,17 @@ var flagConfig = {
|
|
|
2590
2629
|
value: base3.id.toString()
|
|
2591
2630
|
},
|
|
2592
2631
|
// Oct 20 - Default to Bitcoin chain on transfer crypto for Polymarket
|
|
2632
|
+
// {
|
|
2633
|
+
// if_any: [
|
|
2634
|
+
// {
|
|
2635
|
+
// key: 'apiKey',
|
|
2636
|
+
// type: 'isAnyOf',
|
|
2637
|
+
// values: [POLYMARKET_API_KEY],
|
|
2638
|
+
// },
|
|
2639
|
+
// ],
|
|
2640
|
+
// value: bitcoinChain.id.toString(),
|
|
2641
|
+
// },
|
|
2642
|
+
// December 11 - Default to ethereum since bitcoin is disabled
|
|
2593
2643
|
{
|
|
2594
2644
|
if_any: [
|
|
2595
2645
|
{
|
|
@@ -2598,7 +2648,7 @@ var flagConfig = {
|
|
|
2598
2648
|
values: [POLYMARKET_API_KEY2]
|
|
2599
2649
|
}
|
|
2600
2650
|
],
|
|
2601
|
-
value:
|
|
2651
|
+
value: mainnet5.id.toString()
|
|
2602
2652
|
}
|
|
2603
2653
|
]
|
|
2604
2654
|
},
|
|
@@ -2710,32 +2760,15 @@ var flagConfig = {
|
|
|
2710
2760
|
]
|
|
2711
2761
|
})
|
|
2712
2762
|
},
|
|
2713
|
-
[FlagKey.HelpTutorialUrl]: {
|
|
2714
|
-
type: "string",
|
|
2715
|
-
default_value: ""
|
|
2716
|
-
},
|
|
2717
2763
|
[FlagKey.EnableCard]: {
|
|
2718
2764
|
type: "boolean",
|
|
2719
|
-
default_value:
|
|
2720
|
-
overrides: [
|
|
2721
|
-
disableFlagForCountries(US_COUNTRY_CODES),
|
|
2722
|
-
{
|
|
2723
|
-
if_any: [
|
|
2724
|
-
{
|
|
2725
|
-
key: "apiKey",
|
|
2726
|
-
type: "isAnyOf",
|
|
2727
|
-
values: [KATANA_API_KEY2]
|
|
2728
|
-
}
|
|
2729
|
-
],
|
|
2730
|
-
value: false
|
|
2731
|
-
}
|
|
2732
|
-
]
|
|
2765
|
+
default_value: false,
|
|
2766
|
+
overrides: []
|
|
2733
2767
|
},
|
|
2734
2768
|
// cannot re-use this flag for brokerage flow or clients that are using older versions of the SDK will be impacted
|
|
2735
2769
|
[FlagKey.EnableBrokerage]: {
|
|
2736
2770
|
type: "boolean",
|
|
2737
|
-
default_value: false
|
|
2738
|
-
overrides: [disableFlagForCountries(US_COUNTRY_CODES)]
|
|
2771
|
+
default_value: false
|
|
2739
2772
|
},
|
|
2740
2773
|
[FlagKey.EnableBluvoBrokerage]: {
|
|
2741
2774
|
type: "boolean",
|
|
@@ -2909,7 +2942,8 @@ var flagConfig = {
|
|
|
2909
2942
|
},
|
|
2910
2943
|
[FlagKey.EnableBitcoin]: {
|
|
2911
2944
|
type: "boolean",
|
|
2912
|
-
|
|
2945
|
+
// uncomment to re-enable bitcoin
|
|
2946
|
+
default_value: false,
|
|
2913
2947
|
overrides: [
|
|
2914
2948
|
// Actually disable bitcoin for Ethereal
|
|
2915
2949
|
{
|
|
@@ -3088,7 +3122,7 @@ function evalCondition(flagKey, condition, context) {
|
|
|
3088
3122
|
}
|
|
3089
3123
|
|
|
3090
3124
|
// src/providers/FunkitMoonpayProvider.tsx
|
|
3091
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3125
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
3092
3126
|
import { useMemo as useMemo7 } from "react";
|
|
3093
3127
|
import { FlagKey as FlagKey2 } from "@funkit/utils";
|
|
3094
3128
|
var MOONPAY_LIVE_API_KEY = "pk_live_IxayBRQuBC3RzpPZkbGPrwUsRWAaeO";
|
|
@@ -3135,7 +3169,7 @@ function useFunkitUserIp() {
|
|
|
3135
3169
|
const { apiKey } = useFunkitConfig();
|
|
3136
3170
|
const isPolymarket = isPolymarketCustomer(apiKey);
|
|
3137
3171
|
const { isUserLoggedIn } = useGeneralWallet();
|
|
3138
|
-
const { data: userIpInfo, isLoading: isLoadingGeoCheck } =
|
|
3172
|
+
const { data: userIpInfo, isLoading: isLoadingGeoCheck } = useQuery2({
|
|
3139
3173
|
queryKey: ["getUserIpInfo"],
|
|
3140
3174
|
queryFn: async () => {
|
|
3141
3175
|
try {
|
|
@@ -3199,7 +3233,7 @@ function FunkitFlagsProvider({ children }) {
|
|
|
3199
3233
|
data: onlineConfig,
|
|
3200
3234
|
error,
|
|
3201
3235
|
isLoading
|
|
3202
|
-
} =
|
|
3236
|
+
} = useQuery3({
|
|
3203
3237
|
queryKey: ["flags"],
|
|
3204
3238
|
queryFn: fetchConfigFromServer,
|
|
3205
3239
|
refetchOnMount: false,
|
|
@@ -3404,16 +3438,20 @@ function useCheckoutDirectExecution() {
|
|
|
3404
3438
|
if (params.isExactIn) {
|
|
3405
3439
|
const { fromTokenDecimals, fromTokenAmount } = params;
|
|
3406
3440
|
const multiplier2 = 10 ** fromTokenDecimals;
|
|
3441
|
+
const fromAmountBaseUnit = BigInt(
|
|
3442
|
+
Math.floor(fromTokenAmount * multiplier2)
|
|
3443
|
+
);
|
|
3407
3444
|
return await getCheckoutQuoteV2({
|
|
3408
3445
|
...getCheckoutQuoteParams,
|
|
3409
|
-
fromAmountBaseUnit
|
|
3446
|
+
fromAmountBaseUnit
|
|
3410
3447
|
});
|
|
3411
3448
|
}
|
|
3412
3449
|
const { toTokenAmount, toTokenDecimals } = params;
|
|
3413
3450
|
const multiplier = 10 ** toTokenDecimals;
|
|
3451
|
+
const toAmountBaseUnit = BigInt(Math.floor(toTokenAmount * multiplier));
|
|
3414
3452
|
return await getCheckoutQuoteV2({
|
|
3415
3453
|
...getCheckoutQuoteParams,
|
|
3416
|
-
toAmountBaseUnit
|
|
3454
|
+
toAmountBaseUnit
|
|
3417
3455
|
});
|
|
3418
3456
|
},
|
|
3419
3457
|
[address, apiKey]
|
|
@@ -3592,8 +3630,301 @@ function useCheckoutDirectExecution() {
|
|
|
3592
3630
|
import {
|
|
3593
3631
|
initializeCheckoutTokenTransferAddress
|
|
3594
3632
|
} from "@funkit/api-base";
|
|
3633
|
+
import { lighterChain } from "@funkit/chains";
|
|
3595
3634
|
import { FlagKey as FlagKey4 } from "@funkit/utils";
|
|
3596
|
-
import { useQuery as
|
|
3635
|
+
import { useQuery as useQuery4 } from "@tanstack/react-query";
|
|
3636
|
+
|
|
3637
|
+
// src/hooks/useUDAParams.ts
|
|
3638
|
+
import { useMemo as useMemo12 } from "react";
|
|
3639
|
+
|
|
3640
|
+
// src/hooks/statsig/useDynamicConfig.ts
|
|
3641
|
+
import { useDynamicConfig as useStatsigDynamicConfig } from "@statsig/react-bindings";
|
|
3642
|
+
import { useMemo as useMemo11 } from "react";
|
|
3643
|
+
|
|
3644
|
+
// src/__generated__/default_configs.ts
|
|
3645
|
+
var default_configs_default = {
|
|
3646
|
+
addressblacklist: {
|
|
3647
|
+
value: [
|
|
3648
|
+
"0x7b97b46D35a28B561d47F50CFB9a2735E506e59d",
|
|
3649
|
+
"0x409ad08cc6CA757f69Fb80250a424B9eFeB99807",
|
|
3650
|
+
"0x02A86f51aA7B8b1c17c30364748d5Ae4a0727E23",
|
|
3651
|
+
"0x64131b60502C01362639CC5cfE1a1efB6Be1165A"
|
|
3652
|
+
]
|
|
3653
|
+
},
|
|
3654
|
+
array_of_strings: {
|
|
3655
|
+
value: []
|
|
3656
|
+
},
|
|
3657
|
+
blockedcountries: {
|
|
3658
|
+
value: [
|
|
3659
|
+
"AF",
|
|
3660
|
+
"BY",
|
|
3661
|
+
"MM",
|
|
3662
|
+
"CF",
|
|
3663
|
+
"CU",
|
|
3664
|
+
"CD",
|
|
3665
|
+
"IR",
|
|
3666
|
+
"LB",
|
|
3667
|
+
"LY",
|
|
3668
|
+
"NI",
|
|
3669
|
+
"KP",
|
|
3670
|
+
"UA",
|
|
3671
|
+
"SO",
|
|
3672
|
+
"SS",
|
|
3673
|
+
"SY",
|
|
3674
|
+
"VE"
|
|
3675
|
+
]
|
|
3676
|
+
},
|
|
3677
|
+
boolean: {
|
|
3678
|
+
value: false
|
|
3679
|
+
},
|
|
3680
|
+
brokerage_hide_you_receive: {
|
|
3681
|
+
value: false
|
|
3682
|
+
},
|
|
3683
|
+
chainidsortorder: {
|
|
3684
|
+
value: ["1", "1151111081099710", "8453", "56", "137", "42161", "10"]
|
|
3685
|
+
},
|
|
3686
|
+
checkoutnotificationsrefreshinterval: {
|
|
3687
|
+
value: {
|
|
3688
|
+
listRefresh: 5e3,
|
|
3689
|
+
itemRefresh: 2e3
|
|
3690
|
+
}
|
|
3691
|
+
},
|
|
3692
|
+
checkouttimeestimateoverrides: {
|
|
3693
|
+
value: {
|
|
3694
|
+
balance: 60,
|
|
3695
|
+
brokerage: 120,
|
|
3696
|
+
card: 300,
|
|
3697
|
+
token_transfer: 60
|
|
3698
|
+
}
|
|
3699
|
+
},
|
|
3700
|
+
dynamicrouting: {
|
|
3701
|
+
value: [
|
|
3702
|
+
{
|
|
3703
|
+
routeId: "LIGHTER_ETH_SPOT",
|
|
3704
|
+
rules: [
|
|
3705
|
+
{
|
|
3706
|
+
when: {
|
|
3707
|
+
chainId: "1",
|
|
3708
|
+
tokenAddress: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
3709
|
+
},
|
|
3710
|
+
use: {
|
|
3711
|
+
path: "FUN_MAINNET_DEPOSIT",
|
|
3712
|
+
badge: "NATIVE"
|
|
3713
|
+
}
|
|
3714
|
+
},
|
|
3715
|
+
{
|
|
3716
|
+
when: {
|
|
3717
|
+
chainId: "1",
|
|
3718
|
+
tokenAddress: "*"
|
|
3719
|
+
},
|
|
3720
|
+
use: {
|
|
3721
|
+
path: "FUN_MAINNET_DEPOSIT"
|
|
3722
|
+
}
|
|
3723
|
+
},
|
|
3724
|
+
{
|
|
3725
|
+
when: "*",
|
|
3726
|
+
use: {
|
|
3727
|
+
path: "RL_TRANSFER"
|
|
3728
|
+
}
|
|
3729
|
+
}
|
|
3730
|
+
]
|
|
3731
|
+
},
|
|
3732
|
+
{
|
|
3733
|
+
routeId: "LIGHTER_USDC_PERPS",
|
|
3734
|
+
rules: [
|
|
3735
|
+
{
|
|
3736
|
+
when: {
|
|
3737
|
+
chainId: "1",
|
|
3738
|
+
tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
|
3739
|
+
},
|
|
3740
|
+
use: {
|
|
3741
|
+
path: "FUN_MAINNET_DEPOSIT",
|
|
3742
|
+
badge: "NATIVE"
|
|
3743
|
+
}
|
|
3744
|
+
},
|
|
3745
|
+
{
|
|
3746
|
+
when: {
|
|
3747
|
+
chainId: "1",
|
|
3748
|
+
tokenAddress: "*"
|
|
3749
|
+
},
|
|
3750
|
+
use: {
|
|
3751
|
+
path: "FUN_MAINNET_DEPOSIT"
|
|
3752
|
+
}
|
|
3753
|
+
},
|
|
3754
|
+
{
|
|
3755
|
+
when: "*",
|
|
3756
|
+
use: {
|
|
3757
|
+
path: "RL_TRANSFER"
|
|
3758
|
+
}
|
|
3759
|
+
}
|
|
3760
|
+
]
|
|
3761
|
+
},
|
|
3762
|
+
{
|
|
3763
|
+
routeId: "LIGHTER_USDC_PERPS_NEW_USER",
|
|
3764
|
+
rules: [
|
|
3765
|
+
{
|
|
3766
|
+
when: {
|
|
3767
|
+
chainId: "1",
|
|
3768
|
+
tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
|
3769
|
+
},
|
|
3770
|
+
use: {
|
|
3771
|
+
path: "FUN_MAINNET_DEPOSIT",
|
|
3772
|
+
badge: "NATIVE"
|
|
3773
|
+
}
|
|
3774
|
+
},
|
|
3775
|
+
{
|
|
3776
|
+
when: "*",
|
|
3777
|
+
use: {
|
|
3778
|
+
path: "FUN_MAINNET_DEPOSIT"
|
|
3779
|
+
}
|
|
3780
|
+
}
|
|
3781
|
+
]
|
|
3782
|
+
},
|
|
3783
|
+
{
|
|
3784
|
+
routeId: "LIGHTER_ETH_SPOT_NEW_USER",
|
|
3785
|
+
rules: [
|
|
3786
|
+
{
|
|
3787
|
+
when: {
|
|
3788
|
+
chainId: "1",
|
|
3789
|
+
tokenAddress: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
3790
|
+
},
|
|
3791
|
+
use: {
|
|
3792
|
+
path: "FUN_MAINNET_DEPOSIT",
|
|
3793
|
+
badge: "NATIVE"
|
|
3794
|
+
}
|
|
3795
|
+
},
|
|
3796
|
+
{
|
|
3797
|
+
when: "*",
|
|
3798
|
+
use: {
|
|
3799
|
+
path: "FUN_MAINNET_DEPOSIT"
|
|
3800
|
+
}
|
|
3801
|
+
}
|
|
3802
|
+
]
|
|
3803
|
+
}
|
|
3804
|
+
]
|
|
3805
|
+
},
|
|
3806
|
+
enablebitcoin: {
|
|
3807
|
+
value: true
|
|
3808
|
+
},
|
|
3809
|
+
enablebluvobrokerage: {
|
|
3810
|
+
value: false
|
|
3811
|
+
},
|
|
3812
|
+
enablefiatdeposit: {
|
|
3813
|
+
value: true
|
|
3814
|
+
},
|
|
3815
|
+
enablemeldpayment: {
|
|
3816
|
+
value: false
|
|
3817
|
+
},
|
|
3818
|
+
enabletokentransfer: {
|
|
3819
|
+
value: true
|
|
3820
|
+
},
|
|
3821
|
+
isrelaybypassenabled: {
|
|
3822
|
+
value: true
|
|
3823
|
+
},
|
|
3824
|
+
meldquickoptions: {
|
|
3825
|
+
value: {
|
|
3826
|
+
USD: [100, 500, 1e3],
|
|
3827
|
+
EUR: [90, 435, 870],
|
|
3828
|
+
JPY: [14500, 72500, 145e3],
|
|
3829
|
+
KRW: [137500, 69e4, 138e4],
|
|
3830
|
+
GBP: [75, 375, 745],
|
|
3831
|
+
CAD: [135, 685, 1365],
|
|
3832
|
+
AUD: [155, 770, 1540],
|
|
3833
|
+
CHF: [80, 410, 820],
|
|
3834
|
+
BRL: [550, 2750, 5500],
|
|
3835
|
+
INR: [8600, 43e3, 86e3],
|
|
3836
|
+
PHP: [5700, 28500, 57e3],
|
|
3837
|
+
TRY: [3950, 19800, 39500],
|
|
3838
|
+
RUB: [7850, 39300, 78600],
|
|
3839
|
+
PLN: [370, 1860, 3715],
|
|
3840
|
+
SGD: [130, 645, 1285]
|
|
3841
|
+
}
|
|
3842
|
+
},
|
|
3843
|
+
showinfobanner: {
|
|
3844
|
+
value: {
|
|
3845
|
+
message: "",
|
|
3846
|
+
expireAtMs: 0,
|
|
3847
|
+
type: "alert"
|
|
3848
|
+
}
|
|
3849
|
+
},
|
|
3850
|
+
showpoweredtagline: {
|
|
3851
|
+
value: false
|
|
3852
|
+
},
|
|
3853
|
+
supportedexchangesv2: {
|
|
3854
|
+
value: []
|
|
3855
|
+
},
|
|
3856
|
+
uda_params: {
|
|
3857
|
+
value: [
|
|
3858
|
+
{
|
|
3859
|
+
dynamicRoutingId: "LIGHTER_ETH_SPOT",
|
|
3860
|
+
params: {
|
|
3861
|
+
targetChain: "3586256",
|
|
3862
|
+
targetAsset: "0x0000000000000000000000000000000000000001",
|
|
3863
|
+
targetAssetTicker: "ETH (Spot)",
|
|
3864
|
+
iconSrc: "https://sdk-cdn.fun.xyz/images/eth.svg"
|
|
3865
|
+
}
|
|
3866
|
+
},
|
|
3867
|
+
{
|
|
3868
|
+
dynamicRoutingId: "LIGHTER_ETH_SPOT_NEW_USER",
|
|
3869
|
+
params: {
|
|
3870
|
+
targetChain: "1",
|
|
3871
|
+
targetAsset: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
3872
|
+
targetAssetTicker: "USDC (Perps)",
|
|
3873
|
+
iconSrc: "https://sdk-cdn.fun.xyz/images/usdc.svg",
|
|
3874
|
+
qrcodeActionType: "LIGHTER_USDC_DEPOSIT"
|
|
3875
|
+
}
|
|
3876
|
+
},
|
|
3877
|
+
{
|
|
3878
|
+
dynamicRoutingId: "LIGHTER_USDC_PERPS",
|
|
3879
|
+
params: {
|
|
3880
|
+
targetChain: "3586256",
|
|
3881
|
+
targetAsset: "0x0000000000000000000000000000000000000000",
|
|
3882
|
+
targetAssetTicker: "USDC (Perps)",
|
|
3883
|
+
iconSrc: "https://sdk-cdn.fun.xyz/images/usdc.svg"
|
|
3884
|
+
}
|
|
3885
|
+
},
|
|
3886
|
+
{
|
|
3887
|
+
dynamicRoutingId: "LIGHTER_USDC_PERPS_NEW_USER",
|
|
3888
|
+
params: {
|
|
3889
|
+
targetChain: "1",
|
|
3890
|
+
targetAsset: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
3891
|
+
targetAssetTicker: "USDC (Perps)",
|
|
3892
|
+
iconSrc: "https://sdk-cdn.fun.xyz/images/usdc.svg",
|
|
3893
|
+
qrcodeActionType: "LIGHTER_USDC_DEPOSIT"
|
|
3894
|
+
}
|
|
3895
|
+
}
|
|
3896
|
+
]
|
|
3897
|
+
}
|
|
3898
|
+
};
|
|
3899
|
+
|
|
3900
|
+
// src/hooks/statsig/useDynamicConfig.ts
|
|
3901
|
+
var useDynamicConfig = (name) => {
|
|
3902
|
+
const config = useStatsigDynamicConfig(name);
|
|
3903
|
+
const fallback2 = useMemo11(() => default_configs_default[name], [name]);
|
|
3904
|
+
const value = useMemo11(
|
|
3905
|
+
() => config.get("value", fallback2.value),
|
|
3906
|
+
// confirmed that config is stable (https://cdn.jsdelivr.net/npm/@statsig/react-bindings@3.30.2/src/useDynamicConfig.js)
|
|
3907
|
+
// but .get might not be so we memoize it ourselves
|
|
3908
|
+
[config, fallback2]
|
|
3909
|
+
);
|
|
3910
|
+
return value;
|
|
3911
|
+
};
|
|
3912
|
+
|
|
3913
|
+
// src/hooks/useUDAParams.ts
|
|
3914
|
+
var useUDAParams = (_dynamicRoutingId) => {
|
|
3915
|
+
const { checkoutItem } = useCheckoutContext();
|
|
3916
|
+
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
3917
|
+
const dynamicRoutingId = _dynamicRoutingId || checkoutConfig?.dynamicRoutingId;
|
|
3918
|
+
const udaParams = useDynamicConfig("uda_params");
|
|
3919
|
+
const currentParams = useMemo12(() => {
|
|
3920
|
+
return udaParams.find(
|
|
3921
|
+
(param) => param.dynamicRoutingId === dynamicRoutingId
|
|
3922
|
+
)?.params;
|
|
3923
|
+
}, [udaParams, dynamicRoutingId]);
|
|
3924
|
+
return currentParams;
|
|
3925
|
+
};
|
|
3926
|
+
|
|
3927
|
+
// src/hooks/useCheckoutTransferInit.ts
|
|
3597
3928
|
var COMMON_CLIENT_METADATA = generateClientMetadataForTokenTransfer();
|
|
3598
3929
|
async function checkoutTransferFetch(params) {
|
|
3599
3930
|
return await initializeCheckoutTokenTransferAddress({
|
|
@@ -3606,7 +3937,8 @@ function getCheckoutTokenTransferParams({
|
|
|
3606
3937
|
checkoutConfig,
|
|
3607
3938
|
userId,
|
|
3608
3939
|
recipientAddr,
|
|
3609
|
-
apiKey
|
|
3940
|
+
apiKey,
|
|
3941
|
+
udaParams
|
|
3610
3942
|
}) {
|
|
3611
3943
|
if (!checkoutConfig) {
|
|
3612
3944
|
return;
|
|
@@ -3620,6 +3952,14 @@ function getCheckoutTokenTransferParams({
|
|
|
3620
3952
|
recipientAddr,
|
|
3621
3953
|
actionType: checkoutConfig.qrcodeActionType
|
|
3622
3954
|
};
|
|
3955
|
+
if (udaParams) {
|
|
3956
|
+
return {
|
|
3957
|
+
...commonParams,
|
|
3958
|
+
toChainId: udaParams.targetChain,
|
|
3959
|
+
toTokenAddress: udaParams.targetAsset,
|
|
3960
|
+
actionType: udaParams.qrcodeActionType
|
|
3961
|
+
};
|
|
3962
|
+
}
|
|
3623
3963
|
const dynamicTargetAssetCandidates = checkoutConfig.dynamicTargetAssetCandidates;
|
|
3624
3964
|
if (dynamicTargetAssetCandidates?.[0]) {
|
|
3625
3965
|
const defaultCandidate = dynamicTargetAssetCandidates.find((candidate) => candidate.isDefault) || dynamicTargetAssetCandidates[0];
|
|
@@ -3644,25 +3984,51 @@ function getCheckoutTokenTransferParams({
|
|
|
3644
3984
|
toTokenAddress: checkoutConfig.targetAsset
|
|
3645
3985
|
};
|
|
3646
3986
|
}
|
|
3987
|
+
function useIsQRCodeTransferEnabled() {
|
|
3988
|
+
const { checkoutItem } = useCheckoutContext();
|
|
3989
|
+
const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
|
|
3990
|
+
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
3991
|
+
const udaParams = useUDAParams();
|
|
3992
|
+
if (!isQrCodeEnabled) {
|
|
3993
|
+
return false;
|
|
3994
|
+
}
|
|
3995
|
+
const dynamicRoutingId = checkoutConfig?.dynamicRoutingId;
|
|
3996
|
+
if (dynamicRoutingId) {
|
|
3997
|
+
return !!udaParams;
|
|
3998
|
+
}
|
|
3999
|
+
return true;
|
|
4000
|
+
}
|
|
3647
4001
|
var useCheckoutTransferInit = (enabled = true) => {
|
|
3648
4002
|
const { checkoutItem } = useCheckoutContext();
|
|
3649
4003
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
4004
|
+
const isQrCodeEnabled = useIsQRCodeTransferEnabled();
|
|
3650
4005
|
const { walletAddress, userInfo } = useGeneralWallet();
|
|
3651
4006
|
const { apiKey } = useFunkitConfig();
|
|
3652
|
-
const
|
|
3653
|
-
const
|
|
4007
|
+
const udaParams = useUDAParams();
|
|
4008
|
+
const isLighter = isLighterxyzCustomer(apiKey);
|
|
4009
|
+
const { mainAccountIndex } = useLighterAccounts({
|
|
4010
|
+
address: walletAddress || "0x",
|
|
4011
|
+
isEnabled: isLighter && !!walletAddress && walletAddress !== "0x"
|
|
4012
|
+
});
|
|
4013
|
+
const recipientAddr = (() => {
|
|
4014
|
+
if (udaParams && udaParams.targetChain === lighterChain.id.toString() && !!mainAccountIndex) {
|
|
4015
|
+
return mainAccountIndex;
|
|
4016
|
+
}
|
|
4017
|
+
return checkoutConfig?.customRecipient || walletAddress || "0x";
|
|
4018
|
+
})();
|
|
3654
4019
|
const userId = userInfo.id || "";
|
|
3655
4020
|
const queryKey = getCheckoutTokenTransferParams({
|
|
3656
4021
|
checkoutConfig,
|
|
3657
4022
|
userId,
|
|
3658
4023
|
apiKey,
|
|
3659
|
-
recipientAddr
|
|
4024
|
+
recipientAddr,
|
|
4025
|
+
udaParams
|
|
3660
4026
|
});
|
|
3661
4027
|
const postActionOverride = isHyenaCustomer(apiKey);
|
|
3662
4028
|
const isQRCodeEnabledWithPostAction = !!checkoutConfig && // either no post action required
|
|
3663
4029
|
(!isCheckoutPostActionRequired(checkoutConfig) || // or action type is set
|
|
3664
|
-
!!checkoutConfig?.qrcodeActionType || postActionOverride);
|
|
3665
|
-
const { data, isFetching } =
|
|
4030
|
+
!!checkoutConfig?.qrcodeActionType || postActionOverride || !!queryKey?.actionType);
|
|
4031
|
+
const { data, isFetching } = useQuery4({
|
|
3666
4032
|
queryKey: ["initializeCheckoutTokenTransferAddress", queryKey],
|
|
3667
4033
|
queryFn: ({ queryKey: [_, queryKey2] }) => queryKey2 ? checkoutTransferFetch(queryKey2) : void 0,
|
|
3668
4034
|
refetchOnWindowFocus: false,
|
|
@@ -3678,9 +4044,9 @@ var useCheckoutTransferInit = (enabled = true) => {
|
|
|
3678
4044
|
};
|
|
3679
4045
|
|
|
3680
4046
|
// src/hooks/useEffectEvent.ts
|
|
3681
|
-
import { useCallback as useCallback8, useInsertionEffect, useRef } from "react";
|
|
4047
|
+
import { useCallback as useCallback8, useInsertionEffect, useRef as useRef2 } from "react";
|
|
3682
4048
|
function useEffectEvent(fn) {
|
|
3683
|
-
const savedCallback =
|
|
4049
|
+
const savedCallback = useRef2(fn);
|
|
3684
4050
|
useInsertionEffect(() => {
|
|
3685
4051
|
savedCallback.current = fn;
|
|
3686
4052
|
}, [fn]);
|
|
@@ -3726,11 +4092,11 @@ import React19, {
|
|
|
3726
4092
|
useCallback as useCallback9,
|
|
3727
4093
|
useContext as useContext8,
|
|
3728
4094
|
useEffect as useEffect8,
|
|
3729
|
-
useRef as
|
|
4095
|
+
useRef as useRef3,
|
|
3730
4096
|
useState as useState8
|
|
3731
4097
|
} from "react";
|
|
3732
4098
|
import { isHex } from "viem";
|
|
3733
|
-
import { useQuery as
|
|
4099
|
+
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
3734
4100
|
|
|
3735
4101
|
// src/utils/purifyCheckoutHistoryItem.ts
|
|
3736
4102
|
import {
|
|
@@ -3749,7 +4115,7 @@ import {
|
|
|
3749
4115
|
getDirectExecutionByTxHash
|
|
3750
4116
|
} from "@funkit/api-base";
|
|
3751
4117
|
import { RELAY_TERMINAL_STATUSES } from "@funkit/fun-relay";
|
|
3752
|
-
import { useQuery as
|
|
4118
|
+
import { useQuery as useQuery5 } from "@tanstack/react-query";
|
|
3753
4119
|
var RELAY_FETCH_INTERVAL = 1500;
|
|
3754
4120
|
var logPrefix = "useDirectExecutionInfoPolling";
|
|
3755
4121
|
function useDirectExecutionInfoPolling({
|
|
@@ -3757,7 +4123,7 @@ function useDirectExecutionInfoPolling({
|
|
|
3757
4123
|
disabled = false
|
|
3758
4124
|
}) {
|
|
3759
4125
|
const { apiKey } = useFunkitConfig();
|
|
3760
|
-
const { data: directExecution, isLoading } =
|
|
4126
|
+
const { data: directExecution, isLoading } = useQuery5({
|
|
3761
4127
|
queryKey: [logPrefix, initDirectExecution?.txHash],
|
|
3762
4128
|
queryFn: async () => {
|
|
3763
4129
|
try {
|
|
@@ -3913,7 +4279,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
3913
4279
|
const { logoutSymbol, isUserLoggedIn, userInfo } = useGeneralWallet();
|
|
3914
4280
|
const funkitConfig = useFunkitConfig();
|
|
3915
4281
|
const [checkoutHistoryList, setCheckoutHistoryList] = useState8([]);
|
|
3916
|
-
const intervalRef =
|
|
4282
|
+
const intervalRef = useRef3();
|
|
3917
4283
|
const [refreshSymbol, triggerRefreshSymbol] = useSymbolRefresh_default();
|
|
3918
4284
|
const [historyDepositAddress, setHistoryDepositAddress] = useState8();
|
|
3919
4285
|
const [isInited, setIsInited] = useState8(false);
|
|
@@ -4039,7 +4405,7 @@ function useCheckoutHistoryContext() {
|
|
|
4039
4405
|
}
|
|
4040
4406
|
function useCheckoutsListenerByUserId(userId) {
|
|
4041
4407
|
const { apiKey } = useFunkitConfig();
|
|
4042
|
-
const { data, isLoading } =
|
|
4408
|
+
const { data, isLoading } = useQuery6({
|
|
4043
4409
|
enabled: !!userId,
|
|
4044
4410
|
queryKey: ["getPurifiedCheckoutsByUserId", userId],
|
|
4045
4411
|
queryFn: async () => {
|
|
@@ -4068,7 +4434,7 @@ function useCheckoutsListenerByUserId(userId) {
|
|
|
4068
4434
|
}
|
|
4069
4435
|
function useCheckoutListenerByCheckoutId(checkoutId) {
|
|
4070
4436
|
const { apiKey } = useFunkitConfig();
|
|
4071
|
-
const { data, isLoading } =
|
|
4437
|
+
const { data, isLoading } = useQuery6({
|
|
4072
4438
|
enabled: !!checkoutId,
|
|
4073
4439
|
queryKey: ["getPurifiedCheckoutById", checkoutId],
|
|
4074
4440
|
queryFn: async () => {
|
|
@@ -4166,7 +4532,7 @@ import React233, {
|
|
|
4166
4532
|
useCallback as useCallback48,
|
|
4167
4533
|
useContext as useContext16,
|
|
4168
4534
|
useEffect as useEffect54,
|
|
4169
|
-
useMemo as
|
|
4535
|
+
useMemo as useMemo49,
|
|
4170
4536
|
useState as useState73
|
|
4171
4537
|
} from "react";
|
|
4172
4538
|
import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig5 } from "wagmi";
|
|
@@ -4189,7 +4555,7 @@ import React107, { useCallback as useCallback23, useState as useState34 } from "
|
|
|
4189
4555
|
|
|
4190
4556
|
// src/components/FunCheckoutHistory/useCustomStatusAnimationAboveTopbar.tsx
|
|
4191
4557
|
import { clamp } from "@funkit/utils";
|
|
4192
|
-
import React29, { useRef as
|
|
4558
|
+
import React29, { useRef as useRef5, useState as useState13 } from "react";
|
|
4193
4559
|
|
|
4194
4560
|
// src/domains/checkout.ts
|
|
4195
4561
|
import {
|
|
@@ -4245,8 +4611,16 @@ function getCheckoutStateBooleans(checkoutState, refundState) {
|
|
|
4245
4611
|
};
|
|
4246
4612
|
}
|
|
4247
4613
|
|
|
4614
|
+
// src/utils/lighter.ts
|
|
4615
|
+
import { getAddress } from "viem";
|
|
4616
|
+
var LIGHTER_DEPOSIT_ADDRESS = getAddress(
|
|
4617
|
+
"0x3b4d794a66304f130a4db8f2551b0070dfcf5ca7"
|
|
4618
|
+
);
|
|
4619
|
+
var LIGHTER_NATIVE_FLOW_TIME_ESTIMATE_SECONDS = 110;
|
|
4620
|
+
var LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF = 60 * 5;
|
|
4621
|
+
|
|
4248
4622
|
// src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
|
|
4249
|
-
import React27, { useEffect as useEffect11, useMemo as
|
|
4623
|
+
import React27, { useEffect as useEffect11, useMemo as useMemo14, useState as useState11 } from "react";
|
|
4250
4624
|
|
|
4251
4625
|
// src/components/TransactionStatus/TransactionStatus.tsx
|
|
4252
4626
|
import {
|
|
@@ -4257,8 +4631,8 @@ import {
|
|
|
4257
4631
|
import React26, {
|
|
4258
4632
|
useCallback as useCallback10,
|
|
4259
4633
|
useEffect as useEffect10,
|
|
4260
|
-
useMemo as
|
|
4261
|
-
useRef as
|
|
4634
|
+
useMemo as useMemo13,
|
|
4635
|
+
useRef as useRef4,
|
|
4262
4636
|
useState as useState10
|
|
4263
4637
|
} from "react";
|
|
4264
4638
|
import { Trans } from "react-i18next";
|
|
@@ -4999,7 +5373,7 @@ function TransactionStatusLoading({
|
|
|
4999
5373
|
)));
|
|
5000
5374
|
}
|
|
5001
5375
|
function TransactionStatus({
|
|
5002
|
-
|
|
5376
|
+
isSlowTransaction,
|
|
5003
5377
|
isWithdrawal,
|
|
5004
5378
|
status,
|
|
5005
5379
|
step,
|
|
@@ -5007,10 +5381,10 @@ function TransactionStatus({
|
|
|
5007
5381
|
textConfigSteps
|
|
5008
5382
|
}) {
|
|
5009
5383
|
const { t } = useFunkitTranslation();
|
|
5010
|
-
const finalTextConfigStatus =
|
|
5384
|
+
const finalTextConfigStatus = useMemo13(() => {
|
|
5011
5385
|
return textConfigStatus || getDefaultTextConfigStatus(t);
|
|
5012
5386
|
}, [t, textConfigStatus]);
|
|
5013
|
-
const finalTextConfigSteps =
|
|
5387
|
+
const finalTextConfigSteps = useMemo13(() => {
|
|
5014
5388
|
return textConfigSteps || getDefaultTextConfigSteps(t);
|
|
5015
5389
|
}, [t, textConfigSteps]);
|
|
5016
5390
|
const [initialStatus] = useState10(status);
|
|
@@ -5021,7 +5395,7 @@ function TransactionStatus({
|
|
|
5021
5395
|
const [isDelayed2, setDelayed] = useState10(status === "delayed");
|
|
5022
5396
|
const [transitioningToStatus, setTransitioningToStatus] = useState10(status);
|
|
5023
5397
|
const [transitioningToStep, setTransitioningToStep] = useState10(step);
|
|
5024
|
-
const spinAnimationRef =
|
|
5398
|
+
const spinAnimationRef = useRef4();
|
|
5025
5399
|
const stopSpinning = useCallback10(() => {
|
|
5026
5400
|
spinAnimationRef.current?.cancel();
|
|
5027
5401
|
spinAnimationRef.current = void 0;
|
|
@@ -5301,18 +5675,18 @@ function TransactionStatus({
|
|
|
5301
5675
|
transitioningToStep
|
|
5302
5676
|
]);
|
|
5303
5677
|
const textConfig = currentStatus === "progress" ? isDelayed2 ? finalTextConfigStatus.progress_delayed : finalTextConfigSteps[currentStep] : finalTextConfigStatus[currentStatus];
|
|
5304
|
-
const { description, descriptionKey, title } =
|
|
5305
|
-
const translatedDurationUnits =
|
|
5678
|
+
const { description, descriptionKey, title } = useMemo13(() => {
|
|
5679
|
+
const translatedDurationUnits = isSlowTransaction ? t("transaction.minutes") : t("transaction.seconds");
|
|
5306
5680
|
const config = typeof textConfig === "function" ? textConfig({
|
|
5307
5681
|
durationUnits: translatedDurationUnits,
|
|
5308
5682
|
isWithdrawal,
|
|
5309
|
-
finalizeVerb:
|
|
5683
|
+
finalizeVerb: isSlowTransaction ? t("transaction.credit") : t("transaction.finalize")
|
|
5310
5684
|
}) : textConfig;
|
|
5311
5685
|
return {
|
|
5312
5686
|
...config,
|
|
5313
5687
|
descriptionKey: config.descriptionKey ?? config.description
|
|
5314
5688
|
};
|
|
5315
|
-
}, [
|
|
5689
|
+
}, [isSlowTransaction, isWithdrawal, textConfig, t]);
|
|
5316
5690
|
return /* @__PURE__ */ React26.createElement(
|
|
5317
5691
|
Box,
|
|
5318
5692
|
{
|
|
@@ -5450,7 +5824,7 @@ function FunCheckoutStatusLoaded({
|
|
|
5450
5824
|
checkoutHistoryItem.state,
|
|
5451
5825
|
checkoutHistoryItem.refundState
|
|
5452
5826
|
);
|
|
5453
|
-
const startTimeMs =
|
|
5827
|
+
const startTimeMs = useMemo14(
|
|
5454
5828
|
() => extractStartTimeMs(
|
|
5455
5829
|
checkoutHistoryItem.clientMetadata.id,
|
|
5456
5830
|
activeCheckoutItem,
|
|
@@ -5477,7 +5851,7 @@ function FunCheckoutStatusLoaded({
|
|
|
5477
5851
|
return /* @__PURE__ */ React27.createElement(
|
|
5478
5852
|
TransactionStatus,
|
|
5479
5853
|
{
|
|
5480
|
-
|
|
5854
|
+
isSlowTransaction: false,
|
|
5481
5855
|
isWithdrawal: false,
|
|
5482
5856
|
key: checkoutHistoryItem.clientMetadata.id,
|
|
5483
5857
|
onOrderDelayed,
|
|
@@ -5519,10 +5893,22 @@ function formatSecondsTranslated(seconds, t, specifyUnderMinute = false, omitSec
|
|
|
5519
5893
|
var LAYERZEO_OFT_TIME_ESTIMATE_SECONDS = 180;
|
|
5520
5894
|
function useCheckoutTimeEstimate(latestQuote, originalTimeEstimationMs, paymentMethod, bypassFlag) {
|
|
5521
5895
|
const { t } = useFunkitTranslation();
|
|
5896
|
+
const { apiKey } = useFunkitConfig();
|
|
5897
|
+
const { checkoutItem } = useCheckoutContext();
|
|
5898
|
+
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
5899
|
+
const lighterNativeFlow = isLighterNativeFlow(apiKey, checkoutConfig);
|
|
5522
5900
|
const timeEstimatesJsonString = useFlag(FlagKey5.CheckoutTimeEstimateOverrides);
|
|
5523
5901
|
const timeEstimates = safeJSONParse(
|
|
5524
5902
|
timeEstimatesJsonString
|
|
5525
5903
|
);
|
|
5904
|
+
if (lighterNativeFlow) {
|
|
5905
|
+
const estimatedTime2 = LIGHTER_NATIVE_FLOW_TIME_ESTIMATE_SECONDS;
|
|
5906
|
+
const estimatedTimeText2 = formatSecondsTranslated(estimatedTime2, t, true);
|
|
5907
|
+
return {
|
|
5908
|
+
estimatedTime: estimatedTime2,
|
|
5909
|
+
estimatedTimeText: estimatedTimeText2
|
|
5910
|
+
};
|
|
5911
|
+
}
|
|
5526
5912
|
if (latestQuote?.baseQuote.metadata?.oftEnabled) {
|
|
5527
5913
|
return {
|
|
5528
5914
|
estimatedTime: LAYERZEO_OFT_TIME_ESTIMATE_SECONDS,
|
|
@@ -5578,6 +5964,9 @@ function FunDirectExecutionStatusLoaded({
|
|
|
5578
5964
|
disabled: disableAutoUpdate
|
|
5579
5965
|
});
|
|
5580
5966
|
const { getCheckoutProgress } = useCheckoutContext();
|
|
5967
|
+
const { apiKey } = useFunkitConfig();
|
|
5968
|
+
const { checkoutItem } = useCheckoutContext();
|
|
5969
|
+
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
5581
5970
|
const progress = getCheckoutProgress(directExecution.clientMetadata.id);
|
|
5582
5971
|
const startTimeMs = directExecution.createdTimeMs;
|
|
5583
5972
|
const [currentTimeMs, setCurrentTimeMs] = useState12(Date.now());
|
|
@@ -5590,11 +5979,12 @@ function FunDirectExecutionStatusLoaded({
|
|
|
5590
5979
|
if (isRefunded) {
|
|
5591
5980
|
return null;
|
|
5592
5981
|
}
|
|
5982
|
+
const isSlowTransaction = !!isLayerZero || isLighterNativeFlow(apiKey, checkoutConfig);
|
|
5593
5983
|
const { clientMetadata } = directExecution;
|
|
5594
5984
|
return /* @__PURE__ */ React28.createElement(
|
|
5595
5985
|
TransactionStatus,
|
|
5596
5986
|
{
|
|
5597
|
-
|
|
5987
|
+
isSlowTransaction,
|
|
5598
5988
|
isWithdrawal: !!clientMetadata.isWithdrawal,
|
|
5599
5989
|
key: clientMetadata.id,
|
|
5600
5990
|
startTimeMs,
|
|
@@ -5617,10 +6007,11 @@ function useCustomStatusAnimationAboveTopbar({
|
|
|
5617
6007
|
paddingTop,
|
|
5618
6008
|
topbar,
|
|
5619
6009
|
withTopDivider,
|
|
5620
|
-
scrollableContent
|
|
6010
|
+
scrollableContent,
|
|
6011
|
+
isLighterNativeDeposit
|
|
5621
6012
|
}) {
|
|
5622
6013
|
const [scrollPos, setScrollPos] = useState13(0);
|
|
5623
|
-
const lastY =
|
|
6014
|
+
const lastY = useRef5(0);
|
|
5624
6015
|
const { checkoutHistoryInfo, directExecutionInfo } = useFunkitPostCheckoutInternal(
|
|
5625
6016
|
isCheckoutDetailView && depositAddress ? depositAddress : "0x"
|
|
5626
6017
|
);
|
|
@@ -5677,7 +6068,8 @@ function useCustomStatusAnimationAboveTopbar({
|
|
|
5677
6068
|
FunDirectExecutionStatus,
|
|
5678
6069
|
{
|
|
5679
6070
|
directExecution: directExecutionInfo,
|
|
5680
|
-
isActiveCheckout
|
|
6071
|
+
isActiveCheckout,
|
|
6072
|
+
dangerousCustomDelayedAutoTriggerCutoff: isLighterNativeDeposit ? LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF : void 0
|
|
5681
6073
|
}
|
|
5682
6074
|
) : /* @__PURE__ */ React29.createElement(
|
|
5683
6075
|
FunCheckoutStatus,
|
|
@@ -5841,16 +6233,16 @@ import React45, {
|
|
|
5841
6233
|
useCallback as useCallback12,
|
|
5842
6234
|
useContext as useContext10,
|
|
5843
6235
|
useEffect as useEffect17,
|
|
5844
|
-
useRef as
|
|
6236
|
+
useRef as useRef8
|
|
5845
6237
|
} from "react";
|
|
5846
6238
|
import { createPortal } from "react-dom";
|
|
5847
6239
|
import { RemoveScroll } from "react-remove-scroll";
|
|
5848
6240
|
import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
|
|
5849
6241
|
|
|
5850
6242
|
// src/hooks/useScrollDivider.ts
|
|
5851
|
-
import { useEffect as useEffect13, useRef as
|
|
6243
|
+
import { useEffect as useEffect13, useRef as useRef6, useState as useState14 } from "react";
|
|
5852
6244
|
var useScrollDivider = () => {
|
|
5853
|
-
const ref =
|
|
6245
|
+
const ref = useRef6(null);
|
|
5854
6246
|
const [isTop, setIsTop] = useState14(true);
|
|
5855
6247
|
const [isScrollable, setIsScrollable] = useState14(false);
|
|
5856
6248
|
const [isScrolling, setIsScrolling] = useState14(false);
|
|
@@ -5908,7 +6300,9 @@ var ModalSizeOptions = {
|
|
|
5908
6300
|
MEDIUM: "medium",
|
|
5909
6301
|
WIDE: "wide"
|
|
5910
6302
|
};
|
|
5911
|
-
var ModalSizeContext = createContext10(
|
|
6303
|
+
var ModalSizeContext = createContext10(
|
|
6304
|
+
ModalSizeOptions.MEDIUM
|
|
6305
|
+
);
|
|
5912
6306
|
function ModalSizeProvider({
|
|
5913
6307
|
children,
|
|
5914
6308
|
modalSize
|
|
@@ -6167,7 +6561,7 @@ var ErrorBoundary = class extends Component {
|
|
|
6167
6561
|
var ErrorBoundary_default = ErrorBoundary;
|
|
6168
6562
|
|
|
6169
6563
|
// src/components/FunBottomBar/FunBottomBar.tsx
|
|
6170
|
-
import {
|
|
6564
|
+
import { isMobile as isMobile2 } from "@funkit/utils";
|
|
6171
6565
|
import React40 from "react";
|
|
6172
6566
|
|
|
6173
6567
|
// src/components/FunButton/FunButton.tsx
|
|
@@ -6509,7 +6903,7 @@ var FunBottomBar = ({
|
|
|
6509
6903
|
}) => {
|
|
6510
6904
|
const { t } = useFunkitTranslation();
|
|
6511
6905
|
const { uiCustomizations } = useFunkitConfig();
|
|
6512
|
-
const showTagline =
|
|
6906
|
+
const showTagline = useDynamicConfig("showpoweredtagline");
|
|
6513
6907
|
const powerTagline = showTagline ? /* @__PURE__ */ React40.createElement(FunPoweredTagline, null) : void 0;
|
|
6514
6908
|
const hasMultipleButtons = !!actionButtonProps && !!onClose;
|
|
6515
6909
|
const customButtonRadius = showTagline || hasMultipleButtons ? void 0 : isMobile2() ? "modalActionButtonMobile" : "modalActionButton";
|
|
@@ -6655,7 +7049,7 @@ function FunDivider({
|
|
|
6655
7049
|
}
|
|
6656
7050
|
|
|
6657
7051
|
// src/components/Dialog/FocusTrap.tsx
|
|
6658
|
-
import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as
|
|
7052
|
+
import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as useRef7 } from "react";
|
|
6659
7053
|
var moveFocusWithin = (element2, position) => {
|
|
6660
7054
|
const focusableElements = element2.querySelectorAll(
|
|
6661
7055
|
"button:not(:disabled), a[href]"
|
|
@@ -6666,7 +7060,7 @@ var moveFocusWithin = (element2, position) => {
|
|
|
6666
7060
|
focusableElements[position === "end" ? focusableElements.length - 1 : 0].focus();
|
|
6667
7061
|
};
|
|
6668
7062
|
function FocusTrap(props) {
|
|
6669
|
-
const contentRef =
|
|
7063
|
+
const contentRef = useRef7(null);
|
|
6670
7064
|
useEffect14(() => {
|
|
6671
7065
|
const previouslyActiveElement = document.activeElement;
|
|
6672
7066
|
return () => {
|
|
@@ -7042,7 +7436,7 @@ var DialogBottom = ({
|
|
|
7042
7436
|
...boxProps
|
|
7043
7437
|
}) => {
|
|
7044
7438
|
const { activeTheme } = useActiveTheme();
|
|
7045
|
-
const ref =
|
|
7439
|
+
const ref = useRef8(null);
|
|
7046
7440
|
const extraBottomPadding = getValueFromPxString(activeTheme.spacing.modalBaseHorizontalPadding) * 2 - getValueFromPxString(activeTheme.spacing.modalPaddingBottomLower);
|
|
7047
7441
|
const hasNoChildren = useBottomBarHasNoChildren();
|
|
7048
7442
|
const paddingBottom = (() => {
|
|
@@ -7204,11 +7598,11 @@ import {
|
|
|
7204
7598
|
solanaChain as solanaChain4
|
|
7205
7599
|
} from "@funkit/chains";
|
|
7206
7600
|
import {
|
|
7207
|
-
FlagKey as
|
|
7601
|
+
FlagKey as FlagKey11,
|
|
7208
7602
|
formatCryptoAndStringify as formatCryptoAndStringify2,
|
|
7209
7603
|
formatCurrencyAndStringify as formatCurrencyAndStringify3
|
|
7210
7604
|
} from "@funkit/utils";
|
|
7211
|
-
import React72, { useEffect as useEffect28, useMemo as
|
|
7605
|
+
import React72, { useEffect as useEffect28, useMemo as useMemo21, useRef as useRef15, useState as useState27 } from "react";
|
|
7212
7606
|
import { createPortal as createPortal2 } from "react-dom";
|
|
7213
7607
|
import { useDebounce } from "use-debounce";
|
|
7214
7608
|
import { useAccount as useAccount4 } from "wagmi";
|
|
@@ -7217,14 +7611,14 @@ import { useAccount as useAccount4 } from "wagmi";
|
|
|
7217
7611
|
import React62 from "react";
|
|
7218
7612
|
|
|
7219
7613
|
// src/components/Dropdown/ChainDropdown.tsx
|
|
7220
|
-
import { FlagKey as
|
|
7614
|
+
import { FlagKey as FlagKey6 } from "@funkit/utils";
|
|
7221
7615
|
import React59 from "react";
|
|
7222
7616
|
|
|
7223
7617
|
// src/components/FunTooltip/FunTooltip.tsx
|
|
7224
7618
|
import React47, {
|
|
7225
7619
|
useCallback as useCallback13,
|
|
7226
7620
|
useEffect as useEffect18,
|
|
7227
|
-
useRef as
|
|
7621
|
+
useRef as useRef9,
|
|
7228
7622
|
useState as useState16
|
|
7229
7623
|
} from "react";
|
|
7230
7624
|
import clsx8 from "clsx";
|
|
@@ -7310,9 +7704,9 @@ var FunTooltip = ({
|
|
|
7310
7704
|
const [isDisplayed, setIsDisplayed] = useState16(false);
|
|
7311
7705
|
const [isSafeToRenderInCenter, setIsSafeToRenderInCenter] = useState16(false);
|
|
7312
7706
|
const [isSafeToRenderInRight, setIsSafeToRenderInRight] = useState16(false);
|
|
7313
|
-
const startDelayRef =
|
|
7314
|
-
const delayRef =
|
|
7315
|
-
const tooltipRef =
|
|
7707
|
+
const startDelayRef = useRef9();
|
|
7708
|
+
const delayRef = useRef9();
|
|
7709
|
+
const tooltipRef = useRef9(null);
|
|
7316
7710
|
const show = useCallback13(
|
|
7317
7711
|
(startHiding) => {
|
|
7318
7712
|
startDelayRef.current = setTimeout(() => {
|
|
@@ -7404,7 +7798,7 @@ var FunTooltip = ({
|
|
|
7404
7798
|
// src/components/Dropdown/BaseDropdown.tsx
|
|
7405
7799
|
import { isMobile as isMobile4, noop as noop2 } from "@funkit/utils";
|
|
7406
7800
|
import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
|
|
7407
|
-
import React56, { useCallback as useCallback14, useEffect as useEffect21, useMemo as
|
|
7801
|
+
import React56, { useCallback as useCallback14, useEffect as useEffect21, useMemo as useMemo15, useRef as useRef11, useState as useState18 } from "react";
|
|
7408
7802
|
|
|
7409
7803
|
// src/consts/layout.ts
|
|
7410
7804
|
var VERTICAL_SECTION_GAP = "18";
|
|
@@ -7831,12 +8225,12 @@ var FunNoResults = ({
|
|
|
7831
8225
|
|
|
7832
8226
|
// src/components/FunSelect/FunClickOutside.tsx
|
|
7833
8227
|
import React53 from "react";
|
|
7834
|
-
import { useEffect as useEffect20, useRef as
|
|
8228
|
+
import { useEffect as useEffect20, useRef as useRef10 } from "react";
|
|
7835
8229
|
function FunClickOutside({
|
|
7836
8230
|
children,
|
|
7837
8231
|
onClick
|
|
7838
8232
|
}) {
|
|
7839
|
-
const wrapperRef =
|
|
8233
|
+
const wrapperRef = useRef10(null);
|
|
7840
8234
|
useEffect20(() => {
|
|
7841
8235
|
const handleClickListener = (event) => {
|
|
7842
8236
|
const clickedInside = wrapperRef.current?.contains(
|
|
@@ -8034,11 +8428,11 @@ function BaseDropdown({
|
|
|
8034
8428
|
const [isOpened, setIsOpened] = useState18();
|
|
8035
8429
|
const [searchInput, setSearchInput] = useState18("");
|
|
8036
8430
|
const selectedOption = options.find((option) => option.value === value);
|
|
8037
|
-
const prevIsOpenedRef =
|
|
8431
|
+
const prevIsOpenedRef = useRef11(false);
|
|
8038
8432
|
const handleSearch = (event) => {
|
|
8039
8433
|
setSearchInput(event.target.value);
|
|
8040
8434
|
};
|
|
8041
|
-
const filteredOptions =
|
|
8435
|
+
const filteredOptions = useMemo15(
|
|
8042
8436
|
() => options.filter(
|
|
8043
8437
|
(singleOption) => singleOption.label.toLowerCase().includes(searchInput?.toLowerCase())
|
|
8044
8438
|
),
|
|
@@ -8311,9 +8705,9 @@ var ChainDropdown = ({
|
|
|
8311
8705
|
testId
|
|
8312
8706
|
}) => {
|
|
8313
8707
|
const { t } = useFunkitTranslation();
|
|
8314
|
-
const defaultChainIdJson = useFlag(
|
|
8708
|
+
const defaultChainIdJson = useFlag(FlagKey6.TokenTransferDefaultChainId);
|
|
8315
8709
|
const defaultChainId = safeJSONParse(defaultChainIdJson);
|
|
8316
|
-
const chainSortOrderJson = useFlag(
|
|
8710
|
+
const chainSortOrderJson = useFlag(FlagKey6.ChainIdSortOrder);
|
|
8317
8711
|
const chainSortOrder = safeJSONParse(chainSortOrderJson) || [];
|
|
8318
8712
|
const chainIds = getSortedChainIds();
|
|
8319
8713
|
const options = allowUnselect ? [DEFAULT_VALUE, ...chainIds] : chainIds;
|
|
@@ -8423,7 +8817,7 @@ var ChainDropdown = ({
|
|
|
8423
8817
|
};
|
|
8424
8818
|
|
|
8425
8819
|
// src/components/Dropdown/TokenDropdown.tsx
|
|
8426
|
-
import { FlagKey as
|
|
8820
|
+
import { FlagKey as FlagKey7 } from "@funkit/utils";
|
|
8427
8821
|
import React61, { useState as useState19 } from "react";
|
|
8428
8822
|
|
|
8429
8823
|
// src/utils/flags/patches/enable-bitcoin-patch.ts
|
|
@@ -8487,7 +8881,7 @@ var getTokenIconUrl = (symbol, tokens) => {
|
|
|
8487
8881
|
|
|
8488
8882
|
// src/components/FunBadge/FunBadge.tsx
|
|
8489
8883
|
import clsx12 from "clsx";
|
|
8490
|
-
import React60, { useMemo as
|
|
8884
|
+
import React60, { useMemo as useMemo16 } from "react";
|
|
8491
8885
|
|
|
8492
8886
|
// src/components/FunBadge/FunBadge.css.ts
|
|
8493
8887
|
var badgeShineStyle = "bc2uzy2";
|
|
@@ -8511,7 +8905,7 @@ function FunBadge({
|
|
|
8511
8905
|
hasShine = false
|
|
8512
8906
|
}) {
|
|
8513
8907
|
const { t } = useFunkitTranslation();
|
|
8514
|
-
const borderStyle =
|
|
8908
|
+
const borderStyle = useMemo16(() => {
|
|
8515
8909
|
return borderColor ? { borderStyle: "solid", borderColor, borderWidth: "1" } : {};
|
|
8516
8910
|
}, [borderColor]);
|
|
8517
8911
|
return /* @__PURE__ */ React60.createElement(
|
|
@@ -8568,12 +8962,12 @@ var NewTokenBadge = ({ iconSymbol }) => {
|
|
|
8568
8962
|
// src/components/Dropdown/TokenDropdown.tsx
|
|
8569
8963
|
var TOKEN_ICON_SIZE = 16;
|
|
8570
8964
|
var useNewTokens = () => {
|
|
8571
|
-
const enableBitcoin = useFlag(
|
|
8572
|
-
const bannerJson = useFlag(
|
|
8965
|
+
const enableBitcoin = useFlag(FlagKey7.EnableBitcoin);
|
|
8966
|
+
const bannerJson = useFlag(FlagKey7.NewTokenAssetSelectionBanner);
|
|
8573
8967
|
const bannerData = useSafeJSONParse(bannerJson);
|
|
8574
8968
|
const addBitcoinToNewTokensMiddleware = enableBitcoin ? addBitcoinToNewTokens : void 0;
|
|
8575
8969
|
const newBadgeTokensJson = useFlag(
|
|
8576
|
-
|
|
8970
|
+
FlagKey7.TokenTransferNewTokens,
|
|
8577
8971
|
void 0,
|
|
8578
8972
|
addBitcoinToNewTokensMiddleware
|
|
8579
8973
|
);
|
|
@@ -8594,7 +8988,7 @@ var TokenDropdown = ({
|
|
|
8594
8988
|
hideNewTokenBadge,
|
|
8595
8989
|
testId
|
|
8596
8990
|
}) => {
|
|
8597
|
-
const defaultTokensJson = useFlag(
|
|
8991
|
+
const defaultTokensJson = useFlag(FlagKey7.TokenTransferDefaultTokens);
|
|
8598
8992
|
const defaultTokens = safeJSONParse(defaultTokensJson);
|
|
8599
8993
|
const enabledTokens = assets[selectedChainId];
|
|
8600
8994
|
const allTokens = getSortedTokens();
|
|
@@ -9016,10 +9410,10 @@ import {
|
|
|
9016
9410
|
formatPercent,
|
|
9017
9411
|
noop as noop4
|
|
9018
9412
|
} from "@funkit/utils";
|
|
9019
|
-
import React67, { useEffect as useEffect22, useMemo as
|
|
9413
|
+
import React67, { useEffect as useEffect22, useMemo as useMemo17, useState as useState20 } from "react";
|
|
9020
9414
|
import clsx14 from "clsx";
|
|
9021
9415
|
import { motion as motion6, useAnimationControls } from "motion/react";
|
|
9022
|
-
import { mainnet as
|
|
9416
|
+
import { mainnet as mainnet6 } from "viem/chains";
|
|
9023
9417
|
|
|
9024
9418
|
// src/domains/relay.ts
|
|
9025
9419
|
var KATANA_BRIDGE_ALERT_THRESHOLD_PERCENT = 0.5;
|
|
@@ -9216,7 +9610,7 @@ function computeDigest(relayQuoteMetadata, uiCustomizations, totalPriceImpactPer
|
|
|
9216
9610
|
value: void 0
|
|
9217
9611
|
};
|
|
9218
9612
|
}
|
|
9219
|
-
const isMainnet = details?.currencyIn?.currency?.chainId ===
|
|
9613
|
+
const isMainnet = details?.currencyIn?.currency?.chainId === mainnet6.id || details?.currencyOut?.currency?.chainId === mainnet6.id;
|
|
9220
9614
|
const percent = formatPercent(totalPriceImpactPercent);
|
|
9221
9615
|
return {
|
|
9222
9616
|
isMainnet,
|
|
@@ -9502,7 +9896,7 @@ function PaymentFeesSummary({
|
|
|
9502
9896
|
setIsExpanded(false);
|
|
9503
9897
|
}
|
|
9504
9898
|
}, [valuesNotAvailable, isExpanded]);
|
|
9505
|
-
const { collapsed: collapsedItem, expanded: expandedItems } =
|
|
9899
|
+
const { collapsed: collapsedItem, expanded: expandedItems } = useMemo17(() => {
|
|
9506
9900
|
const fees = quote?.finalFeesBreakdown ?? fallbackFees;
|
|
9507
9901
|
if (!fees) {
|
|
9508
9902
|
return NO_DATA;
|
|
@@ -9666,7 +10060,7 @@ var EvmWallet = ({ size = 20 }) => /* @__PURE__ */ React68.createElement(
|
|
|
9666
10060
|
);
|
|
9667
10061
|
|
|
9668
10062
|
// src/hooks/queries/useWithdrawalQuote.ts
|
|
9669
|
-
import { useQuery as
|
|
10063
|
+
import { useQuery as useQuery7 } from "@tanstack/react-query";
|
|
9670
10064
|
import { useConfig as useConfig2 } from "wagmi";
|
|
9671
10065
|
|
|
9672
10066
|
// src/domains/quote.ts
|
|
@@ -10116,7 +10510,7 @@ function useWithdrawalQuote({
|
|
|
10116
10510
|
);
|
|
10117
10511
|
const enabled = !!apiKey && !!targetAsset && !!sourceAmount && !!recipientAddress && !!chainId && !!symbol && !!isValidAddress && !!checkoutItem;
|
|
10118
10512
|
const { logEvent } = useTrack();
|
|
10119
|
-
const query =
|
|
10513
|
+
const query = useQuery7({
|
|
10120
10514
|
queryKey: [
|
|
10121
10515
|
"withdrawal",
|
|
10122
10516
|
"quote",
|
|
@@ -10192,12 +10586,12 @@ function useWithdrawalQuote({
|
|
|
10192
10586
|
}
|
|
10193
10587
|
|
|
10194
10588
|
// src/hooks/queries/useWithdrawalRisk.ts
|
|
10195
|
-
import { useQuery as
|
|
10196
|
-
import { useEffect as useEffect23, useRef as
|
|
10589
|
+
import { useQuery as useQuery8 } from "@tanstack/react-query";
|
|
10590
|
+
import { useEffect as useEffect23, useRef as useRef12 } from "react";
|
|
10197
10591
|
import { isAddress as isAddress2 } from "viem";
|
|
10198
10592
|
var useWithdrawalRisk = (apiKey, receiveAddress) => {
|
|
10199
|
-
const lastRiskyAddressRef =
|
|
10200
|
-
const query =
|
|
10593
|
+
const lastRiskyAddressRef = useRef12(null);
|
|
10594
|
+
const query = useQuery8({
|
|
10201
10595
|
queryKey: ["withdrawal", "addressRisk", apiKey, receiveAddress],
|
|
10202
10596
|
queryFn: async () => {
|
|
10203
10597
|
try {
|
|
@@ -10237,17 +10631,17 @@ import {
|
|
|
10237
10631
|
convertFunToRelayTokenAddress,
|
|
10238
10632
|
getRelayAssetPriceInfo
|
|
10239
10633
|
} from "@funkit/fun-relay";
|
|
10240
|
-
import { skipToken, useQuery as
|
|
10634
|
+
import { skipToken, useQuery as useQuery10 } from "@tanstack/react-query";
|
|
10241
10635
|
|
|
10242
10636
|
// src/hooks/queries/useErc20Asset.ts
|
|
10243
10637
|
import { getAssetErc20ByChainAndSymbol } from "@funkit/api-base";
|
|
10244
|
-
import { useQuery as
|
|
10638
|
+
import { useQuery as useQuery9 } from "@tanstack/react-query";
|
|
10245
10639
|
var useErc20Asset = ({
|
|
10246
10640
|
chainId,
|
|
10247
10641
|
symbol
|
|
10248
10642
|
}) => {
|
|
10249
10643
|
const { apiKey } = useFunkitConfig();
|
|
10250
|
-
const query =
|
|
10644
|
+
const query = useQuery9({
|
|
10251
10645
|
queryKey: ["erc20Asset", chainId, symbol],
|
|
10252
10646
|
queryFn: async () => {
|
|
10253
10647
|
if (!apiKey || !chainId || !symbol) {
|
|
@@ -10299,7 +10693,7 @@ function useAssetAddressPrice({
|
|
|
10299
10693
|
refetchInterval = 1e4
|
|
10300
10694
|
}) {
|
|
10301
10695
|
const { apiKey } = useFunkitConfig();
|
|
10302
|
-
const { data, error, isLoading } =
|
|
10696
|
+
const { data, error, isLoading } = useQuery10({
|
|
10303
10697
|
queryKey: ["getAssetPriceInfo", chainId, assetTokenAddress],
|
|
10304
10698
|
queryFn: chainId && assetTokenAddress ? async () => {
|
|
10305
10699
|
const isRelayPrimary = RELAY_SHORT_CIRCUIT_CHAIN_IDS.includes(chainId);
|
|
@@ -10357,13 +10751,13 @@ var useAssetSymbolPrice = ({
|
|
|
10357
10751
|
};
|
|
10358
10752
|
|
|
10359
10753
|
// src/hooks/useTokenChain.ts
|
|
10360
|
-
import { FlagKey as
|
|
10754
|
+
import { FlagKey as FlagKey9 } from "@funkit/utils";
|
|
10361
10755
|
import { useEffect as useEffect24, useState as useState21 } from "react";
|
|
10362
10756
|
import { polygon as polygon2 } from "viem/chains";
|
|
10363
10757
|
|
|
10364
10758
|
// src/hooks/useEnabledTokenTransferChainTokens.ts
|
|
10365
|
-
import { bitcoinChain
|
|
10366
|
-
import { FlagKey as
|
|
10759
|
+
import { bitcoinChain, solanaChain as solanaChain2 } from "@funkit/chains";
|
|
10760
|
+
import { FlagKey as FlagKey8 } from "@funkit/utils";
|
|
10367
10761
|
import { base as base4 } from "viem/chains";
|
|
10368
10762
|
|
|
10369
10763
|
// src/hooks/useIsUsUser.ts
|
|
@@ -10380,14 +10774,14 @@ function useIsUsBankrUser() {
|
|
|
10380
10774
|
// src/hooks/useEnabledTokenTransferChainTokens.ts
|
|
10381
10775
|
function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
|
|
10382
10776
|
const isBankrUsUser = useIsUsBankrUser();
|
|
10383
|
-
const enableBitcoin = useFlag(
|
|
10777
|
+
const enableBitcoin = useFlag(FlagKey8.EnableBitcoin);
|
|
10384
10778
|
const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
|
|
10385
10779
|
const depositAssets = useFlag(
|
|
10386
|
-
|
|
10780
|
+
FlagKey8.TokenTransferSourceChainsAndAssets,
|
|
10387
10781
|
void 0,
|
|
10388
10782
|
addBitcoinToSourceChainsAndAssetsMiddleware
|
|
10389
10783
|
);
|
|
10390
|
-
const withdrawalAssets = useFlag(
|
|
10784
|
+
const withdrawalAssets = useFlag(FlagKey8.WithdrawalChainsAndAssets);
|
|
10391
10785
|
const assetsJsonString = isWithdrawal ? withdrawalAssets : depositAssets;
|
|
10392
10786
|
const assets = safeJSONParse(assetsJsonString);
|
|
10393
10787
|
if (!assets) {
|
|
@@ -10402,7 +10796,7 @@ function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
|
|
|
10402
10796
|
if (isSolana && !hasSolanaAddress && !isWithdrawal) {
|
|
10403
10797
|
return acc;
|
|
10404
10798
|
}
|
|
10405
|
-
const isBitcoin = chainId ===
|
|
10799
|
+
const isBitcoin = chainId === bitcoinChain.id;
|
|
10406
10800
|
if (isBitcoin && !hasBitcoinAddress && !isWithdrawal) {
|
|
10407
10801
|
return acc;
|
|
10408
10802
|
}
|
|
@@ -10424,7 +10818,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
|
|
|
10424
10818
|
transferInit ?? null,
|
|
10425
10819
|
isWithdrawal
|
|
10426
10820
|
);
|
|
10427
|
-
const defaultChainIdFlag = useFlag(
|
|
10821
|
+
const defaultChainIdFlag = useFlag(FlagKey9.TokenTransferDefaultChainId);
|
|
10428
10822
|
const defaultChainId = defaultValues?.chainId ?? Number(defaultChainIdFlag);
|
|
10429
10823
|
const validDefaultChainId = filteredAssets[defaultChainId] !== void 0 ? defaultChainId : polygon2.id;
|
|
10430
10824
|
const [selectedChainId, setSelectedChainId] = useState21(validDefaultChainId);
|
|
@@ -10723,10 +11117,10 @@ function usePreparedWalletConnectors() {
|
|
|
10723
11117
|
import { useState as useState26 } from "react";
|
|
10724
11118
|
|
|
10725
11119
|
// src/hooks/useAutoClearState.ts
|
|
10726
|
-
import { useCallback as useCallback15, useEffect as useEffect25, useRef as
|
|
11120
|
+
import { useCallback as useCallback15, useEffect as useEffect25, useRef as useRef13, useState as useState22 } from "react";
|
|
10727
11121
|
function useAutoClearState(initialValue = null) {
|
|
10728
11122
|
const [state, setState] = useState22(initialValue);
|
|
10729
|
-
const timeoutRef =
|
|
11123
|
+
const timeoutRef = useRef13();
|
|
10730
11124
|
useEffect25(() => {
|
|
10731
11125
|
return () => {
|
|
10732
11126
|
if (timeoutRef.current !== void 0) {
|
|
@@ -10753,72 +11147,6 @@ function useAutoClearState(initialValue = null) {
|
|
|
10753
11147
|
import { ClientError as ClientError2 } from "@funkit/utils";
|
|
10754
11148
|
import { useState as useState25 } from "react";
|
|
10755
11149
|
|
|
10756
|
-
// src/hooks/statsig/useDynamicConfig.ts
|
|
10757
|
-
import { useDynamicConfig as useStatsigDynamicConfig } from "@statsig/react-bindings";
|
|
10758
|
-
|
|
10759
|
-
// src/__generated__/default_configs.ts
|
|
10760
|
-
var default_configs_default = {
|
|
10761
|
-
addressblacklist: {
|
|
10762
|
-
value: [
|
|
10763
|
-
"0x7b97b46D35a28B561d47F50CFB9a2735E506e59d",
|
|
10764
|
-
"0x409ad08cc6CA757f69Fb80250a424B9eFeB99807",
|
|
10765
|
-
"0x02A86f51aA7B8b1c17c30364748d5Ae4a0727E23",
|
|
10766
|
-
"0x64131b60502C01362639CC5cfE1a1efB6Be1165A",
|
|
10767
|
-
"0xb84440Ee8BAD69c14755bBb7093f861c3512E3D1"
|
|
10768
|
-
]
|
|
10769
|
-
},
|
|
10770
|
-
array_of_strings: {
|
|
10771
|
-
value: []
|
|
10772
|
-
},
|
|
10773
|
-
blockedcountries: {
|
|
10774
|
-
value: [
|
|
10775
|
-
"AF",
|
|
10776
|
-
"BY",
|
|
10777
|
-
"MM",
|
|
10778
|
-
"CF",
|
|
10779
|
-
"CU",
|
|
10780
|
-
"CD",
|
|
10781
|
-
"IR",
|
|
10782
|
-
"LB",
|
|
10783
|
-
"LY",
|
|
10784
|
-
"NI",
|
|
10785
|
-
"KP",
|
|
10786
|
-
"UA",
|
|
10787
|
-
"SO",
|
|
10788
|
-
"SS",
|
|
10789
|
-
"SY",
|
|
10790
|
-
"VE"
|
|
10791
|
-
]
|
|
10792
|
-
},
|
|
10793
|
-
boolean: {
|
|
10794
|
-
value: false
|
|
10795
|
-
},
|
|
10796
|
-
brokerage_hide_you_receive: {
|
|
10797
|
-
value: false
|
|
10798
|
-
},
|
|
10799
|
-
showinfobanner: {
|
|
10800
|
-
value: {
|
|
10801
|
-
message: "",
|
|
10802
|
-
expireAtMs: 1,
|
|
10803
|
-
type: "announcement"
|
|
10804
|
-
}
|
|
10805
|
-
},
|
|
10806
|
-
showpoweredtagline: {
|
|
10807
|
-
value: false
|
|
10808
|
-
},
|
|
10809
|
-
supportedexchangesv2: {
|
|
10810
|
-
value: []
|
|
10811
|
-
}
|
|
10812
|
-
};
|
|
10813
|
-
|
|
10814
|
-
// src/hooks/statsig/useDynamicConfig.ts
|
|
10815
|
-
var useDynamicConfig = (name) => {
|
|
10816
|
-
const config = useStatsigDynamicConfig(name);
|
|
10817
|
-
const fallback2 = default_configs_default[name];
|
|
10818
|
-
const value = config.get("value", fallback2.value);
|
|
10819
|
-
return value;
|
|
10820
|
-
};
|
|
10821
|
-
|
|
10822
11150
|
// src/hooks/useIsBlacklisted.ts
|
|
10823
11151
|
var useIsBlacklisted = (walletAddress, customRecipient) => {
|
|
10824
11152
|
const addressblacklist = useDynamicConfig("addressblacklist");
|
|
@@ -10843,13 +11171,13 @@ import { useConfig as useConfig3 } from "wagmi";
|
|
|
10843
11171
|
// src/hooks/useBluvo.ts
|
|
10844
11172
|
import { bluvoGetWithdrawableBalanceById as bluvoGetWithdrawableBalanceById2 } from "@funkit/api-base";
|
|
10845
11173
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO4 } from "@funkit/chains";
|
|
10846
|
-
import { keepPreviousData, useQuery as
|
|
10847
|
-
import { useCallback as useCallback16, useMemo as
|
|
11174
|
+
import { keepPreviousData, useQuery as useQuery11 } from "@tanstack/react-query";
|
|
11175
|
+
import { useCallback as useCallback16, useMemo as useMemo20 } from "react";
|
|
10848
11176
|
|
|
10849
11177
|
// src/domains/wallet.ts
|
|
10850
11178
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO2 } from "@funkit/chains";
|
|
10851
11179
|
import { isNotNullish as isNotNullish2 } from "@funkit/utils";
|
|
10852
|
-
import { mainnet as
|
|
11180
|
+
import { mainnet as mainnet7, polygon as polygon3 } from "viem/chains";
|
|
10853
11181
|
|
|
10854
11182
|
// src/utils/assets.ts
|
|
10855
11183
|
import { formatUnits } from "viem";
|
|
@@ -10895,14 +11223,14 @@ import { arbitrum as arbitrum3 } from "viem/chains";
|
|
|
10895
11223
|
|
|
10896
11224
|
// src/hooks/useTokenTransfer.ts
|
|
10897
11225
|
import {
|
|
10898
|
-
bitcoinChain as
|
|
11226
|
+
bitcoinChain as bitcoinChain2,
|
|
10899
11227
|
hyperEvmChain,
|
|
10900
11228
|
monadChain,
|
|
10901
11229
|
solanaChain as solanaChain3
|
|
10902
11230
|
} from "@funkit/chains";
|
|
10903
|
-
import { FlagKey as
|
|
10904
|
-
import { useMemo as
|
|
10905
|
-
import { arbitrum as arbitrum2, mainnet as
|
|
11231
|
+
import { FlagKey as FlagKey10 } from "@funkit/utils";
|
|
11232
|
+
import { useMemo as useMemo18 } from "react";
|
|
11233
|
+
import { arbitrum as arbitrum2, mainnet as mainnet8, polygon as polygon4 } from "viem/chains";
|
|
10906
11234
|
|
|
10907
11235
|
// src/utils/transfer.ts
|
|
10908
11236
|
var getTransferTokenQrCodeUri = (props) => {
|
|
@@ -10925,7 +11253,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
10925
11253
|
const { apiKey } = useFunkitConfig();
|
|
10926
11254
|
const { checkoutItem } = useCheckoutContext();
|
|
10927
11255
|
const enableUniversal = useFlag(
|
|
10928
|
-
|
|
11256
|
+
FlagKey10.EnableTokenTransferUniversalDepositAddress,
|
|
10929
11257
|
false
|
|
10930
11258
|
);
|
|
10931
11259
|
const estPriceImpact = usePriceImpactEstimation(
|
|
@@ -10947,12 +11275,12 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
10947
11275
|
const isUsdceOnPolygon = isPolygon && selectedToken === "USDC.e";
|
|
10948
11276
|
const isUsdcOnPolygon = isPolygon && selectedToken === "USDC";
|
|
10949
11277
|
const showOriginalRecipient = isBankrUsUser || !enableUniversal && (isUsdceOnPolygon || isUsdcOnPolygon);
|
|
10950
|
-
const funDepositAddress = selectedChainId === solanaChain3.id ? transferInit?.solanaAddr : selectedChainId ===
|
|
11278
|
+
const funDepositAddress = selectedChainId === solanaChain3.id ? transferInit?.solanaAddr : selectedChainId === bitcoinChain2.id ? transferInit?.btcAddrSegwit : transferInit?.depositAddr;
|
|
10951
11279
|
const blockchainType = (() => {
|
|
10952
11280
|
if (selectedChainId === solanaChain3.id) {
|
|
10953
11281
|
return "solana";
|
|
10954
11282
|
}
|
|
10955
|
-
if (selectedChainId ===
|
|
11283
|
+
if (selectedChainId === bitcoinChain2.id) {
|
|
10956
11284
|
return "bitcoin";
|
|
10957
11285
|
}
|
|
10958
11286
|
return "ethereum";
|
|
@@ -10979,7 +11307,7 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
10979
11307
|
};
|
|
10980
11308
|
var useMinTransferLimits = () => {
|
|
10981
11309
|
const { userIpInfo } = useFunkitUserIp();
|
|
10982
|
-
const minTransferValueJsonString = useFlag(
|
|
11310
|
+
const minTransferValueJsonString = useFlag(FlagKey10.MinTokenTransferValue);
|
|
10983
11311
|
const minTransferValue = safeJSONParse(
|
|
10984
11312
|
minTransferValueJsonString
|
|
10985
11313
|
);
|
|
@@ -10991,7 +11319,7 @@ var useMinTransferLimits = () => {
|
|
|
10991
11319
|
return limits;
|
|
10992
11320
|
};
|
|
10993
11321
|
function getMinTransferValueForChain(chainId, limits) {
|
|
10994
|
-
const MAINNET_IDS = [
|
|
11322
|
+
const MAINNET_IDS = [mainnet8.id, bitcoinChain2.id];
|
|
10995
11323
|
return MAINNET_IDS.includes(chainId) ? limits.mainnet : limits.nonMainnet;
|
|
10996
11324
|
}
|
|
10997
11325
|
var useMinTransferValue = (selectedChainId) => {
|
|
@@ -11009,7 +11337,7 @@ var useMinTransferValue = (selectedChainId) => {
|
|
|
11009
11337
|
};
|
|
11010
11338
|
var useMinTransferValues = (chainIds) => {
|
|
11011
11339
|
const limits = useMinTransferLimits();
|
|
11012
|
-
return
|
|
11340
|
+
return useMemo18(() => {
|
|
11013
11341
|
return chainIds.reduce(
|
|
11014
11342
|
(acc, id) => {
|
|
11015
11343
|
const limit = getMinTransferValueForChain(id, limits);
|
|
@@ -11280,8 +11608,8 @@ import { safeParseJson as safeParseJson3 } from "@funkit/utils";
|
|
|
11280
11608
|
import React69, {
|
|
11281
11609
|
useContext as useContext12,
|
|
11282
11610
|
useEffect as useEffect26,
|
|
11283
|
-
useMemo as
|
|
11284
|
-
useRef as
|
|
11611
|
+
useMemo as useMemo19,
|
|
11612
|
+
useRef as useRef14,
|
|
11285
11613
|
useState as useState23
|
|
11286
11614
|
} from "react";
|
|
11287
11615
|
import { createContext as createContext12 } from "react";
|
|
@@ -11303,7 +11631,7 @@ var FunkitBrokerageProvider = ({
|
|
|
11303
11631
|
}) => {
|
|
11304
11632
|
const { apiKey } = useFunkitConfig();
|
|
11305
11633
|
const isSandboxMode = useIsFunkitSandboxMode();
|
|
11306
|
-
const minTransferRef =
|
|
11634
|
+
const minTransferRef = useRef14(useMinTransferLimits());
|
|
11307
11635
|
const ORG_ID = isSandboxMode ? STAGE_ORG_ID : PROD_ORG_ID;
|
|
11308
11636
|
const PROJECT_ID = isSandboxMode ? STAGE_PROJECT_ID : PROD_PROJECT_ID;
|
|
11309
11637
|
const [authConnections, setAuthConnections] = useState23(
|
|
@@ -11340,7 +11668,7 @@ var FunkitBrokerageProvider = ({
|
|
|
11340
11668
|
setSelectedBrokerageAsset(null);
|
|
11341
11669
|
}
|
|
11342
11670
|
}, [bluvoClient.withdrawal?.status]);
|
|
11343
|
-
const brokerageMinMax =
|
|
11671
|
+
const brokerageMinMax = useMemo19(() => {
|
|
11344
11672
|
if (!selectedBrokerageAsset || !isBrokerageAsset(selectedBrokerageAsset)) {
|
|
11345
11673
|
return null;
|
|
11346
11674
|
}
|
|
@@ -11414,7 +11742,7 @@ var useBluvoExchangeBalance = ({
|
|
|
11414
11742
|
const deviceId = exchange && authorizedConnections?.[exchange] || "";
|
|
11415
11743
|
const isEnabled = !!exchange && !!deviceId;
|
|
11416
11744
|
const preferredChainId = checkoutItem?.initSettings.config.targetChain;
|
|
11417
|
-
const { data, isLoading, isError } =
|
|
11745
|
+
const { data, isLoading, isError } = useQuery11({
|
|
11418
11746
|
queryKey: ["bluvo-exchange-balance", deviceId, preferredChainId],
|
|
11419
11747
|
queryFn: async () => {
|
|
11420
11748
|
if (!exchange) {
|
|
@@ -11506,7 +11834,7 @@ var useBluvoSupportedExchanges = ({
|
|
|
11506
11834
|
filterBy = ["live" /* Live */]
|
|
11507
11835
|
}) => {
|
|
11508
11836
|
const { authorizedConnections } = useFunkitBrokerageContext();
|
|
11509
|
-
const exchangeOptions =
|
|
11837
|
+
const exchangeOptions = useMemo20(
|
|
11510
11838
|
() => SUPPORTED_EXCHANGES.filter(
|
|
11511
11839
|
({ status: exchangeStatus }) => filterBy.includes(exchangeStatus)
|
|
11512
11840
|
).map(({ exchange, status }) => {
|
|
@@ -12219,7 +12547,7 @@ function useWithdrawalAssets(config) {
|
|
|
12219
12547
|
},
|
|
12220
12548
|
true
|
|
12221
12549
|
);
|
|
12222
|
-
const excludedTokenStr = useFlag(
|
|
12550
|
+
const excludedTokenStr = useFlag(FlagKey11.WithdrawalExcludeTokens);
|
|
12223
12551
|
const excludedTokens = safeJSONParse(excludedTokenStr);
|
|
12224
12552
|
if (excludedTokens) {
|
|
12225
12553
|
for (const chainIdStr of Object.keys(excludedTokens)) {
|
|
@@ -12511,10 +12839,10 @@ var WithdrawContent = ({
|
|
|
12511
12839
|
recipientAddress
|
|
12512
12840
|
);
|
|
12513
12841
|
const isReceipentBlacklisted = isBlacklistedWithdrawAddress(recipientAddress);
|
|
12514
|
-
const lastTargetAssetErrorRef =
|
|
12515
|
-
const lastQuoteErrorRef =
|
|
12516
|
-
const lastRiskyRecipientRef =
|
|
12517
|
-
const lastBlacklistedRecipientRef =
|
|
12842
|
+
const lastTargetAssetErrorRef = useRef15(null);
|
|
12843
|
+
const lastQuoteErrorRef = useRef15(null);
|
|
12844
|
+
const lastRiskyRecipientRef = useRef15(null);
|
|
12845
|
+
const lastBlacklistedRecipientRef = useRef15(null);
|
|
12518
12846
|
useEffect28(() => {
|
|
12519
12847
|
if (!targetAssetFetchError) {
|
|
12520
12848
|
return;
|
|
@@ -12610,7 +12938,7 @@ var WithdrawContent = ({
|
|
|
12610
12938
|
selectedChainName,
|
|
12611
12939
|
t
|
|
12612
12940
|
});
|
|
12613
|
-
const errorNotification =
|
|
12941
|
+
const errorNotification = useMemo21(
|
|
12614
12942
|
() => getErrorNotification(
|
|
12615
12943
|
quoteErrorObject,
|
|
12616
12944
|
withdrawalError,
|
|
@@ -12941,7 +13269,7 @@ import { useAccount as useAccount5 } from "wagmi";
|
|
|
12941
13269
|
|
|
12942
13270
|
// src/components/FunPayments/FunPaymentMethods.tsx
|
|
12943
13271
|
import { BridgeCustomerStatus as BridgeCustomerStatus3 } from "@funkit/api-base";
|
|
12944
|
-
import { FlagKey as
|
|
13272
|
+
import { FlagKey as FlagKey13, formatCurrencyAndStringify as formatCurrencyAndStringify4 } from "@funkit/utils";
|
|
12945
13273
|
import React79, { useEffect as useEffect29 } from "react";
|
|
12946
13274
|
|
|
12947
13275
|
// src/domains/bridge.ts
|
|
@@ -13042,8 +13370,8 @@ import {
|
|
|
13042
13370
|
createBridgeBankAccount,
|
|
13043
13371
|
getBridgeKycLink
|
|
13044
13372
|
} from "@funkit/api-base";
|
|
13045
|
-
import { FlagKey as
|
|
13046
|
-
import { useQuery as
|
|
13373
|
+
import { FlagKey as FlagKey12 } from "@funkit/utils";
|
|
13374
|
+
import { useQuery as useQuery12, useQueryClient } from "@tanstack/react-query";
|
|
13047
13375
|
import { useCallback as useCallback18 } from "react";
|
|
13048
13376
|
var sepaCountryCode = [
|
|
13049
13377
|
// EU countries that are part of SEPA
|
|
@@ -13122,15 +13450,15 @@ function useFiatEnabled() {
|
|
|
13122
13450
|
const isEuSepaUser = sepaCountryCode.includes(
|
|
13123
13451
|
userIpInfo?.alpha2 || "PLACEHOLDER"
|
|
13124
13452
|
);
|
|
13125
|
-
const isTokenTransferEnabled =
|
|
13126
|
-
const isFiatEnabled = useFlag(
|
|
13453
|
+
const isTokenTransferEnabled = useIsQRCodeTransferEnabled();
|
|
13454
|
+
const isFiatEnabled = useFlag(FlagKey12.EnableFiatDeposit);
|
|
13127
13455
|
return isEuSepaUser && isTokenTransferEnabled && isFiatEnabled;
|
|
13128
13456
|
}
|
|
13129
13457
|
function useFrogAccounts() {
|
|
13130
13458
|
const { apiKey } = useFunkitConfig();
|
|
13131
13459
|
const { userInfo, isUserLoggedIn } = useGeneralWallet();
|
|
13132
13460
|
const userId = userInfo.id;
|
|
13133
|
-
const query =
|
|
13461
|
+
const query = useQuery12({
|
|
13134
13462
|
queryKey: ["frogSubAccounts", userId],
|
|
13135
13463
|
queryFn: () => fetchFrogAccounts(userId, { apiKey, logger }),
|
|
13136
13464
|
enabled: userId !== "0x" && isUserLoggedIn,
|
|
@@ -13166,7 +13494,7 @@ function useVirtualFiatAccounts() {
|
|
|
13166
13494
|
const bridgeSubAccount = frogSubAccounts?.find(
|
|
13167
13495
|
(subAccount) => subAccount.subAccountType === "bridge"
|
|
13168
13496
|
);
|
|
13169
|
-
const query =
|
|
13497
|
+
const query = useQuery12({
|
|
13170
13498
|
queryKey: ["useVirtualFiatAccounts", bridgeSubAccount?.guid],
|
|
13171
13499
|
queryFn: () => fetchAllFiatAccounts(bridgeSubAccount, { apiKey, logger }),
|
|
13172
13500
|
enabled: !!bridgeSubAccount,
|
|
@@ -13193,7 +13521,7 @@ function useMatchingVirtualFiatAccount(accounts) {
|
|
|
13193
13521
|
}
|
|
13194
13522
|
function useLoadKycLink(linkLoad) {
|
|
13195
13523
|
const { apiKey } = useFunkitConfig();
|
|
13196
|
-
const query =
|
|
13524
|
+
const query = useQuery12({
|
|
13197
13525
|
queryKey: ["kycLink", linkLoad.guid],
|
|
13198
13526
|
queryFn: async () => {
|
|
13199
13527
|
if (linkLoad.kycLink) {
|
|
@@ -13276,7 +13604,7 @@ import {
|
|
|
13276
13604
|
FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS3,
|
|
13277
13605
|
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7
|
|
13278
13606
|
} from "@funkit/chains";
|
|
13279
|
-
import { useMemo as
|
|
13607
|
+
import { useMemo as useMemo22 } from "react";
|
|
13280
13608
|
var processWalletAssets = (walletAssets, targetChain) => {
|
|
13281
13609
|
if (!walletAssets) {
|
|
13282
13610
|
return;
|
|
@@ -13296,6 +13624,10 @@ var processWalletAssets = (walletAssets, targetChain) => {
|
|
|
13296
13624
|
if (!isCheckoutOnMainnet && targetChain !== asset.chainId) {
|
|
13297
13625
|
return result;
|
|
13298
13626
|
}
|
|
13627
|
+
const MAINNET_WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
|
|
13628
|
+
if (asset.contractAddress.toLowerCase() === MAINNET_WETH_ADDRESS && asset.chainId === "1") {
|
|
13629
|
+
asset.symbol = "WETH";
|
|
13630
|
+
}
|
|
13299
13631
|
const chainSymbol = combineChainSymbolOrAddress({
|
|
13300
13632
|
chainId: asset.chainId,
|
|
13301
13633
|
symbolOrAddress: asset.symbol
|
|
@@ -13321,7 +13653,7 @@ var processWalletAssets = (walletAssets, targetChain) => {
|
|
|
13321
13653
|
};
|
|
13322
13654
|
function useWalletAssetHoldings(targetChain) {
|
|
13323
13655
|
const { walletAssets, isLoading, totalWalletAssetsUsd } = useWalletAssets();
|
|
13324
|
-
const processedAssets =
|
|
13656
|
+
const processedAssets = useMemo22(
|
|
13325
13657
|
() => processWalletAssets(walletAssets, targetChain),
|
|
13326
13658
|
[targetChain, walletAssets]
|
|
13327
13659
|
);
|
|
@@ -14160,7 +14492,7 @@ import React76 from "react";
|
|
|
14160
14492
|
|
|
14161
14493
|
// src/components/FunOptionBox/FunOptionBox.tsx
|
|
14162
14494
|
import clsx15 from "clsx";
|
|
14163
|
-
import React75, { useRef as
|
|
14495
|
+
import React75, { useRef as useRef16 } from "react";
|
|
14164
14496
|
|
|
14165
14497
|
// src/components/FunOptionBox/FunOptionBox.css.ts
|
|
14166
14498
|
var funOptionBoxStyle = { baseStyle: "_1rfcluh0", defaultBorder: "_1rsrm2f15a _1rsrm2f13f", transparentBorder: "_1rsrm2f18s _1rsrm2f13f _1rsrm2f1k", activeBorder: "_1rsrm2f13a", disabledOptionBorder: "_1rsrm2f154", defaultBackground: "_1rsrm2fzy _1rsrm2fmh", activeBackground: "_1rsrm2fzy _1rsrm2fqn _1rsrm2fqo" };
|
|
@@ -14186,7 +14518,7 @@ function FunOptionBox({
|
|
|
14186
14518
|
...boxProps
|
|
14187
14519
|
}) {
|
|
14188
14520
|
const isClickable = !!onClick && !disabled;
|
|
14189
|
-
const ref =
|
|
14521
|
+
const ref = useRef16(null);
|
|
14190
14522
|
return /* @__PURE__ */ React75.createElement(
|
|
14191
14523
|
Box,
|
|
14192
14524
|
{
|
|
@@ -14633,12 +14965,12 @@ var TransferPaymentMethodItem = ({
|
|
|
14633
14965
|
}) => {
|
|
14634
14966
|
const { t } = useFunkitTranslation();
|
|
14635
14967
|
const { textCustomizations } = useFunkitConfig();
|
|
14636
|
-
const enableBitcoin = useFlag(
|
|
14637
|
-
const bannerJson = useFlag(
|
|
14968
|
+
const enableBitcoin = useFlag(FlagKey13.EnableBitcoin);
|
|
14969
|
+
const bannerJson = useFlag(FlagKey13.NewTokenAssetSelectionBanner);
|
|
14638
14970
|
const bannerData = useSafeJSONParse(bannerJson);
|
|
14639
14971
|
const addBitcoinToSourceChainsAndAssetsMiddleware = enableBitcoin ? addBitcoinToSourceChainsAndAssets : void 0;
|
|
14640
14972
|
const depositAssetsJson = useFlag(
|
|
14641
|
-
|
|
14973
|
+
FlagKey13.TokenTransferSourceChainsAndAssets,
|
|
14642
14974
|
void 0,
|
|
14643
14975
|
addBitcoinToSourceChainsAndAssetsMiddleware
|
|
14644
14976
|
);
|
|
@@ -15187,7 +15519,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
|
|
|
15187
15519
|
|
|
15188
15520
|
// src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
|
|
15189
15521
|
import clsx18 from "clsx";
|
|
15190
|
-
import React98, { useCallback as useCallback21, useEffect as useEffect33, useMemo as
|
|
15522
|
+
import React98, { useCallback as useCallback21, useEffect as useEffect33, useMemo as useMemo25, useState as useState31 } from "react";
|
|
15191
15523
|
|
|
15192
15524
|
// src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
|
|
15193
15525
|
import React88 from "react";
|
|
@@ -15239,13 +15571,13 @@ var selectWrapperStyle = "_163ehmk1";
|
|
|
15239
15571
|
import {
|
|
15240
15572
|
getCheckoutsByUserId as getCheckoutsByUserId2
|
|
15241
15573
|
} from "@funkit/api-base";
|
|
15242
|
-
import { FlagKey as
|
|
15243
|
-
import { useQuery as
|
|
15574
|
+
import { FlagKey as FlagKey14 } from "@funkit/utils";
|
|
15575
|
+
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
15244
15576
|
var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
|
|
15245
15577
|
var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
|
|
15246
15578
|
var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
|
|
15247
15579
|
function useCheckoutRefreshInterval() {
|
|
15248
|
-
const str = useFlag(
|
|
15580
|
+
const str = useFlag(FlagKey14.CheckoutNotificationsRefreshInterval);
|
|
15249
15581
|
return safeJSONParse(str) || { listRefresh: 50 * 1e3, itemRefresh: 5 * 1e3 };
|
|
15250
15582
|
}
|
|
15251
15583
|
var useRecentCheckouts = ({
|
|
@@ -15255,7 +15587,7 @@ var useRecentCheckouts = ({
|
|
|
15255
15587
|
const { isUserLoggedIn, userInfo } = useGeneralWallet();
|
|
15256
15588
|
const { apiKey } = useFunkitConfig();
|
|
15257
15589
|
const { listRefresh } = useCheckoutRefreshInterval();
|
|
15258
|
-
const query =
|
|
15590
|
+
const query = useQuery13({
|
|
15259
15591
|
queryKey: ["checkouts", userInfo.id],
|
|
15260
15592
|
queryFn: async () => {
|
|
15261
15593
|
const checkouts = await getCheckoutsByUserId2({
|
|
@@ -15278,8 +15610,8 @@ var useRecentCheckouts = ({
|
|
|
15278
15610
|
import {
|
|
15279
15611
|
getDirectExecutionsByUserId as getDirectExecutionsByUserId2
|
|
15280
15612
|
} from "@funkit/api-base";
|
|
15281
|
-
import { useQuery as
|
|
15282
|
-
import { useMemo as
|
|
15613
|
+
import { useQuery as useQuery14 } from "@tanstack/react-query";
|
|
15614
|
+
import { useMemo as useMemo23 } from "react";
|
|
15283
15615
|
var isRecent2 = (de, timestampCutoff) => de.createdTimeMs > timestampCutoff;
|
|
15284
15616
|
function mergeMultiStepDirectExecutions(directExecutions) {
|
|
15285
15617
|
const directExecutionsByToTxId = {};
|
|
@@ -15323,7 +15655,7 @@ var useRecentDirectExecutions = ({
|
|
|
15323
15655
|
const { userInfo, isUserLoggedIn } = useGeneralWallet();
|
|
15324
15656
|
const { apiKey } = useFunkitConfig();
|
|
15325
15657
|
const { listRefresh } = useCheckoutRefreshInterval();
|
|
15326
|
-
const { data: directExecutions } =
|
|
15658
|
+
const { data: directExecutions } = useQuery14({
|
|
15327
15659
|
queryKey: ["directExecutions", userInfo.id],
|
|
15328
15660
|
queryFn: async () => {
|
|
15329
15661
|
const directExecutions2 = await getDirectExecutionsByUserId2({
|
|
@@ -15336,7 +15668,7 @@ var useRecentDirectExecutions = ({
|
|
|
15336
15668
|
refetchInterval: listRefresh,
|
|
15337
15669
|
enabled: isUserLoggedIn && isVisible
|
|
15338
15670
|
});
|
|
15339
|
-
const data =
|
|
15671
|
+
const data = useMemo23(() => {
|
|
15340
15672
|
if (!directExecutions) {
|
|
15341
15673
|
return directExecutions;
|
|
15342
15674
|
}
|
|
@@ -15408,7 +15740,7 @@ import { Trans as Trans3 } from "react-i18next";
|
|
|
15408
15740
|
import { CheckoutState as CheckoutState3 } from "@funkit/api-base";
|
|
15409
15741
|
import { SOLANA_MAINNET_CHAIN_ID } from "@funkit/chains";
|
|
15410
15742
|
import { formatAddress as formatAddress4, formatTimestamp } from "@funkit/utils";
|
|
15411
|
-
import React92, { useState as useState28, useRef as
|
|
15743
|
+
import React92, { useState as useState28, useRef as useRef17, useEffect as useEffect31 } from "react";
|
|
15412
15744
|
|
|
15413
15745
|
// src/utils/checkoutHistory.ts
|
|
15414
15746
|
var storageKey4 = "fkc-last-report-submit-time";
|
|
@@ -15642,7 +15974,7 @@ function OrderDetail({
|
|
|
15642
15974
|
}) {
|
|
15643
15975
|
const { t } = useFunkitTranslation();
|
|
15644
15976
|
const [isExpanded, setIsExpanded] = useState28(false);
|
|
15645
|
-
const contentRef =
|
|
15977
|
+
const contentRef = useRef17(null);
|
|
15646
15978
|
const isCheckoutItemLoaded = checkoutHistoryItem !== void 0;
|
|
15647
15979
|
return /* @__PURE__ */ React92.createElement(Box, { ref: contentRef, paddingX: "12" }, /* @__PURE__ */ React92.createElement(
|
|
15648
15980
|
Box,
|
|
@@ -15710,7 +16042,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f12m _1rsrm2f1f _1rsrm2f1c _1rsrm2fm4
|
|
|
15710
16042
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
|
|
15711
16043
|
import clsx16 from "clsx";
|
|
15712
16044
|
import { motion as motion7, useAnimate as useAnimate2 } from "motion/react";
|
|
15713
|
-
import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as
|
|
16045
|
+
import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as useRef18 } from "react";
|
|
15714
16046
|
|
|
15715
16047
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
|
|
15716
16048
|
var STATUS_SPINNER_BOTTOM_POSITION = -5;
|
|
@@ -16159,7 +16491,7 @@ var FunNotificationBannerIcon = ({
|
|
|
16159
16491
|
)
|
|
16160
16492
|
]);
|
|
16161
16493
|
}, [animate]);
|
|
16162
|
-
const statusRef =
|
|
16494
|
+
const statusRef = useRef18(status);
|
|
16163
16495
|
useEffect32(() => {
|
|
16164
16496
|
if (statusRef.current !== status) {
|
|
16165
16497
|
if (statusRef.current === "processing" && status === "completed") {
|
|
@@ -16391,11 +16723,11 @@ var FunNotificationBanner = ({
|
|
|
16391
16723
|
import {
|
|
16392
16724
|
getCheckoutByDepositAddress as getCheckoutByDepositAddress2
|
|
16393
16725
|
} from "@funkit/api-base";
|
|
16394
|
-
import { useQuery as
|
|
16726
|
+
import { useQuery as useQuery15 } from "@tanstack/react-query";
|
|
16395
16727
|
var useCheckout = (depositAddress, initial) => {
|
|
16396
16728
|
const { apiKey } = useFunkitConfig();
|
|
16397
16729
|
const { itemRefresh } = useCheckoutRefreshInterval();
|
|
16398
|
-
const query =
|
|
16730
|
+
const query = useQuery15({
|
|
16399
16731
|
queryKey: ["checkouts", "checkout", depositAddress],
|
|
16400
16732
|
queryFn: () => (
|
|
16401
16733
|
// biome-ignore lint/style/noNonNullAssertion: already checked for null
|
|
@@ -16600,7 +16932,7 @@ import {
|
|
|
16600
16932
|
formatTimestamp as formatTimestamp2,
|
|
16601
16933
|
isTokenEquivalent
|
|
16602
16934
|
} from "@funkit/utils";
|
|
16603
|
-
import React96, { useCallback as useCallback20, useMemo as
|
|
16935
|
+
import React96, { useCallback as useCallback20, useMemo as useMemo24, useRef as useRef19, useState as useState30 } from "react";
|
|
16604
16936
|
import { createPortal as createPortal3 } from "react-dom";
|
|
16605
16937
|
|
|
16606
16938
|
// src/hooks/useReceiveAmountLabel.ts
|
|
@@ -16661,7 +16993,7 @@ function FunDirectExecutionHistoryDetail({
|
|
|
16661
16993
|
]
|
|
16662
16994
|
);
|
|
16663
16995
|
const isWithdrawal = directExecution?.clientMetadata?.isWithdrawal;
|
|
16664
|
-
const buttonProps =
|
|
16996
|
+
const buttonProps = useMemo24(() => {
|
|
16665
16997
|
if (!isLoaded) {
|
|
16666
16998
|
return void 0;
|
|
16667
16999
|
}
|
|
@@ -16807,7 +17139,7 @@ function DirectExecutionOrderDetail({
|
|
|
16807
17139
|
}) {
|
|
16808
17140
|
const { t } = useFunkitTranslation();
|
|
16809
17141
|
const [isExpanded, setIsExpanded] = useState30(false);
|
|
16810
|
-
const contentRef =
|
|
17142
|
+
const contentRef = useRef19(null);
|
|
16811
17143
|
return /* @__PURE__ */ React96.createElement(Box, { ref: contentRef, paddingX: "12" }, /* @__PURE__ */ React96.createElement(
|
|
16812
17144
|
Box,
|
|
16813
17145
|
{
|
|
@@ -17040,7 +17372,7 @@ var CheckoutNotifications = ({
|
|
|
17040
17372
|
const [initialDirectExecutions, setInitialDirectExecutions] = useState31();
|
|
17041
17373
|
const [closedNotifications, setClosedNotifications] = useState31([]);
|
|
17042
17374
|
const { data: checkouts } = useRecentCheckouts({ isVisible });
|
|
17043
|
-
const filterFunc =
|
|
17375
|
+
const filterFunc = useMemo25(() => {
|
|
17044
17376
|
return variant && {
|
|
17045
17377
|
token_transfer: isTokenTransferDirectExecution,
|
|
17046
17378
|
withdrawal: isWithdrawalDirectExecution
|
|
@@ -17062,19 +17394,19 @@ var CheckoutNotifications = ({
|
|
|
17062
17394
|
}
|
|
17063
17395
|
setInitialDirectExecutions(directExecutions);
|
|
17064
17396
|
}, [initialDirectExecutions, directExecutions]);
|
|
17065
|
-
const displayedDirectExecutions =
|
|
17397
|
+
const displayedDirectExecutions = useMemo25(() => {
|
|
17066
17398
|
if (!directExecutions) {
|
|
17067
17399
|
return [];
|
|
17068
17400
|
}
|
|
17069
17401
|
return getUpdatedDirectExecutions(directExecutions, initialDirectExecutions).filter(({ txHash }) => !closedNotifications.includes(txHash)).slice(0, MAX_COUNT);
|
|
17070
17402
|
}, [initialDirectExecutions, directExecutions, closedNotifications]);
|
|
17071
|
-
const displayedCheckouts =
|
|
17403
|
+
const displayedCheckouts = useMemo25(() => {
|
|
17072
17404
|
if (!checkouts) {
|
|
17073
17405
|
return [];
|
|
17074
17406
|
}
|
|
17075
17407
|
return getUpdatedCheckouts(checkouts, initialCheckouts).filter(({ depositAddr }) => !closedNotifications.includes(depositAddr)).slice(0, MAX_COUNT);
|
|
17076
17408
|
}, [initialCheckouts, checkouts, closedNotifications]);
|
|
17077
|
-
const combinedNotifications =
|
|
17409
|
+
const combinedNotifications = useMemo25(() => {
|
|
17078
17410
|
return [
|
|
17079
17411
|
...displayedDirectExecutions.map(
|
|
17080
17412
|
(item) => ({ ...item, isDirectExecution: true })
|
|
@@ -17084,7 +17416,7 @@ var CheckoutNotifications = ({
|
|
|
17084
17416
|
)
|
|
17085
17417
|
].sort((a, b) => b.createdTimeMs - a.createdTimeMs);
|
|
17086
17418
|
}, [displayedDirectExecutions, displayedCheckouts]);
|
|
17087
|
-
const displayedNotifications =
|
|
17419
|
+
const displayedNotifications = useMemo25(() => {
|
|
17088
17420
|
return isExpanded ? combinedNotifications : combinedNotifications.slice(0, COLLAPSED_COUNT);
|
|
17089
17421
|
}, [isExpanded, combinedNotifications]);
|
|
17090
17422
|
const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
|
|
@@ -17241,13 +17573,13 @@ import React106 from "react";
|
|
|
17241
17573
|
import React105 from "react";
|
|
17242
17574
|
|
|
17243
17575
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
|
|
17244
|
-
import React100, { useCallback as useCallback22, useMemo as
|
|
17576
|
+
import React100, { useCallback as useCallback22, useMemo as useMemo26, useState as useState32 } from "react";
|
|
17245
17577
|
import { createPortal as createPortal5 } from "react-dom";
|
|
17246
17578
|
|
|
17247
17579
|
// src/hooks/useFunListeners.ts
|
|
17248
|
-
import { useEffect as useEffect34, useRef as
|
|
17580
|
+
import { useEffect as useEffect34, useRef as useRef20 } from "react";
|
|
17249
17581
|
function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
|
|
17250
|
-
const activeIntervalRef =
|
|
17582
|
+
const activeIntervalRef = useRef20();
|
|
17251
17583
|
const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
|
|
17252
17584
|
useEffect34(() => {
|
|
17253
17585
|
if (activate) {
|
|
@@ -17308,7 +17640,7 @@ function FunCheckoutHistoryDetail({
|
|
|
17308
17640
|
isActiveCheckout
|
|
17309
17641
|
]
|
|
17310
17642
|
);
|
|
17311
|
-
const primaryButtonProps =
|
|
17643
|
+
const primaryButtonProps = useMemo26(() => {
|
|
17312
17644
|
if (!isCheckoutLoaded) {
|
|
17313
17645
|
return void 0;
|
|
17314
17646
|
}
|
|
@@ -17395,7 +17727,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
|
|
|
17395
17727
|
|
|
17396
17728
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
|
|
17397
17729
|
import { sendSupportMessage } from "@funkit/api-base";
|
|
17398
|
-
import React104, { useEffect as useEffect35, useMemo as
|
|
17730
|
+
import React104, { useEffect as useEffect35, useMemo as useMemo27, useRef as useRef21, useState as useState33 } from "react";
|
|
17399
17731
|
import { createPortal as createPortal6 } from "react-dom";
|
|
17400
17732
|
|
|
17401
17733
|
// src/components/FunInput/FunTextAreaInput.tsx
|
|
@@ -17579,13 +17911,13 @@ function FunCheckoutHistoryHelp({
|
|
|
17579
17911
|
);
|
|
17580
17912
|
const [descriptionInput, setDescriptionInput] = useState33("");
|
|
17581
17913
|
const [errorMessage, setErrorMessage] = useState33();
|
|
17582
|
-
const isEmailInputValid =
|
|
17914
|
+
const isEmailInputValid = useMemo27(() => {
|
|
17583
17915
|
return validateEmailString(emailInput);
|
|
17584
17916
|
}, [emailInput]);
|
|
17585
17917
|
const [processStage, setProcessStage] = useState33(
|
|
17586
17918
|
0 /* INPUT */
|
|
17587
17919
|
);
|
|
17588
|
-
const wrapperRef =
|
|
17920
|
+
const wrapperRef = useRef21(null);
|
|
17589
17921
|
useEffect35(() => wrapperRef.current?.scrollIntoView(), []);
|
|
17590
17922
|
const handleShowErrorMessage = (message, timeMs = FIVE_SECONDS_MS) => {
|
|
17591
17923
|
setErrorMessage(message);
|
|
@@ -17777,6 +18109,12 @@ function FunCheckoutHistoryContent({
|
|
|
17777
18109
|
onHelp: onHelp2
|
|
17778
18110
|
}) {
|
|
17779
18111
|
const { checkoutHistoryInfo, directExecutionInfo } = useFunkitPostCheckoutInternal(depositAddress);
|
|
18112
|
+
const { apiKey } = useFunkitConfig();
|
|
18113
|
+
const { checkoutItem } = useCheckoutContext();
|
|
18114
|
+
const lighterNativeDeposit = isLighterNativeFlow(
|
|
18115
|
+
apiKey,
|
|
18116
|
+
checkoutItem?.initSettings.config
|
|
18117
|
+
);
|
|
17780
18118
|
const { directExecution } = useDirectExecutionInfoPolling({
|
|
17781
18119
|
initDirectExecution: directExecutionInfo
|
|
17782
18120
|
});
|
|
@@ -17789,6 +18127,7 @@ function FunCheckoutHistoryContent({
|
|
|
17789
18127
|
directExecution,
|
|
17790
18128
|
isActiveCheckout,
|
|
17791
18129
|
onClose,
|
|
18130
|
+
dangerousCustomDelayedAutoTriggerCutoff: lighterNativeDeposit ? LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF : void 0,
|
|
17792
18131
|
onAnimationComplete
|
|
17793
18132
|
}
|
|
17794
18133
|
);
|
|
@@ -17975,7 +18314,7 @@ import React108, {
|
|
|
17975
18314
|
createContext as createContext14,
|
|
17976
18315
|
useCallback as useCallback24,
|
|
17977
18316
|
useContext as useContext14,
|
|
17978
|
-
useMemo as
|
|
18317
|
+
useMemo as useMemo28,
|
|
17979
18318
|
useState as useState35
|
|
17980
18319
|
} from "react";
|
|
17981
18320
|
var ActivityTraversalContext = createContext14({
|
|
@@ -18018,7 +18357,7 @@ var ActivityTraversalProvider = ({
|
|
|
18018
18357
|
setSelectedPurchaseInitView(void 0);
|
|
18019
18358
|
setReturnView(void 0);
|
|
18020
18359
|
}, []);
|
|
18021
|
-
const contextValue =
|
|
18360
|
+
const contextValue = useMemo28(
|
|
18022
18361
|
() => ({
|
|
18023
18362
|
selectedPurchaseId,
|
|
18024
18363
|
selectedPurchaseInitView,
|
|
@@ -18047,12 +18386,12 @@ import React217, { useCallback as useCallback46, useState as useState69 } from "
|
|
|
18047
18386
|
|
|
18048
18387
|
// src/components/FunCheckoutModalHeightAnimationWrapper/FunCheckoutModalHeightAnimationWrapper.tsx
|
|
18049
18388
|
import { motion as motion15 } from "motion/react";
|
|
18050
|
-
import React204, { useEffect as useEffect51, useRef as
|
|
18389
|
+
import React204, { useEffect as useEffect51, useRef as useRef28, useState as useState66 } from "react";
|
|
18051
18390
|
|
|
18052
18391
|
// src/modals/CheckoutModal/stepTransition.ts
|
|
18053
18392
|
import {
|
|
18054
18393
|
useCallback as useCallback44,
|
|
18055
|
-
useRef as
|
|
18394
|
+
useRef as useRef27,
|
|
18056
18395
|
useState as useState65
|
|
18057
18396
|
} from "react";
|
|
18058
18397
|
|
|
@@ -18123,11 +18462,11 @@ function useAnimatedNavigation(callback) {
|
|
|
18123
18462
|
}
|
|
18124
18463
|
|
|
18125
18464
|
// src/hooks/useCheckoutQuoteNotification.ts
|
|
18126
|
-
import { useMemo as
|
|
18465
|
+
import { useMemo as useMemo29 } from "react";
|
|
18127
18466
|
function useCheckoutQuoteNotification() {
|
|
18128
18467
|
const { clearCheckoutQuoteMessages } = useQuoteContext();
|
|
18129
18468
|
const { quoteErrorMessage, quoteStepMessage } = useQuoteContext();
|
|
18130
|
-
const quoteNotification =
|
|
18469
|
+
const quoteNotification = useMemo29(() => {
|
|
18131
18470
|
if (quoteErrorMessage !== "") {
|
|
18132
18471
|
return {
|
|
18133
18472
|
messageType: "error",
|
|
@@ -19565,7 +19904,7 @@ import {
|
|
|
19565
19904
|
DirectExecutionType as DirectExecutionType2,
|
|
19566
19905
|
RelayExecutionStatus as RelayExecutionStatus3
|
|
19567
19906
|
} from "@funkit/api-base";
|
|
19568
|
-
import React130, { useCallback as useCallback27, useEffect as useEffect36, useMemo as
|
|
19907
|
+
import React130, { useCallback as useCallback27, useEffect as useEffect36, useMemo as useMemo30, useState as useState39 } from "react";
|
|
19569
19908
|
var overrideAssetsData = (de, checkoutItem) => {
|
|
19570
19909
|
return {
|
|
19571
19910
|
...de,
|
|
@@ -19640,7 +19979,7 @@ var BrokerageSuccess = ({
|
|
|
19640
19979
|
}) => {
|
|
19641
19980
|
const { t } = useFunkitTranslation();
|
|
19642
19981
|
const [startTime] = useState39(() => Date.now());
|
|
19643
|
-
const filterFunc =
|
|
19982
|
+
const filterFunc = useMemo30(() => {
|
|
19644
19983
|
return (execution) => execution.createdTimeMs > startTime && execution.listenerInfo?.status === RelayExecutionStatus3.SUCCESS;
|
|
19645
19984
|
}, [startTime]);
|
|
19646
19985
|
const { data: directExecutions } = useRecentDirectExecutions({
|
|
@@ -19660,7 +19999,7 @@ var BrokerageSuccess = ({
|
|
|
19660
19999
|
setDirectExecution(getFakeDirectExecution(checkoutItem, walletAddress));
|
|
19661
20000
|
}
|
|
19662
20001
|
}, [directExecution, checkoutItem, setCheckoutProgress]);
|
|
19663
|
-
const latestDirectExecution =
|
|
20002
|
+
const latestDirectExecution = useMemo30(() => {
|
|
19664
20003
|
return directExecutions?.[0];
|
|
19665
20004
|
}, [directExecutions?.[0]?.txHash]);
|
|
19666
20005
|
useEffect36(() => {
|
|
@@ -19715,7 +20054,7 @@ var BrokerageSuccess = ({
|
|
|
19715
20054
|
// string
|
|
19716
20055
|
directExecution?.txHash
|
|
19717
20056
|
]);
|
|
19718
|
-
const customTextConfigSteps =
|
|
20057
|
+
const customTextConfigSteps = useMemo30(() => {
|
|
19719
20058
|
if (exchangeType) {
|
|
19720
20059
|
return {
|
|
19721
20060
|
...getDefaultTextConfigSteps(t),
|
|
@@ -20772,7 +21111,7 @@ function CheckoutHelp({
|
|
|
20772
21111
|
}
|
|
20773
21112
|
|
|
20774
21113
|
// src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
|
|
20775
|
-
import React156, { useEffect as useEffect43, useMemo as
|
|
21114
|
+
import React156, { useEffect as useEffect43, useMemo as useMemo36, useState as useState51 } from "react";
|
|
20776
21115
|
import { createPortal as createPortal14 } from "react-dom";
|
|
20777
21116
|
|
|
20778
21117
|
// src/providers/UserPresenceContext.tsx
|
|
@@ -20818,9 +21157,9 @@ import React145 from "react";
|
|
|
20818
21157
|
import React144, { useState as useState44 } from "react";
|
|
20819
21158
|
|
|
20820
21159
|
// src/hooks/useInterval.ts
|
|
20821
|
-
import { useEffect as useEffect39, useRef as
|
|
21160
|
+
import { useEffect as useEffect39, useRef as useRef22 } from "react";
|
|
20822
21161
|
function useInterval(callback, delay) {
|
|
20823
|
-
const savedCallback =
|
|
21162
|
+
const savedCallback = useRef22(callback);
|
|
20824
21163
|
useIsomorphicLayoutEffect(() => {
|
|
20825
21164
|
savedCallback.current = callback;
|
|
20826
21165
|
}, [callback]);
|
|
@@ -20878,7 +21217,7 @@ import {
|
|
|
20878
21217
|
} from "@funkit/utils";
|
|
20879
21218
|
import NumberFlow from "@number-flow/react";
|
|
20880
21219
|
import { motion as motion9 } from "motion/react";
|
|
20881
|
-
import React147, { useMemo as
|
|
21220
|
+
import React147, { useMemo as useMemo32 } from "react";
|
|
20882
21221
|
|
|
20883
21222
|
// src/consts/design.ts
|
|
20884
21223
|
var mapFontLineHeightToNumberFlowHeight = {
|
|
@@ -20891,7 +21230,7 @@ var defaultTransition = "all 150ms cubic-bezier(0.3, 0, 0.06, 1)";
|
|
|
20891
21230
|
// src/components/FunAssetAvatar/FunAssetAvatar.tsx
|
|
20892
21231
|
import { isNotNullish as isNotNullish4 } from "@funkit/utils";
|
|
20893
21232
|
import clsx20 from "clsx";
|
|
20894
|
-
import React146, { useMemo as
|
|
21233
|
+
import React146, { useMemo as useMemo31 } from "react";
|
|
20895
21234
|
|
|
20896
21235
|
// src/components/FunAssetAvatar/FunAssetAvatar.css.ts
|
|
20897
21236
|
var chainContainerStyle = "uwrdc22 _1rsrm2f19 _1rsrm2fa _1rsrm2f4 _1rsrm2f4o";
|
|
@@ -20912,7 +21251,7 @@ function FunAssetAvatar({
|
|
|
20912
21251
|
isChainIconHidden = false
|
|
20913
21252
|
}) {
|
|
20914
21253
|
const chainMetadata = chainMetadataById[Number.parseInt((chainId || "").toString())] || null;
|
|
20915
|
-
const finalAssetSrc =
|
|
21254
|
+
const finalAssetSrc = useMemo31(() => {
|
|
20916
21255
|
const normalizedTicker = assetTicker?.toUpperCase() || "";
|
|
20917
21256
|
const defaultSrc = ASSET_LOGO_SRCS[normalizedTicker];
|
|
20918
21257
|
if (prioritizeDefaults) {
|
|
@@ -21031,7 +21370,7 @@ function PaymentAmountSummary({
|
|
|
21031
21370
|
const showYouWillPaySummary = !isExactSameToken && !isCardPayment || hasStakingToken;
|
|
21032
21371
|
const feeBreakdown = quote?.baseQuote.metadata?.feeBreakdown;
|
|
21033
21372
|
const swapImpactPct = checkoutConfig?.generateActionsParams ? feeBreakdown?.swapImpact + feeBreakdown?.appFeePercent || 0 : 0;
|
|
21034
|
-
const receiveTokenUsdAmount =
|
|
21373
|
+
const receiveTokenUsdAmount = useMemo32(() => {
|
|
21035
21374
|
if (!quote) {
|
|
21036
21375
|
return void 0;
|
|
21037
21376
|
}
|
|
@@ -21163,24 +21502,16 @@ function useCheckoutItemDisplay({
|
|
|
21163
21502
|
});
|
|
21164
21503
|
}
|
|
21165
21504
|
|
|
21166
|
-
// src/utils/customer.ts
|
|
21167
|
-
function isKatanaEarnFlow({
|
|
21168
|
-
apiKey,
|
|
21169
|
-
checkoutConfig
|
|
21170
|
-
}) {
|
|
21171
|
-
return isKatanaCustomer(apiKey) && !!checkoutConfig && isCheckoutPostActionRequired(checkoutConfig);
|
|
21172
|
-
}
|
|
21173
|
-
|
|
21174
21505
|
// src/modals/CheckoutModal/ConfirmationStep/CheckoutPrimaryInfo.tsx
|
|
21175
21506
|
import React150 from "react";
|
|
21176
21507
|
|
|
21177
21508
|
// src/components/AnimatedDollarValue/AnimatedDollarValue.tsx
|
|
21178
21509
|
import NumberFlow2 from "@number-flow/react";
|
|
21179
|
-
import React148, { forwardRef as forwardRef4, useMemo as
|
|
21510
|
+
import React148, { forwardRef as forwardRef4, useMemo as useMemo33 } from "react";
|
|
21180
21511
|
var AnimatedDollarValue = forwardRef4((props, ref) => {
|
|
21181
21512
|
const { value, dynamicMinFractionDigits, ...restProps } = props;
|
|
21182
21513
|
const minimumFractionDigits = typeof value === "number" && !Number.isInteger(value) || !dynamicMinFractionDigits ? 2 : 0;
|
|
21183
|
-
const formatOptions =
|
|
21514
|
+
const formatOptions = useMemo33(
|
|
21184
21515
|
() => ({
|
|
21185
21516
|
style: "currency",
|
|
21186
21517
|
currency: "USD",
|
|
@@ -21329,7 +21660,7 @@ function CheckoutPrimaryInfo({
|
|
|
21329
21660
|
}
|
|
21330
21661
|
|
|
21331
21662
|
// src/modals/CheckoutModal/ConfirmationStep/DisclaimerText.tsx
|
|
21332
|
-
import React151, { useMemo as
|
|
21663
|
+
import React151, { useMemo as useMemo34 } from "react";
|
|
21333
21664
|
import { Trans as Trans8 } from "react-i18next";
|
|
21334
21665
|
var FunLinkButtonComponent = ({
|
|
21335
21666
|
children,
|
|
@@ -21404,7 +21735,7 @@ var DisclaimerText = ({
|
|
|
21404
21735
|
};
|
|
21405
21736
|
function useCardDisclaimer(checkoutItem, finalConvertedAssetName) {
|
|
21406
21737
|
const { t } = useFunkitTranslation();
|
|
21407
|
-
const cardDisclaimer =
|
|
21738
|
+
const cardDisclaimer = useMemo34(() => {
|
|
21408
21739
|
if (!checkoutItem || !finalConvertedAssetName) {
|
|
21409
21740
|
return null;
|
|
21410
21741
|
}
|
|
@@ -21611,14 +21942,14 @@ import { useAccount as useAccount6, useSendTransaction, useWriteContract } from
|
|
|
21611
21942
|
|
|
21612
21943
|
// src/utils/isMainnetUsdt.ts
|
|
21613
21944
|
import { isTokenEquivalent as isTokenEquivalent3 } from "@funkit/utils";
|
|
21614
|
-
import { mainnet as
|
|
21945
|
+
import { mainnet as mainnet9 } from "viem/chains";
|
|
21615
21946
|
var USDT_MAINNET_ADDRESS = "0xdAC17F958D2ee523a2206206994597C13D831ec7";
|
|
21616
21947
|
function isMainnetUsdt(chainId, address) {
|
|
21617
21948
|
return isTokenEquivalent3({
|
|
21618
21949
|
firstTokenAddress: address,
|
|
21619
21950
|
firstTokenChainId: chainId.toString(),
|
|
21620
21951
|
secondTokenAddress: USDT_MAINNET_ADDRESS,
|
|
21621
|
-
secondTokenChainId:
|
|
21952
|
+
secondTokenChainId: mainnet9.id.toString()
|
|
21622
21953
|
});
|
|
21623
21954
|
}
|
|
21624
21955
|
|
|
@@ -21891,7 +22222,7 @@ function usePostCheckout({
|
|
|
21891
22222
|
}
|
|
21892
22223
|
|
|
21893
22224
|
// src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
|
|
21894
|
-
import { useCallback as useCallback34, useEffect as useEffect42, useMemo as
|
|
22225
|
+
import { useCallback as useCallback34, useEffect as useEffect42, useMemo as useMemo35, useRef as useRef23, useState as useState50 } from "react";
|
|
21895
22226
|
|
|
21896
22227
|
// src/hooks/useCountdown.tsx
|
|
21897
22228
|
import React155 from "react";
|
|
@@ -22089,8 +22420,8 @@ function useQuoteRefresh({
|
|
|
22089
22420
|
refreshIntervalSeconds
|
|
22090
22421
|
}) {
|
|
22091
22422
|
const { setCheckoutQuote, isQuoting, quoteErrorMessage, quoteStepMessage } = useQuoteContext();
|
|
22092
|
-
const preloadedQuoteRef =
|
|
22093
|
-
const quoteCallbackRef =
|
|
22423
|
+
const preloadedQuoteRef = useRef23();
|
|
22424
|
+
const quoteCallbackRef = useRef23();
|
|
22094
22425
|
const [isPendingRefresh, setIsPendingRefresh] = useState50(false);
|
|
22095
22426
|
const {
|
|
22096
22427
|
isSourceAssetConfirming,
|
|
@@ -22154,7 +22485,7 @@ function useQuoteRefresh({
|
|
|
22154
22485
|
},
|
|
22155
22486
|
[isOnHold, restartCountdown, setCheckoutQuote, triggerAssetConfirm]
|
|
22156
22487
|
);
|
|
22157
|
-
const quoteError =
|
|
22488
|
+
const quoteError = useMemo35(() => {
|
|
22158
22489
|
if (quoteErrorMessage && !isQuoting) {
|
|
22159
22490
|
return {
|
|
22160
22491
|
message: quoteErrorMessage,
|
|
@@ -22292,7 +22623,7 @@ function ConfirmationStep({
|
|
|
22292
22623
|
})
|
|
22293
22624
|
);
|
|
22294
22625
|
const error = confirmationError ?? postCheckoutError ?? quoteError;
|
|
22295
|
-
const stepMessage =
|
|
22626
|
+
const stepMessage = useMemo36(() => {
|
|
22296
22627
|
if (initialQuoteStep) {
|
|
22297
22628
|
return initialQuoteStep;
|
|
22298
22629
|
}
|
|
@@ -22350,7 +22681,7 @@ function ConfirmationStep({
|
|
|
22350
22681
|
const isQuoteLoading = isInitialQuoting || isQuoting;
|
|
22351
22682
|
const isStepLoading = isInitialQuoting || isContinuing || isRefreshing;
|
|
22352
22683
|
const customRecipient = checkoutItem?.initSettings.config.customRecipient;
|
|
22353
|
-
const showKatanaBridgeAlert =
|
|
22684
|
+
const showKatanaBridgeAlert = useMemo36(() => {
|
|
22354
22685
|
const relayQuoteMetadata = latestQuote?.baseQuote?.metadata;
|
|
22355
22686
|
if (!relayQuoteMetadata) {
|
|
22356
22687
|
return false;
|
|
@@ -22581,7 +22912,7 @@ import React173, { useEffect as useEffect45 } from "react";
|
|
|
22581
22912
|
|
|
22582
22913
|
// src/hooks/queries/useMeldCurrencies.ts
|
|
22583
22914
|
import { getMeldSupportedFiat } from "@funkit/api-base";
|
|
22584
|
-
import { useQuery as
|
|
22915
|
+
import { useQuery as useQuery16 } from "@tanstack/react-query";
|
|
22585
22916
|
var getPriority = (currencyCode) => {
|
|
22586
22917
|
if (currencyCode === "USD") {
|
|
22587
22918
|
return 0;
|
|
@@ -22593,7 +22924,7 @@ var getPriority = (currencyCode) => {
|
|
|
22593
22924
|
};
|
|
22594
22925
|
var useMeldCurrencies = (isEnabled = true) => {
|
|
22595
22926
|
const { apiKey } = useFunkitConfig();
|
|
22596
|
-
const query =
|
|
22927
|
+
const query = useQuery16({
|
|
22597
22928
|
queryKey: ["meld", "currencies"],
|
|
22598
22929
|
queryFn: async () => {
|
|
22599
22930
|
if (!apiKey) {
|
|
@@ -22619,10 +22950,10 @@ var useMeldCurrencies = (isEnabled = true) => {
|
|
|
22619
22950
|
|
|
22620
22951
|
// src/hooks/queries/useMeldDefaultCurrency.ts
|
|
22621
22952
|
import { getMeldDefaultFiat } from "@funkit/api-base";
|
|
22622
|
-
import { useQuery as
|
|
22953
|
+
import { useQuery as useQuery17 } from "@tanstack/react-query";
|
|
22623
22954
|
|
|
22624
22955
|
// src/hooks/queries/useMeldCryptoCurrencyCode.ts
|
|
22625
|
-
import { FlagKey as
|
|
22956
|
+
import { FlagKey as FlagKey15 } from "@funkit/utils";
|
|
22626
22957
|
import { arbitrum as arbitrum4, base as base6, polygon as polygon5 } from "viem/chains";
|
|
22627
22958
|
var ARB_USDC = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831".toLowerCase();
|
|
22628
22959
|
var POLYGON_USDC = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359".toLowerCase();
|
|
@@ -22655,7 +22986,7 @@ function useMeldCryptoCurrencyCode() {
|
|
|
22655
22986
|
return mappedCurrency;
|
|
22656
22987
|
}
|
|
22657
22988
|
function useIsMeldEnabled() {
|
|
22658
|
-
const meldEnabled = useFlag(
|
|
22989
|
+
const meldEnabled = useFlag(FlagKey15.EnableMeldPayment);
|
|
22659
22990
|
const meldCurrencyCode = useMeldCryptoCurrencyCode();
|
|
22660
22991
|
return meldEnabled && !!meldCurrencyCode;
|
|
22661
22992
|
}
|
|
@@ -22665,7 +22996,7 @@ var useMeldDefaultCurrency = (paymentMethod) => {
|
|
|
22665
22996
|
const { apiKey } = useFunkitConfig();
|
|
22666
22997
|
const { userIpInfo } = useFunkitUserIp();
|
|
22667
22998
|
const enableMeld = useIsMeldEnabled();
|
|
22668
|
-
const query =
|
|
22999
|
+
const query = useQuery17({
|
|
22669
23000
|
queryKey: ["meld", "defaultCurrency", paymentMethod],
|
|
22670
23001
|
queryFn: async () => {
|
|
22671
23002
|
if (!apiKey) {
|
|
@@ -22690,7 +23021,7 @@ var useMeldDefaultCurrency = (paymentMethod) => {
|
|
|
22690
23021
|
// src/hooks/queries/useMeldLimits.ts
|
|
22691
23022
|
import { getMeldFiatLimits } from "@funkit/api-base";
|
|
22692
23023
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify6 } from "@funkit/utils";
|
|
22693
|
-
import { useQuery as
|
|
23024
|
+
import { useQuery as useQuery19 } from "@tanstack/react-query";
|
|
22694
23025
|
|
|
22695
23026
|
// src/consts/meld.ts
|
|
22696
23027
|
var MELD_MIN_LIMIT_BUFFER = 5;
|
|
@@ -22722,9 +23053,9 @@ var getExchangeRate = (currency, currencyExchangeRates, bipsMarkup = DEFAULT_BIP
|
|
|
22722
23053
|
|
|
22723
23054
|
// src/hooks/useFiatExchangeRates.ts
|
|
22724
23055
|
import { getFiatExchangeRates } from "@funkit/api-base";
|
|
22725
|
-
import { useQuery as
|
|
23056
|
+
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
22726
23057
|
function useFiatExchangeRates(enabled = true) {
|
|
22727
|
-
const { data, isLoading, error } =
|
|
23058
|
+
const { data, isLoading, error } = useQuery18({
|
|
22728
23059
|
queryKey: ["fiatExchangeRates"],
|
|
22729
23060
|
queryFn: () => getFiatExchangeRates(),
|
|
22730
23061
|
refetchOnMount: false,
|
|
@@ -22769,7 +23100,7 @@ var useMeldLimits = (isEnabled = true) => {
|
|
|
22769
23100
|
const { userIpInfo } = useFunkitUserIp();
|
|
22770
23101
|
const cryptoCurrency = useMeldCryptoCurrencyCode();
|
|
22771
23102
|
const countryCode = userIpInfo?.alpha2;
|
|
22772
|
-
const query =
|
|
23103
|
+
const query = useQuery19({
|
|
22773
23104
|
queryKey: ["meld", "limits", countryCode, cryptoCurrency],
|
|
22774
23105
|
queryFn: async () => {
|
|
22775
23106
|
if (!apiKey || !countryCode) {
|
|
@@ -22852,23 +23183,23 @@ var useMeldLimitError = (amount, fiatCurrency) => {
|
|
|
22852
23183
|
|
|
22853
23184
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoaded.tsx
|
|
22854
23185
|
import {
|
|
22855
|
-
FlagKey as
|
|
23186
|
+
FlagKey as FlagKey17,
|
|
22856
23187
|
formatCryptoAndStringify as formatCryptoAndStringify5,
|
|
22857
23188
|
formatCurrencyAndStringify as formatCurrencyAndStringify9,
|
|
22858
23189
|
isTokenEquivalent as isTokenEquivalent4,
|
|
22859
23190
|
round as round2
|
|
22860
23191
|
} from "@funkit/utils";
|
|
22861
23192
|
import { motion as motion11 } from "motion/react";
|
|
22862
|
-
import React171, { useMemo as
|
|
23193
|
+
import React171, { useMemo as useMemo38 } from "react";
|
|
22863
23194
|
|
|
22864
23195
|
// src/components/AnimatedWidthWrapper/AnimatedWidthWrapper.tsx
|
|
22865
23196
|
import { motion as motion10 } from "motion/react";
|
|
22866
23197
|
import React159 from "react";
|
|
22867
|
-
import { useEffect as useEffect44, useRef as
|
|
23198
|
+
import { useEffect as useEffect44, useRef as useRef24, useState as useState52 } from "react";
|
|
22868
23199
|
function AnimatedWidthWrapper({ children }) {
|
|
22869
|
-
const containerRef =
|
|
22870
|
-
const animationFrameRef =
|
|
22871
|
-
const resizeObserverRef =
|
|
23200
|
+
const containerRef = useRef24(null);
|
|
23201
|
+
const animationFrameRef = useRef24(null);
|
|
23202
|
+
const resizeObserverRef = useRef24(null);
|
|
22872
23203
|
const [width, setWidth] = useState52("auto");
|
|
22873
23204
|
useEffect44(() => {
|
|
22874
23205
|
if (containerRef.current) {
|
|
@@ -22941,7 +23272,7 @@ var CurrencySelector = ({
|
|
|
22941
23272
|
};
|
|
22942
23273
|
|
|
22943
23274
|
// src/components/SourcePaymentMethodItem/SourcePaymentMethodItem.tsx
|
|
22944
|
-
import { FlagKey as
|
|
23275
|
+
import { FlagKey as FlagKey16 } from "@funkit/utils";
|
|
22945
23276
|
import clsx21 from "clsx";
|
|
22946
23277
|
import { useAnimate as useAnimate3 } from "motion/react";
|
|
22947
23278
|
import React162 from "react";
|
|
@@ -23548,7 +23879,7 @@ var SourcePaymentMethodItem = ({
|
|
|
23548
23879
|
}
|
|
23549
23880
|
];
|
|
23550
23881
|
const isMeldEnabled = useIsMeldEnabled();
|
|
23551
|
-
const isBrokerageEnabled = useFlag(
|
|
23882
|
+
const isBrokerageEnabled = useFlag(FlagKey16.EnableBluvoBrokerage);
|
|
23552
23883
|
const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
|
|
23553
23884
|
if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isMeldEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
|
|
23554
23885
|
return false;
|
|
@@ -23905,7 +24236,7 @@ function InputAmountLayout({
|
|
|
23905
24236
|
}
|
|
23906
24237
|
|
|
23907
24238
|
// src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
|
|
23908
|
-
import {
|
|
24239
|
+
import { clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify7 } from "@funkit/utils";
|
|
23909
24240
|
import React167 from "react";
|
|
23910
24241
|
var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
|
|
23911
24242
|
function deduplicateArray(arr) {
|
|
@@ -23913,10 +24244,7 @@ function deduplicateArray(arr) {
|
|
|
23913
24244
|
}
|
|
23914
24245
|
function useFiatAmountOptions(currency) {
|
|
23915
24246
|
const isMeldEnabled = useIsMeldEnabled();
|
|
23916
|
-
const
|
|
23917
|
-
const currencyQuickOption = safeJSONParse(
|
|
23918
|
-
currencyQuickOptionStr
|
|
23919
|
-
);
|
|
24247
|
+
const currencyQuickOption = useDynamicConfig("meldquickoptions");
|
|
23920
24248
|
const { data: meldLimit, isPending } = useMeldLimit(currency);
|
|
23921
24249
|
if (isPending || !meldLimit || !isMeldEnabled) {
|
|
23922
24250
|
return [];
|
|
@@ -23924,9 +24252,7 @@ function useFiatAmountOptions(currency) {
|
|
|
23924
24252
|
const minimumAmount = meldLimit.minimumAmount;
|
|
23925
24253
|
const maximumAmount = meldLimit.maximumAmount;
|
|
23926
24254
|
return deduplicateArray(
|
|
23927
|
-
currencyQuickOption?.[currency ?? "USD"]?.map(
|
|
23928
|
-
(val) => clamp2(val, minimumAmount, maximumAmount)
|
|
23929
|
-
) || []
|
|
24255
|
+
currencyQuickOption?.[currency ?? "USD"]?.map((val) => clamp2(val, minimumAmount, maximumAmount)) || []
|
|
23930
24256
|
);
|
|
23931
24257
|
}
|
|
23932
24258
|
var QuickOptions = ({
|
|
@@ -23975,9 +24301,9 @@ var QuickOptions = ({
|
|
|
23975
24301
|
// src/modals/CheckoutModal/InputAmount/useAmountInput.ts
|
|
23976
24302
|
import {
|
|
23977
24303
|
useCallback as useCallback36,
|
|
23978
|
-
useMemo as
|
|
24304
|
+
useMemo as useMemo37,
|
|
23979
24305
|
useReducer as useReducer3,
|
|
23980
|
-
useRef as
|
|
24306
|
+
useRef as useRef25,
|
|
23981
24307
|
useState as useState54
|
|
23982
24308
|
} from "react";
|
|
23983
24309
|
|
|
@@ -24290,11 +24616,11 @@ function useAmountInput(options) {
|
|
|
24290
24616
|
quickOptions,
|
|
24291
24617
|
paymentMethodInfo
|
|
24292
24618
|
} = options;
|
|
24293
|
-
const derivedState =
|
|
24619
|
+
const derivedState = useMemo37(
|
|
24294
24620
|
() => getDerivedState(state, checkoutConfig.targetAssetTicker),
|
|
24295
24621
|
[state, checkoutConfig]
|
|
24296
24622
|
);
|
|
24297
|
-
const inputRef =
|
|
24623
|
+
const inputRef = useRef25(null);
|
|
24298
24624
|
const { inputValue, locale } = state;
|
|
24299
24625
|
const { inputDecimals, inputAffix, placeholder } = derivedState;
|
|
24300
24626
|
const { measureText } = useTextMeasurer(inputRef);
|
|
@@ -24851,8 +25177,9 @@ function createMoonpayMeldQuote(quote) {
|
|
|
24851
25177
|
};
|
|
24852
25178
|
}
|
|
24853
25179
|
function withMoonpayMeldQuote(quotes) {
|
|
24854
|
-
if (!quotes) {
|
|
24855
|
-
|
|
25180
|
+
if (!quotes || quotes.length === 0) {
|
|
25181
|
+
logger.error("withMoonpayMeldQuote:error", "No quotes could be found.");
|
|
25182
|
+
return void 0;
|
|
24856
25183
|
}
|
|
24857
25184
|
const topQuote = quotes[0];
|
|
24858
25185
|
const moonpay = createMoonpayMeldQuote(topQuote);
|
|
@@ -24895,7 +25222,7 @@ var useMeldLink = (sourceAmount, sourceCurrencyCode = "USD") => {
|
|
|
24895
25222
|
|
|
24896
25223
|
// src/modals/CheckoutModal/MeldQuotes/useMeldQuotes.tsx
|
|
24897
25224
|
import { getMeldQuotes } from "@funkit/api-base";
|
|
24898
|
-
import { useQuery as
|
|
25225
|
+
import { useQuery as useQuery20 } from "@tanstack/react-query";
|
|
24899
25226
|
import { useDebounce as useDebounce2 } from "use-debounce";
|
|
24900
25227
|
var DEBOUNCE_DELAY = 500;
|
|
24901
25228
|
var COUNTDOWN_INTERVAL_SEC = 60;
|
|
@@ -24908,7 +25235,7 @@ var useMeldQuotes = (sourceAmount, fiatCurrency, meldEnabled = true) => {
|
|
|
24908
25235
|
const destinationCurrencyCode = useMeldCryptoCurrencyCode();
|
|
24909
25236
|
const isPolymarket = isPolymarketCustomer(apiKey);
|
|
24910
25237
|
const sourceCurrencyCode = fiatCurrency || "USD";
|
|
24911
|
-
const query =
|
|
25238
|
+
const query = useQuery20({
|
|
24912
25239
|
queryKey: [
|
|
24913
25240
|
"meld",
|
|
24914
25241
|
"quotes",
|
|
@@ -24968,7 +25295,7 @@ import {
|
|
|
24968
25295
|
katanaChain
|
|
24969
25296
|
} from "@funkit/chains";
|
|
24970
25297
|
import { useCallback as useCallback37, useState as useState55 } from "react";
|
|
24971
|
-
import { mainnet as
|
|
25298
|
+
import { mainnet as mainnet10, mantle, zksync as zksync2 } from "viem/chains";
|
|
24972
25299
|
import { getAssetErc20ByChainAndSymbol as getAssetErc20ByChainAndSymbol2 } from "@funkit/api-base";
|
|
24973
25300
|
var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
|
|
24974
25301
|
if (!checkoutItem?.initSettings.config.targetChain) {
|
|
@@ -25002,7 +25329,7 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
|
|
|
25002
25329
|
sourceTokenAddress = NATIVE_TOKEN;
|
|
25003
25330
|
sourceTokenChainId = moonpayChainId;
|
|
25004
25331
|
} else {
|
|
25005
|
-
sourceTokenChainId = isNyOrTxOrVi ?
|
|
25332
|
+
sourceTokenChainId = isNyOrTxOrVi ? mainnet10.id.toString() : moonpayChainId;
|
|
25006
25333
|
if (isTargetAssetEthOrWeth) {
|
|
25007
25334
|
sourceTokenTicker = "ETH" /* ETH */;
|
|
25008
25335
|
sourceTokenAddress = NATIVE_TOKEN;
|
|
@@ -25216,7 +25543,7 @@ function InputAmountLoaded({
|
|
|
25216
25543
|
textCustomizations
|
|
25217
25544
|
}) {
|
|
25218
25545
|
const { t } = useFunkitTranslation();
|
|
25219
|
-
const maxCheckoutUsdString = useFlag(
|
|
25546
|
+
const maxCheckoutUsdString = useFlag(FlagKey17.MaxCheckoutUsd);
|
|
25220
25547
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
25221
25548
|
const paymentMethodInfo = modalState.paymentMethodInfo;
|
|
25222
25549
|
const { quote: manuallySelectedQuote } = modalState;
|
|
@@ -25275,7 +25602,7 @@ function InputAmountLoaded({
|
|
|
25275
25602
|
onNext,
|
|
25276
25603
|
onClose
|
|
25277
25604
|
});
|
|
25278
|
-
const error =
|
|
25605
|
+
const error = useMemo38(() => {
|
|
25279
25606
|
if (isCardCheckout) {
|
|
25280
25607
|
const meldError = getMeldError();
|
|
25281
25608
|
if (meldError) {
|
|
@@ -25677,7 +26004,7 @@ function YouPayYouReceiveWrapper({
|
|
|
25677
26004
|
|
|
25678
26005
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoading.tsx
|
|
25679
26006
|
import { formatCryptoAndStringify as formatCryptoAndStringify6 } from "@funkit/utils";
|
|
25680
|
-
import React172, { useMemo as
|
|
26007
|
+
import React172, { useMemo as useMemo39 } from "react";
|
|
25681
26008
|
function InputAmountLoading({
|
|
25682
26009
|
modalState,
|
|
25683
26010
|
sourceHoldingError,
|
|
@@ -25690,7 +26017,7 @@ function InputAmountLoading({
|
|
|
25690
26017
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
25691
26018
|
const targetAssetAmount = checkoutItem?.initSettings.config.targetAssetAmount;
|
|
25692
26019
|
const targetAssetTicker = checkoutItem?.initSettings.config.targetAssetTicker;
|
|
25693
|
-
const error =
|
|
26020
|
+
const error = useMemo39(() => {
|
|
25694
26021
|
if (sourceHoldingError) {
|
|
25695
26022
|
return {
|
|
25696
26023
|
message: /* @__PURE__ */ React172.createElement("div", null, t("inputAmount.unableToRetrieveBalance"), " "),
|
|
@@ -25770,7 +26097,7 @@ function InputAmountLoading({
|
|
|
25770
26097
|
}
|
|
25771
26098
|
|
|
25772
26099
|
// src/modals/CheckoutModal/InputAmount/useAvailableBalanceForCheckout.ts
|
|
25773
|
-
import { useMemo as
|
|
26100
|
+
import { useMemo as useMemo40 } from "react";
|
|
25774
26101
|
function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetChainId, assetSymbol) {
|
|
25775
26102
|
const paymentMethod = paymentMethodInfo.paymentMethod;
|
|
25776
26103
|
const isBrokerage = paymentMethod === "brokerage" /* BROKERAGE */;
|
|
@@ -25785,7 +26112,7 @@ function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetC
|
|
|
25785
26112
|
["virtual_bank" /* VIRTUAL_BANK */]: null
|
|
25786
26113
|
}[paymentMethod];
|
|
25787
26114
|
const isLoading = isBrokerage ? isLoadingBrokerageBalance : isLoadingWalletAssetHoldings;
|
|
25788
|
-
const holdingItem =
|
|
26115
|
+
const holdingItem = useMemo40(() => {
|
|
25789
26116
|
if (!assetSymbol || !holdings) {
|
|
25790
26117
|
return;
|
|
25791
26118
|
}
|
|
@@ -25912,15 +26239,15 @@ function InputAmount(props) {
|
|
|
25912
26239
|
import React176, { useEffect as useEffect46 } from "react";
|
|
25913
26240
|
|
|
25914
26241
|
// src/hooks/usePaymentSources.ts
|
|
25915
|
-
import { FlagKey as
|
|
26242
|
+
import { FlagKey as FlagKey18, isNotNullish as isNotNullish5 } from "@funkit/utils";
|
|
25916
26243
|
function usePaymentMethodEnablement({
|
|
25917
26244
|
checkoutConfig
|
|
25918
26245
|
}) {
|
|
25919
26246
|
const { apiKey } = useFunkitConfig();
|
|
25920
|
-
const isTokenTransferFlagEnabled =
|
|
26247
|
+
const isTokenTransferFlagEnabled = useIsQRCodeTransferEnabled();
|
|
25921
26248
|
const isFiatFlagEnabled = useFiatEnabled();
|
|
25922
26249
|
const isMeldFlagEnabled = useIsMeldEnabled();
|
|
25923
|
-
const isBrokerageFlagEnabled = useFlag(
|
|
26250
|
+
const isBrokerageFlagEnabled = useFlag(FlagKey18.EnableBluvoBrokerage);
|
|
25924
26251
|
const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
|
|
25925
26252
|
const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
|
|
25926
26253
|
const isTokenTransferEnabled = isTokenTransferFlagEnabled && !isKatanaEarnFlowAction;
|
|
@@ -26317,7 +26644,7 @@ function LoadingAccount({
|
|
|
26317
26644
|
|
|
26318
26645
|
// src/modals/CheckoutModal/MeldCurrencySelect/MeldCurrencySelect.tsx
|
|
26319
26646
|
import clsx22 from "clsx";
|
|
26320
|
-
import React177, { useMemo as
|
|
26647
|
+
import React177, { useMemo as useMemo41, useState as useState56 } from "react";
|
|
26321
26648
|
|
|
26322
26649
|
// src/modals/CheckoutModal/MeldCurrencySelect/currenciesWithMultipleCountries.ts
|
|
26323
26650
|
var currenciesWithMultipleCountries = {
|
|
@@ -26377,7 +26704,7 @@ function MeldCurrencySelect({
|
|
|
26377
26704
|
const [selectedCurrency, setSelectedCurrency] = useState56(
|
|
26378
26705
|
defaultCurrency
|
|
26379
26706
|
);
|
|
26380
|
-
const filteredOptions =
|
|
26707
|
+
const filteredOptions = useMemo41(() => {
|
|
26381
26708
|
const newOptions = data?.filter(
|
|
26382
26709
|
({ name, currencyCode }) => currencyCode.toLowerCase().includes(query.toLowerCase()) || name.toLowerCase().includes(query.toLowerCase())
|
|
26383
26710
|
) ?? [];
|
|
@@ -26595,9 +26922,9 @@ import {
|
|
|
26595
26922
|
hyperEvmChain as hyperEvmChain5
|
|
26596
26923
|
} from "@funkit/chains";
|
|
26597
26924
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent5 } from "@funkit/utils";
|
|
26598
|
-
import React182, { useEffect as useEffect47, useMemo as
|
|
26925
|
+
import React182, { useEffect as useEffect47, useMemo as useMemo44, useState as useState57 } from "react";
|
|
26599
26926
|
import { createPortal as createPortal18 } from "react-dom";
|
|
26600
|
-
import { mainnet as
|
|
26927
|
+
import { mainnet as mainnet11 } from "viem/chains";
|
|
26601
26928
|
|
|
26602
26929
|
// src/components/Dropdown/ReceiveTokenDropdown.tsx
|
|
26603
26930
|
import React180 from "react";
|
|
@@ -26693,7 +27020,7 @@ var ReceiveTokenDropdown = ({
|
|
|
26693
27020
|
// src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
|
|
26694
27021
|
import React181 from "react";
|
|
26695
27022
|
import { Trans as Trans11 } from "react-i18next";
|
|
26696
|
-
import { FlagKey as
|
|
27023
|
+
import { FlagKey as FlagKey19 } from "@funkit/utils";
|
|
26697
27024
|
var FunLinkButtonComponent2 = ({
|
|
26698
27025
|
children,
|
|
26699
27026
|
onClick,
|
|
@@ -26713,9 +27040,9 @@ var NewTokenDepositAlert = ({
|
|
|
26713
27040
|
onClick
|
|
26714
27041
|
}) => {
|
|
26715
27042
|
const { t } = useFunkitTranslation();
|
|
26716
|
-
const alertJson = useFlag(
|
|
27043
|
+
const alertJson = useFlag(FlagKey19.NewTokenAssetSelectionBanner);
|
|
26717
27044
|
const alertData = useSafeJSONParse(alertJson);
|
|
26718
|
-
const isTokenTransferEnabled =
|
|
27045
|
+
const isTokenTransferEnabled = useIsQRCodeTransferEnabled();
|
|
26719
27046
|
if (!alertData || !isTokenTransferEnabled) {
|
|
26720
27047
|
return null;
|
|
26721
27048
|
}
|
|
@@ -26750,13 +27077,13 @@ var NewTokenDepositAlert = ({
|
|
|
26750
27077
|
|
|
26751
27078
|
// src/hooks/useAllowedAssets.ts
|
|
26752
27079
|
import { getAllowedAssets } from "@funkit/api-base";
|
|
26753
|
-
import { useQuery as
|
|
26754
|
-
import { useCallback as useCallback39, useMemo as
|
|
27080
|
+
import { useQuery as useQuery21 } from "@tanstack/react-query";
|
|
27081
|
+
import { useCallback as useCallback39, useMemo as useMemo42 } from "react";
|
|
26755
27082
|
function useAllowedAssets() {
|
|
26756
27083
|
const { apiKey } = useFunkitConfig();
|
|
26757
27084
|
const { checkoutItem } = useCheckoutContext();
|
|
26758
27085
|
const isRelayEnabled = useSourceTokenRelayEnabled();
|
|
26759
|
-
const { data: allowedAssets, isLoading } =
|
|
27086
|
+
const { data: allowedAssets, isLoading } = useQuery21({
|
|
26760
27087
|
queryKey: ["getAllowedAssets", apiKey],
|
|
26761
27088
|
queryFn: () => getAllowedAssets({ apiKey, logger }),
|
|
26762
27089
|
refetchOnMount: false,
|
|
@@ -26765,7 +27092,7 @@ function useAllowedAssets() {
|
|
|
26765
27092
|
staleTime: 5 * 60 * 1e3,
|
|
26766
27093
|
gcTime: Number.POSITIVE_INFINITY
|
|
26767
27094
|
});
|
|
26768
|
-
const tokens =
|
|
27095
|
+
const tokens = useMemo42(() => {
|
|
26769
27096
|
if (!allowedAssets) {
|
|
26770
27097
|
return {};
|
|
26771
27098
|
}
|
|
@@ -26798,6 +27125,32 @@ function useAllowedAssets() {
|
|
|
26798
27125
|
};
|
|
26799
27126
|
}
|
|
26800
27127
|
|
|
27128
|
+
// src/hooks/useDynamicRoutes.ts
|
|
27129
|
+
import { useMemo as useMemo43 } from "react";
|
|
27130
|
+
import { DYNAMIC_ROUTES, initDynamicRouting } from "@funkit/fun-relay";
|
|
27131
|
+
var toMutable = (obj) => {
|
|
27132
|
+
return obj;
|
|
27133
|
+
};
|
|
27134
|
+
var useDynamicRoutes = (_dynamicRoutingId) => {
|
|
27135
|
+
const dynamicRoutingConfig = useDynamicConfig("dynamicrouting");
|
|
27136
|
+
const { checkoutItem } = useCheckoutContext();
|
|
27137
|
+
const config = checkoutItem?.initSettings.config;
|
|
27138
|
+
const dynamicRoutingId = _dynamicRoutingId || config?.dynamicRoutingId;
|
|
27139
|
+
const findPath = useMemo43(() => {
|
|
27140
|
+
if (!dynamicRoutingId) {
|
|
27141
|
+
return () => null;
|
|
27142
|
+
}
|
|
27143
|
+
const indexedDynamicRoutes = initDynamicRouting(
|
|
27144
|
+
DYNAMIC_ROUTES,
|
|
27145
|
+
toMutable(dynamicRoutingConfig)
|
|
27146
|
+
);
|
|
27147
|
+
return indexedDynamicRoutes[dynamicRoutingId].findPath;
|
|
27148
|
+
}, [dynamicRoutingId, dynamicRoutingConfig]);
|
|
27149
|
+
return {
|
|
27150
|
+
findPath
|
|
27151
|
+
};
|
|
27152
|
+
};
|
|
27153
|
+
|
|
26801
27154
|
// src/modals/CheckoutModal/SelectAsset.tsx
|
|
26802
27155
|
var ASSET_ITEM_HEIGHT = 52;
|
|
26803
27156
|
var VISIBLE_ITEMS_COUNT = 5;
|
|
@@ -26840,11 +27193,13 @@ function useEnrichedAccountHoldings({
|
|
|
26840
27193
|
accountHoldings,
|
|
26841
27194
|
targetAssetInfo
|
|
26842
27195
|
}) {
|
|
27196
|
+
const { apiKey } = useFunkitConfig();
|
|
26843
27197
|
const { t } = useFunkitTranslation();
|
|
26844
27198
|
const { isAllowed, isLoading } = useAllowedAssets();
|
|
26845
27199
|
const { walletAddress } = useGeneralWallet();
|
|
26846
27200
|
const minTransferLimits = useMinTransferLimits();
|
|
26847
|
-
const
|
|
27201
|
+
const { isLoading: isLighterLoading, lighterNativeNeeded } = useLighterNativeFlowNeeded(apiKey, checkoutConfig);
|
|
27202
|
+
const enrichedAccountHoldings = useMemo44(() => {
|
|
26848
27203
|
if (!checkoutConfig) {
|
|
26849
27204
|
return [];
|
|
26850
27205
|
}
|
|
@@ -26869,6 +27224,7 @@ function useEnrichedAccountHoldings({
|
|
|
26869
27224
|
asset.pickedChainId,
|
|
26870
27225
|
asset.tokenAddress
|
|
26871
27226
|
),
|
|
27227
|
+
isLighterNative: !!lighterNativeNeeded,
|
|
26872
27228
|
t
|
|
26873
27229
|
});
|
|
26874
27230
|
return { asset, usableForCheckout };
|
|
@@ -26881,9 +27237,10 @@ function useEnrichedAccountHoldings({
|
|
|
26881
27237
|
walletAddress,
|
|
26882
27238
|
targetAssetInfo,
|
|
26883
27239
|
minTransferLimits,
|
|
27240
|
+
lighterNativeNeeded,
|
|
26884
27241
|
t
|
|
26885
27242
|
]);
|
|
26886
|
-
return { enrichedAccountHoldings, isLoading };
|
|
27243
|
+
return { enrichedAccountHoldings, isLoading: isLoading || isLighterLoading };
|
|
26887
27244
|
}
|
|
26888
27245
|
function useAssetOptions({
|
|
26889
27246
|
enrichedAccountHoldings,
|
|
@@ -26893,7 +27250,8 @@ function useAssetOptions({
|
|
|
26893
27250
|
}) {
|
|
26894
27251
|
const { apiKey } = useFunkitConfig();
|
|
26895
27252
|
const { t } = useFunkitTranslation();
|
|
26896
|
-
const
|
|
27253
|
+
const { findPath } = useDynamicRoutes();
|
|
27254
|
+
const assetOptions = useMemo44(() => {
|
|
26897
27255
|
return enrichedAccountHoldings.filter(
|
|
26898
27256
|
({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
|
|
26899
27257
|
).map(({ asset, usableForCheckout }) => {
|
|
@@ -26915,7 +27273,12 @@ function useAssetOptions({
|
|
|
26915
27273
|
badgeText = reason;
|
|
26916
27274
|
} else if (!isKnown) {
|
|
26917
27275
|
badgeText = t("badge.unknown");
|
|
26918
|
-
} else if (isTreatedAsNativeToken(
|
|
27276
|
+
} else if (isTreatedAsNativeToken(
|
|
27277
|
+
apiKey,
|
|
27278
|
+
asset,
|
|
27279
|
+
dynamicTargetAssetCandidates,
|
|
27280
|
+
findPath
|
|
27281
|
+
)) {
|
|
26919
27282
|
badgeText = "Native";
|
|
26920
27283
|
if (showsNativeTokensOnTop(apiKey)) {
|
|
26921
27284
|
priority = 1e3;
|
|
@@ -26944,7 +27307,8 @@ function useAssetOptions({
|
|
|
26944
27307
|
enrichedAccountHoldings,
|
|
26945
27308
|
chainId,
|
|
26946
27309
|
userSelectedTargetAsset,
|
|
26947
|
-
dynamicTargetAssetCandidates
|
|
27310
|
+
dynamicTargetAssetCandidates,
|
|
27311
|
+
findPath
|
|
26948
27312
|
]);
|
|
26949
27313
|
return assetOptions;
|
|
26950
27314
|
}
|
|
@@ -26990,7 +27354,19 @@ function AccountSelectAsset({
|
|
|
26990
27354
|
const { t } = useFunkitTranslation();
|
|
26991
27355
|
const [selectedChainId, setSelectedChainId] = useState57();
|
|
26992
27356
|
const { apiKey, textCustomizations, uiCustomizations } = useFunkitConfig();
|
|
26993
|
-
const {
|
|
27357
|
+
const {
|
|
27358
|
+
checkoutItem,
|
|
27359
|
+
updateSourceAsset,
|
|
27360
|
+
updateTargetAsset,
|
|
27361
|
+
applyDynamicRouting
|
|
27362
|
+
} = useCheckoutContext();
|
|
27363
|
+
const { walletAddress } = useGeneralWallet();
|
|
27364
|
+
const isLighter = isLighterxyzCustomer(apiKey);
|
|
27365
|
+
const { mainAccountIndex } = useLighterAccounts({
|
|
27366
|
+
address: walletAddress || "0x",
|
|
27367
|
+
isEnabled: isLighter && !!walletAddress && walletAddress !== "0x"
|
|
27368
|
+
});
|
|
27369
|
+
const { findPath } = useDynamicRoutes();
|
|
26994
27370
|
const { setSelectedBrokerageAsset } = useFunkitBrokerageContext();
|
|
26995
27371
|
const [explicitlySelectedChainTokenSymbol, setSelectedChainTokenSymbol] = useState57("");
|
|
26996
27372
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
@@ -27013,6 +27389,37 @@ function AccountSelectAsset({
|
|
|
27013
27389
|
});
|
|
27014
27390
|
const showTargetAssetSelection = isTargetAssetSelectable && uiCustomizations.selectAssetScreen.showTargetAssetSelection;
|
|
27015
27391
|
const handleTargetAssetUpdate = (tokenItem) => {
|
|
27392
|
+
const dynamicPath = findPath({
|
|
27393
|
+
chainId: tokenItem.pickedChainId,
|
|
27394
|
+
tokenAddress: tokenItem.tokenAddress
|
|
27395
|
+
});
|
|
27396
|
+
if (dynamicPath) {
|
|
27397
|
+
if (!walletAddress) {
|
|
27398
|
+
logger.error("handleTargetAssetUpdate_missingWalletAddress", {
|
|
27399
|
+
tokenItem,
|
|
27400
|
+
dynamicPath
|
|
27401
|
+
});
|
|
27402
|
+
return;
|
|
27403
|
+
}
|
|
27404
|
+
if (!mainAccountIndex) {
|
|
27405
|
+
logger.error("handleTargetAssetUpdate_missingMainAccountIndex", {
|
|
27406
|
+
tokenItem,
|
|
27407
|
+
dynamicPath
|
|
27408
|
+
});
|
|
27409
|
+
}
|
|
27410
|
+
applyDynamicRouting({
|
|
27411
|
+
targetAsset: dynamicPath.path.targetAsset,
|
|
27412
|
+
targetChain: dynamicPath.path.targetChain,
|
|
27413
|
+
targetAssetTicker: dynamicPath.path.targetAssetTicker,
|
|
27414
|
+
iconSrc: dynamicPath.path.iconSrc,
|
|
27415
|
+
generateActionsParams: walletAddress ? dynamicPath.path.generateActionsParams?.(walletAddress) : void 0,
|
|
27416
|
+
customRecipient: dynamicPath.path.getCustomRecipient?.({
|
|
27417
|
+
address: walletAddress,
|
|
27418
|
+
l2Address: mainAccountIndex
|
|
27419
|
+
})
|
|
27420
|
+
});
|
|
27421
|
+
return;
|
|
27422
|
+
}
|
|
27016
27423
|
if (!isTargetAssetSelectable) {
|
|
27017
27424
|
return;
|
|
27018
27425
|
}
|
|
@@ -27059,7 +27466,7 @@ function AccountSelectAsset({
|
|
|
27059
27466
|
handleTargetAssetUpdate(tokenItem);
|
|
27060
27467
|
onFinish();
|
|
27061
27468
|
});
|
|
27062
|
-
const selectedChainTokenSymbol =
|
|
27469
|
+
const selectedChainTokenSymbol = useMemo44(() => {
|
|
27063
27470
|
if (explicitlySelectedChainTokenSymbol) {
|
|
27064
27471
|
const assetExists = assetOptions.find(
|
|
27065
27472
|
({ asset }) => asset.chainSymbolKey === explicitlySelectedChainTokenSymbol
|
|
@@ -27093,11 +27500,32 @@ function AccountSelectAsset({
|
|
|
27093
27500
|
const isAssetsEmpty = assetOptions.length === 0;
|
|
27094
27501
|
const isDisabled = isAssetsEmpty || !selectedChainTokenSymbol || isLoading;
|
|
27095
27502
|
const onBalanceTopUpSwitch = checkoutItem?.initSettings.onBalanceTopUpSwitch;
|
|
27503
|
+
const showLighterEthMessage = isLighterEthSpot(apiKey, checkoutConfig) && assetOptions.every((asset) => asset.isDisabled);
|
|
27096
27504
|
const assetList = isLoading ? /* @__PURE__ */ React182.createElement(FunAssetLoading, { count: 5 }) : isAssetsEmpty ? /* @__PURE__ */ React182.createElement(
|
|
27097
27505
|
FunNoResults,
|
|
27098
27506
|
{
|
|
27099
|
-
text: t("checkout.noAvailableTokensMessage"),
|
|
27100
27507
|
title: t("checkout.noAvailableTokens"),
|
|
27508
|
+
text: t("checkout.noAvailableTokensMessage"),
|
|
27509
|
+
variant: "actionable",
|
|
27510
|
+
actionButton: onBalanceTopUpSwitch ? /* @__PURE__ */ React182.createElement(
|
|
27511
|
+
FunButton,
|
|
27512
|
+
{
|
|
27513
|
+
type: "tertiary",
|
|
27514
|
+
onClick: () => {
|
|
27515
|
+
if (onBalanceTopUpSwitch) {
|
|
27516
|
+
onBalanceTopUpSwitch();
|
|
27517
|
+
}
|
|
27518
|
+
onClose?.();
|
|
27519
|
+
},
|
|
27520
|
+
title: t("checkout.topUpWallet")
|
|
27521
|
+
}
|
|
27522
|
+
) : void 0
|
|
27523
|
+
}
|
|
27524
|
+
) : showLighterEthMessage ? /* @__PURE__ */ React182.createElement(
|
|
27525
|
+
FunNoResults,
|
|
27526
|
+
{
|
|
27527
|
+
title: t("checkout.insufficientEth"),
|
|
27528
|
+
text: t("checkout.insufficientEthMessage"),
|
|
27101
27529
|
variant: "actionable",
|
|
27102
27530
|
actionButton: onBalanceTopUpSwitch ? /* @__PURE__ */ React182.createElement(
|
|
27103
27531
|
FunButton,
|
|
@@ -27322,10 +27750,17 @@ function SelectAsset({
|
|
|
27322
27750
|
}
|
|
27323
27751
|
));
|
|
27324
27752
|
}
|
|
27325
|
-
function isTreatedAsNativeToken(apiKey, asset, dynamicTargetAssetCandidates) {
|
|
27753
|
+
function isTreatedAsNativeToken(apiKey, asset, dynamicTargetAssetCandidates, findDynamicPath) {
|
|
27754
|
+
const dynamicPath = findDynamicPath({
|
|
27755
|
+
chainId: asset.pickedChainId,
|
|
27756
|
+
tokenAddress: asset.tokenAddress
|
|
27757
|
+
});
|
|
27758
|
+
if (dynamicPath) {
|
|
27759
|
+
return dynamicPath.badge === "NATIVE";
|
|
27760
|
+
}
|
|
27326
27761
|
if (isEtherealCustomer(apiKey)) {
|
|
27327
27762
|
if (isTokenEquivalent5({
|
|
27328
|
-
firstTokenChainId:
|
|
27763
|
+
firstTokenChainId: mainnet11.id.toString(),
|
|
27329
27764
|
firstTokenAddress: "0x90d2af7d622ca3141efa4d8f1f24d86e5974cc8f",
|
|
27330
27765
|
// eUSDe (Ethereum)
|
|
27331
27766
|
secondTokenChainId: asset.pickedChainId,
|
|
@@ -27751,7 +28186,7 @@ function SourceChange({
|
|
|
27751
28186
|
|
|
27752
28187
|
// src/modals/CheckoutModal/TransferToken/TransferToken.tsx
|
|
27753
28188
|
import { motion as motion13, useAnimationControls as useAnimationControls3 } from "motion/react";
|
|
27754
|
-
import React196, { useRef as
|
|
28189
|
+
import React196, { useRef as useRef26, useState as useState62 } from "react";
|
|
27755
28190
|
import { createPortal as createPortal20 } from "react-dom";
|
|
27756
28191
|
|
|
27757
28192
|
// src/components/CopyAddress/CopyInputDisplayedAddress.tsx
|
|
@@ -27868,12 +28303,12 @@ function CopyInputDisplayedAddress(props) {
|
|
|
27868
28303
|
}
|
|
27869
28304
|
|
|
27870
28305
|
// src/components/FunInfoBanner/ChainInfoBanners.tsx
|
|
27871
|
-
import { FlagKey as
|
|
28306
|
+
import { FlagKey as FlagKey20 } from "@funkit/utils";
|
|
27872
28307
|
import React186 from "react";
|
|
27873
28308
|
var ChainInfoBanners = ({
|
|
27874
28309
|
chainId
|
|
27875
28310
|
}) => {
|
|
27876
|
-
const chainInfoBanners = useFlag(
|
|
28311
|
+
const chainInfoBanners = useFlag(FlagKey20.ChainInfoBanners);
|
|
27877
28312
|
const chainInfoBannersData = useSafeJSONParse(chainInfoBanners) ?? {};
|
|
27878
28313
|
try {
|
|
27879
28314
|
const chainBanners = chainInfoBannersData[chainId] ?? [];
|
|
@@ -27895,7 +28330,7 @@ var ChainInfoBanners = ({
|
|
|
27895
28330
|
|
|
27896
28331
|
// src/components/QRCode/QRCode.tsx
|
|
27897
28332
|
import QRCodeUtil from "qrcode";
|
|
27898
|
-
import React187, { useMemo as
|
|
28333
|
+
import React187, { useMemo as useMemo45 } from "react";
|
|
27899
28334
|
var generateMatrix = (value, errorCorrectionLevel) => {
|
|
27900
28335
|
const { data } = QRCodeUtil.create(value, { errorCorrectionLevel }).modules;
|
|
27901
28336
|
const sqrt = Math.sqrt(data.length);
|
|
@@ -27923,7 +28358,7 @@ function QRCode({
|
|
|
27923
28358
|
}) {
|
|
27924
28359
|
const { activeTheme } = useActiveTheme();
|
|
27925
28360
|
const size = sizeProp - Number.parseInt(outsidePadding, 10) * 2;
|
|
27926
|
-
const dots =
|
|
28361
|
+
const dots = useMemo45(() => {
|
|
27927
28362
|
const dots2 = [];
|
|
27928
28363
|
const matrix = generateMatrix(uri, ecl);
|
|
27929
28364
|
const cellSize = size / matrix.length;
|
|
@@ -28489,7 +28924,7 @@ function TransferToken({
|
|
|
28489
28924
|
const { checkoutItem } = useCheckoutContext();
|
|
28490
28925
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
28491
28926
|
const { transferToken } = modalState;
|
|
28492
|
-
const disclaimerTextWrapperRef =
|
|
28927
|
+
const disclaimerTextWrapperRef = useRef26(null);
|
|
28493
28928
|
const { transferInit } = useCheckoutTransferInit();
|
|
28494
28929
|
const {
|
|
28495
28930
|
assets,
|
|
@@ -29157,7 +29592,7 @@ var FiatAccountDetail = {
|
|
|
29157
29592
|
|
|
29158
29593
|
// src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
|
|
29159
29594
|
import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
|
|
29160
|
-
import React203, { useCallback as useCallback43, useEffect as useEffect50, useMemo as
|
|
29595
|
+
import React203, { useCallback as useCallback43, useEffect as useEffect50, useMemo as useMemo46, useState as useState64 } from "react";
|
|
29161
29596
|
function useIframeListener(listeners) {
|
|
29162
29597
|
const handleMessage = useCallback43(
|
|
29163
29598
|
(event) => {
|
|
@@ -29211,7 +29646,7 @@ function KycIframe({
|
|
|
29211
29646
|
const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
|
|
29212
29647
|
const { data: kycLink, isLoading: isLinkLoading } = useLoadKycLink(modalState);
|
|
29213
29648
|
const [iframeLoading, setIframeLoading] = useState64(true);
|
|
29214
|
-
const listeners =
|
|
29649
|
+
const listeners = useMemo46(
|
|
29215
29650
|
() => ({
|
|
29216
29651
|
load: () => {
|
|
29217
29652
|
logger.info("KYC iframe loaded");
|
|
@@ -29428,7 +29863,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
29428
29863
|
);
|
|
29429
29864
|
const { animation, animate } = useAnimatedNavigation(void 0);
|
|
29430
29865
|
const [stateHistory, setHistory] = useState65([]);
|
|
29431
|
-
const prevStep =
|
|
29866
|
+
const prevStep = useRef27(null);
|
|
29432
29867
|
const hasHistoryEntry = stateHistory.length > 1;
|
|
29433
29868
|
const onNext = useCallback44(
|
|
29434
29869
|
(payload) => {
|
|
@@ -29566,9 +30001,9 @@ function FunCheckoutModalHeightAnimationWrapper({
|
|
|
29566
30001
|
children,
|
|
29567
30002
|
checkoutStep
|
|
29568
30003
|
}) {
|
|
29569
|
-
const containerRef =
|
|
29570
|
-
const animationFrameRef =
|
|
29571
|
-
const resizeObserverRef =
|
|
30004
|
+
const containerRef = useRef28(null);
|
|
30005
|
+
const animationFrameRef = useRef28(null);
|
|
30006
|
+
const resizeObserverRef = useRef28(null);
|
|
29572
30007
|
const [height, setHeight] = useState66("auto");
|
|
29573
30008
|
useEffect51(() => {
|
|
29574
30009
|
if (containerRef.current) {
|
|
@@ -29628,7 +30063,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
|
|
|
29628
30063
|
import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
|
|
29629
30064
|
import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
|
|
29630
30065
|
import clsx24 from "clsx";
|
|
29631
|
-
import React213, { useEffect as useEffect52, useMemo as
|
|
30066
|
+
import React213, { useEffect as useEffect52, useMemo as useMemo47, useRef as useRef29, useState as useState68 } from "react";
|
|
29632
30067
|
import { Virtuoso } from "react-virtuoso";
|
|
29633
30068
|
import { useAccount as useAccount7 } from "wagmi";
|
|
29634
30069
|
|
|
@@ -30162,8 +30597,8 @@ function Home({
|
|
|
30162
30597
|
}) {
|
|
30163
30598
|
const { t } = useFunkitTranslation();
|
|
30164
30599
|
const [selectedView, setSelectedView] = useState68(defaultHomeTab);
|
|
30165
|
-
const checkoutsListRef =
|
|
30166
|
-
const virtuosoParentRef =
|
|
30600
|
+
const checkoutsListRef = useRef29(null);
|
|
30601
|
+
const virtuosoParentRef = useRef29(null);
|
|
30167
30602
|
const account = useAccount7();
|
|
30168
30603
|
useCheckoutHistoryListener();
|
|
30169
30604
|
const { userInfo, handleLogout } = useGeneralWallet();
|
|
@@ -30175,7 +30610,7 @@ function Home({
|
|
|
30175
30610
|
const virtuosoDiv = virtuosoParentRef.current?.firstChild;
|
|
30176
30611
|
virtuosoDiv?.classList.add(animateVirtuosoInClass);
|
|
30177
30612
|
}, []);
|
|
30178
|
-
const AssetsList =
|
|
30613
|
+
const AssetsList = useMemo47(() => {
|
|
30179
30614
|
if (walletAssets && !Object.keys(walletAssets).length) {
|
|
30180
30615
|
return /* @__PURE__ */ React213.createElement(EmptyTabAlert, null);
|
|
30181
30616
|
}
|
|
@@ -30202,7 +30637,7 @@ function Home({
|
|
|
30202
30637
|
}
|
|
30203
30638
|
));
|
|
30204
30639
|
}, [walletAssets]);
|
|
30205
|
-
const CheckoutsList =
|
|
30640
|
+
const CheckoutsList = useMemo47(() => {
|
|
30206
30641
|
if (checkoutHistoryList.length === 0 && isCheckoutHistoryInited) {
|
|
30207
30642
|
return /* @__PURE__ */ React213.createElement(EmptyTabAlert, null);
|
|
30208
30643
|
}
|
|
@@ -30922,10 +31357,10 @@ function ChainModal({ onClose, open }) {
|
|
|
30922
31357
|
// src/modals/CheckoutModal/FunCheckoutModal.tsx
|
|
30923
31358
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST3 } from "@funkit/chains";
|
|
30924
31359
|
import { LogLevel, initializeRelayClient } from "@funkit/fun-relay";
|
|
30925
|
-
import React231, { useRef as
|
|
31360
|
+
import React231, { useRef as useRef30 } from "react";
|
|
30926
31361
|
|
|
30927
31362
|
// src/components/FunConnectOptions/FunConnectOptions.tsx
|
|
30928
|
-
import React229, { useCallback as useCallback47, useMemo as
|
|
31363
|
+
import React229, { useCallback as useCallback47, useMemo as useMemo48, useState as useState72 } from "react";
|
|
30929
31364
|
|
|
30930
31365
|
// src/components/FunConnectOptions/FunConnectResultStep.tsx
|
|
30931
31366
|
import React224, { useEffect as useEffect53 } from "react";
|
|
@@ -31385,7 +31820,7 @@ function FunConnectOptions({
|
|
|
31385
31820
|
}
|
|
31386
31821
|
}
|
|
31387
31822
|
};
|
|
31388
|
-
const stepComponent =
|
|
31823
|
+
const stepComponent = useMemo48(() => {
|
|
31389
31824
|
switch (step) {
|
|
31390
31825
|
case 0 /* SIGNIN_PRIMARY */:
|
|
31391
31826
|
return /* @__PURE__ */ React229.createElement(
|
|
@@ -31529,7 +31964,7 @@ function FunCheckoutModalInner({
|
|
|
31529
31964
|
depositAddress
|
|
31530
31965
|
});
|
|
31531
31966
|
};
|
|
31532
|
-
const animationCallbackRef =
|
|
31967
|
+
const animationCallbackRef = useRef30(null);
|
|
31533
31968
|
const handleAnimationCompleteRegister = (cb) => {
|
|
31534
31969
|
animationCallbackRef.current = cb;
|
|
31535
31970
|
};
|
|
@@ -31550,12 +31985,18 @@ function FunCheckoutModalInner({
|
|
|
31550
31985
|
const isInitialStep = modalState.step === "loading_account" /* LOADING_ACCOUNT */;
|
|
31551
31986
|
const isBlocked = isUserGeoblocked || modalState.isBlocked;
|
|
31552
31987
|
const hasBack = hasHistoryEntry && !disableBack;
|
|
31988
|
+
const { apiKey } = useFunkitConfig();
|
|
31989
|
+
const lighterNativeDeposit = isLighterNativeFlow(
|
|
31990
|
+
apiKey,
|
|
31991
|
+
checkoutItem.initSettings.config
|
|
31992
|
+
);
|
|
31553
31993
|
const checkoutConfig = hideModalTitleMetaIfTrue(
|
|
31554
31994
|
checkoutItem.initSettings.config,
|
|
31555
31995
|
HIDE_MODAL_META_TITLE_AND_DIVIDER.includes(modalState.step)
|
|
31556
31996
|
);
|
|
31557
31997
|
const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
|
|
31558
31998
|
depositAddress: checkoutItem.depositAddress ?? void 0,
|
|
31999
|
+
isLighterNativeDeposit: lighterNativeDeposit,
|
|
31559
32000
|
isActiveCheckout: true,
|
|
31560
32001
|
isCheckoutDetailView: modalState.step === "checkout_complete" /* CHECKOUT_COMPLETE */,
|
|
31561
32002
|
paddingTop: 0,
|
|
@@ -31774,7 +32215,7 @@ function ModalProvider({ children }) {
|
|
|
31774
32215
|
return /* @__PURE__ */ React233.createElement(
|
|
31775
32216
|
ModalContext.Provider,
|
|
31776
32217
|
{
|
|
31777
|
-
value:
|
|
32218
|
+
value: useMemo49(
|
|
31778
32219
|
() => ({
|
|
31779
32220
|
accountModalOpen,
|
|
31780
32221
|
accountModalTab,
|
|
@@ -31907,7 +32348,8 @@ var FunkitCheckoutContext = createContext17({
|
|
|
31907
32348
|
setCompletedTimestamp: () => void 0,
|
|
31908
32349
|
withdrawalItem: null,
|
|
31909
32350
|
initNewWithdrawal: () => "",
|
|
31910
|
-
updateWithdrawalSourceAssetAmount: () => void 0
|
|
32351
|
+
updateWithdrawalSourceAssetAmount: () => void 0,
|
|
32352
|
+
applyDynamicRouting: () => void 0
|
|
31911
32353
|
});
|
|
31912
32354
|
function assertCheckoutItem(checkoutItem) {
|
|
31913
32355
|
if (!checkoutItem) {
|
|
@@ -31924,6 +32366,9 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
31924
32366
|
const { logEvent } = useTrack();
|
|
31925
32367
|
const [activeCheckout, setActiveCheckout] = useState74(null);
|
|
31926
32368
|
const [activeWithdrawal, setActiveWithdrawal] = useState74(null);
|
|
32369
|
+
const udaParams = useUDAParams(
|
|
32370
|
+
activeCheckout?.initSettings.config?.dynamicRoutingId
|
|
32371
|
+
);
|
|
31927
32372
|
const [checkoutsProgress, setCheckoutsProgress] = useState74({});
|
|
31928
32373
|
const getCheckoutProgress = useCallback49(
|
|
31929
32374
|
(checkoutId) => {
|
|
@@ -32171,7 +32616,8 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32171
32616
|
config: checkoutItem.initSettings.config,
|
|
32172
32617
|
walletAddress
|
|
32173
32618
|
}),
|
|
32174
|
-
apiKey: funkitConfig.apiKey
|
|
32619
|
+
apiKey: funkitConfig.apiKey,
|
|
32620
|
+
udaParams
|
|
32175
32621
|
});
|
|
32176
32622
|
if (!queryParams) {
|
|
32177
32623
|
const missingQueryParamsError = new Error(
|
|
@@ -32217,7 +32663,8 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32217
32663
|
updateActiveCheckout,
|
|
32218
32664
|
walletAddress,
|
|
32219
32665
|
getWithdrawalDirectExecution,
|
|
32220
|
-
logEvent
|
|
32666
|
+
logEvent,
|
|
32667
|
+
udaParams
|
|
32221
32668
|
]
|
|
32222
32669
|
);
|
|
32223
32670
|
const startRegularCheckout = useCallback49(
|
|
@@ -32362,6 +32809,27 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32362
32809
|
});
|
|
32363
32810
|
}
|
|
32364
32811
|
);
|
|
32812
|
+
const applyDynamicRouting = useEffectEvent(
|
|
32813
|
+
(path) => {
|
|
32814
|
+
updateActiveCheckout((checkoutItem) => {
|
|
32815
|
+
const config = checkoutItem.initSettings.config;
|
|
32816
|
+
return {
|
|
32817
|
+
initSettings: {
|
|
32818
|
+
...checkoutItem.initSettings,
|
|
32819
|
+
config: {
|
|
32820
|
+
...config,
|
|
32821
|
+
targetAsset: path.targetAsset,
|
|
32822
|
+
targetChain: path.targetChain,
|
|
32823
|
+
targetAssetTicker: path.targetAssetTicker ?? config.targetAssetTicker,
|
|
32824
|
+
iconSrc: path.iconSrc ?? config.iconSrc,
|
|
32825
|
+
generateActionsParams: path.generateActionsParams,
|
|
32826
|
+
customRecipient: path.customRecipient
|
|
32827
|
+
}
|
|
32828
|
+
}
|
|
32829
|
+
};
|
|
32830
|
+
});
|
|
32831
|
+
}
|
|
32832
|
+
);
|
|
32365
32833
|
const updateModalTitleMeta = useEffectEvent((newMeta) => {
|
|
32366
32834
|
updateActiveCheckout((checkoutItem) => {
|
|
32367
32835
|
const config = checkoutItem.initSettings.config;
|
|
@@ -32418,7 +32886,8 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32418
32886
|
withdrawalItem: activeWithdrawal,
|
|
32419
32887
|
initNewWithdrawal,
|
|
32420
32888
|
updateCustomRecipient,
|
|
32421
|
-
updateWithdrawalSourceAssetAmount
|
|
32889
|
+
updateWithdrawalSourceAssetAmount,
|
|
32890
|
+
applyDynamicRouting
|
|
32422
32891
|
};
|
|
32423
32892
|
return /* @__PURE__ */ React234.createElement(FunkitCheckoutContext.Provider, { value: contextValue }, children);
|
|
32424
32893
|
}
|
|
@@ -32437,7 +32906,7 @@ function useFunkitCheckout(props) {
|
|
|
32437
32906
|
const { openWithdrawalModal } = useWithdrawalModal();
|
|
32438
32907
|
const { connectModalOpen, openConnectModal } = useConnectModal();
|
|
32439
32908
|
const { isUserLoggedIn } = useGeneralWallet();
|
|
32440
|
-
const isCheckoutActivated = useFlag(
|
|
32909
|
+
const isCheckoutActivated = useFlag(FlagKey21.IsCheckoutActivated);
|
|
32441
32910
|
const onErrorWrapper = useCallback49(
|
|
32442
32911
|
(payload) => {
|
|
32443
32912
|
logger.warn(payload.message, payload);
|
|
@@ -32608,21 +33077,6 @@ async function validateCheckoutConfig(config) {
|
|
|
32608
33077
|
message: "Invalid generateActionsParams configuration: Must be a function."
|
|
32609
33078
|
};
|
|
32610
33079
|
}
|
|
32611
|
-
if (parsedTargetAssetAmount === 0) {
|
|
32612
|
-
return {
|
|
32613
|
-
isValid: false,
|
|
32614
|
-
message: "Invalid targetAssetAmount configuration: Has to be a number greater than 0"
|
|
32615
|
-
};
|
|
32616
|
-
}
|
|
32617
|
-
const initialActionsParams = await config.generateActionsParams(
|
|
32618
|
-
parsedTargetAssetAmount
|
|
32619
|
-
);
|
|
32620
|
-
if (!Array.isArray(initialActionsParams)) {
|
|
32621
|
-
return {
|
|
32622
|
-
isValid: false,
|
|
32623
|
-
message: "Invalid generateActionsParams configuration: Must return an array. If no actions are required, please specify an empty array ([]) instead."
|
|
32624
|
-
};
|
|
32625
|
-
}
|
|
32626
33080
|
}
|
|
32627
33081
|
if (!config.targetAssetTicker) {
|
|
32628
33082
|
return {
|
|
@@ -32871,12 +33325,12 @@ function computeDisplayDestinationToken(checkoutConfig, displayAssetAmount) {
|
|
|
32871
33325
|
}
|
|
32872
33326
|
|
|
32873
33327
|
// src/domains/feeEstimate.ts
|
|
32874
|
-
import { mainnet as
|
|
33328
|
+
import { mainnet as mainnet12 } from "viem/chains";
|
|
32875
33329
|
var L1_FEES_ESTIMATE = 1;
|
|
32876
33330
|
var L2_FEES_ESTIMATE = 1;
|
|
32877
33331
|
var BROKERAGE_FEES_ESTIMATE = 0;
|
|
32878
33332
|
var getBaseFeeUsdEstimate = (targetChainId, assetChainId) => {
|
|
32879
|
-
if (targetChainId !==
|
|
33333
|
+
if (targetChainId !== mainnet12.id.toString() && assetChainId !== mainnet12.id.toString()) {
|
|
32880
33334
|
return L2_FEES_ESTIMATE;
|
|
32881
33335
|
}
|
|
32882
33336
|
return L1_FEES_ESTIMATE;
|
|
@@ -32892,7 +33346,7 @@ var getFeesUsdEstimate = (targetChainId, assetChainId, paymentMethod) => {
|
|
|
32892
33346
|
var isStablecoin = (symbol) => STABLECOIN_SYMBOLS.find((s) => symbol.toLowerCase().includes(s.toLowerCase()));
|
|
32893
33347
|
function isPreferredChain(chainId, additionalChains = []) {
|
|
32894
33348
|
const chains = /* @__PURE__ */ new Set([
|
|
32895
|
-
|
|
33349
|
+
mainnet13.id,
|
|
32896
33350
|
polygon6.id,
|
|
32897
33351
|
base7.id,
|
|
32898
33352
|
arbitrum5.id,
|
|
@@ -32920,6 +33374,7 @@ var isAssetUsableToPayForCheckout = ({
|
|
|
32920
33374
|
assetUsdAmount,
|
|
32921
33375
|
isAllowedForCheckout,
|
|
32922
33376
|
minUsdRequired,
|
|
33377
|
+
isLighterNative,
|
|
32923
33378
|
t
|
|
32924
33379
|
}) => {
|
|
32925
33380
|
const finalCheckoutRecipient = getCheckoutRecipient({
|
|
@@ -32936,6 +33391,9 @@ var isAssetUsableToPayForCheckout = ({
|
|
|
32936
33391
|
minUsdRequired ?? 0
|
|
32937
33392
|
);
|
|
32938
33393
|
const isSameAsPurchasingToken = (() => {
|
|
33394
|
+
if (isLighterNative) {
|
|
33395
|
+
return false;
|
|
33396
|
+
}
|
|
32939
33397
|
if (isCheckoutPostActionRequired(config)) {
|
|
32940
33398
|
const vaultToken = config.stakingToken;
|
|
32941
33399
|
return vaultToken && isTokenEquivalent7({
|
|
@@ -32974,7 +33432,15 @@ var isAssetUsableToPayForCheckout = ({
|
|
|
32974
33432
|
minUsdRequired: minValueThreshold + feeEstimate
|
|
32975
33433
|
};
|
|
32976
33434
|
}
|
|
32977
|
-
|
|
33435
|
+
let isSupported = isAllowedForCheckout && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO14[assetChainId]?.isCheckoutSupported;
|
|
33436
|
+
if (isSupported && isLighterNative) {
|
|
33437
|
+
isSupported = isTokenEquivalent7({
|
|
33438
|
+
firstTokenChainId: assetChainId,
|
|
33439
|
+
firstTokenAddress: assetTokenAddress,
|
|
33440
|
+
secondTokenChainId: mainnet13.id.toString(),
|
|
33441
|
+
secondTokenAddress: NATIVE_TOKEN
|
|
33442
|
+
});
|
|
33443
|
+
}
|
|
32978
33444
|
return {
|
|
32979
33445
|
isUsable: !!isSupported,
|
|
32980
33446
|
reason: !isSupported ? t("payment.unsupported") : ""
|
|
@@ -33106,7 +33572,7 @@ var useWalletAssets = ({
|
|
|
33106
33572
|
} = {}) => {
|
|
33107
33573
|
const { address, isConnected } = useAccount11();
|
|
33108
33574
|
const { apiKey } = useFunkitConfig();
|
|
33109
|
-
const { data, isLoading, isFetching } =
|
|
33575
|
+
const { data, isLoading, isFetching } = useQuery22({
|
|
33110
33576
|
queryKey: ["getWalletAssets", address, apiKey],
|
|
33111
33577
|
queryFn: ({ queryKey: [_, addr, key] }) => fetchAssets(addr, key),
|
|
33112
33578
|
placeholderData: keepPreviousData2,
|
|
@@ -33904,9 +34370,9 @@ function cssStringFromTheme(theme, options = {}) {
|
|
|
33904
34370
|
}
|
|
33905
34371
|
|
|
33906
34372
|
// src/hooks/useFunkitMaxCheckoutUsdInfo.ts
|
|
33907
|
-
import { FlagKey as
|
|
34373
|
+
import { FlagKey as FlagKey22, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
|
|
33908
34374
|
var useFunkitMaxCheckoutUsdInfo = () => {
|
|
33909
|
-
const maxCheckoutUsd = Number(useFlag(
|
|
34375
|
+
const maxCheckoutUsd = Number(useFlag(FlagKey22.MaxCheckoutUsd));
|
|
33910
34376
|
const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify16(maxCheckoutUsd, {
|
|
33911
34377
|
decimalPrecisionForSuffix: 0,
|
|
33912
34378
|
minimumSignificantDigits: 0,
|
|
@@ -34023,6 +34489,8 @@ var en_default = {
|
|
|
34023
34489
|
checkout: {
|
|
34024
34490
|
noAvailableTokens: "No available tokens",
|
|
34025
34491
|
noAvailableTokensMessage: "You don't have any crypto tokens in your wallet. Top up or transfer crypto to your wallet to continue.",
|
|
34492
|
+
insufficientEth: "Insufficient ETH",
|
|
34493
|
+
insufficientEthMessage: "You don't have enough mainnet ETH in your wallet. You need at least 0.001 ETH to continue.",
|
|
34026
34494
|
topUpWallet: "Top up wallet",
|
|
34027
34495
|
refundProcessing: "Funds were withdrawn, but the transaction didn't complete. A refund is being processed.",
|
|
34028
34496
|
orderRefunded: "Your order was refunded.",
|
|
@@ -34521,6 +34989,8 @@ var es_default = {
|
|
|
34521
34989
|
checkout: {
|
|
34522
34990
|
noAvailableTokens: "No hay tokens disponibles",
|
|
34523
34991
|
noAvailableTokensMessage: "No tienes ning\xFAn token cripto en tu billetera. Recarga o transfiere cripto a tu billetera para continuar.",
|
|
34992
|
+
insufficientEth: "ETH insuficiente",
|
|
34993
|
+
insufficientEthMessage: "No tienes suficiente ETH de mainnet en tu billetera. Necesitas al menos 0.001 ETH para continuar.",
|
|
34524
34994
|
topUpWallet: "Recargar billetera",
|
|
34525
34995
|
refundProcessing: "Los fondos fueron retirados, pero la transacci\xF3n no se complet\xF3. Se est\xE1 procesando un reembolso.",
|
|
34526
34996
|
orderRefunded: "Tu pedido fue reembolsado.",
|
|
@@ -35019,6 +35489,8 @@ var fr_default = {
|
|
|
35019
35489
|
checkout: {
|
|
35020
35490
|
noAvailableTokens: "Aucun actif disponible",
|
|
35021
35491
|
noAvailableTokensMessage: "Vous n'avez aucun actif dans votre portefeuille. Approvisionnez ou transf\xE9rez des cryptomonnaies vers votre portefeuille pour continuer.",
|
|
35492
|
+
insufficientEth: "ETH insuffisant",
|
|
35493
|
+
insufficientEthMessage: "Vous n'avez pas assez d'ETH mainnet dans votre portefeuille. Vous avez besoin d'au moins 0,001 ETH pour continuer.",
|
|
35022
35494
|
topUpWallet: "Approvisionner le portefeuille",
|
|
35023
35495
|
refundProcessing: "Les fonds ont \xE9t\xE9 d\xE9bit\xE9s, mais la transaction n'a pas abouti. Un remboursement est en cours.",
|
|
35024
35496
|
orderRefunded: "Votre commande a \xE9t\xE9 rembours\xE9e.",
|
|
@@ -35517,6 +35989,8 @@ var ja_default = {
|
|
|
35517
35989
|
checkout: {
|
|
35518
35990
|
noAvailableTokens: "\u5229\u7528\u53EF\u80FD\u306A\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308A\u307E\u305B\u3093",
|
|
35519
35991
|
noAvailableTokensMessage: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u7D9A\u884C\u3059\u308B\u306B\u306F\u3001\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u3092\u30C1\u30E3\u30FC\u30B8\u307E\u305F\u306F\u9001\u91D1\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
35992
|
+
insufficientEth: "ETH\u6B8B\u9AD8\u4E0D\u8DB3",
|
|
35993
|
+
insufficientEthMessage: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30E1\u30A4\u30F3\u30CD\u30C3\u30C8ETH\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\u7D9A\u884C\u3059\u308B\u306B\u306F\u5C11\u306A\u304F\u3068\u30820.001 ETH\u304C\u5FC5\u8981\u3067\u3059\u3002",
|
|
35520
35994
|
topUpWallet: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30C1\u30E3\u30FC\u30B8",
|
|
35521
35995
|
refundProcessing: "\u8CC7\u91D1\u306F\u5F15\u304D\u51FA\u3055\u308C\u307E\u3057\u305F\u304C\u3001\u53D6\u5F15\u306F\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8FD4\u91D1\u51E6\u7406\u4E2D\u3067\u3059\u3002",
|
|
35522
35996
|
orderRefunded: "\u3054\u6CE8\u6587\u306F\u8FD4\u91D1\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
@@ -36015,6 +36489,8 @@ var ko_default = {
|
|
|
36015
36489
|
checkout: {
|
|
36016
36490
|
noAvailableTokens: "\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
|
|
36017
36491
|
noAvailableTokensMessage: "\uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0 \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uACC4\uC18D\uD558\uB824\uBA74 \uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0\uB97C \uCDA9\uC804\uD558\uAC70\uB098 \uC804\uC1A1\uD558\uC138\uC694.",
|
|
36492
|
+
insufficientEth: "ETH \uBD80\uC871",
|
|
36493
|
+
insufficientEthMessage: "\uC9C0\uAC11\uC5D0 \uBA54\uC778\uB137 ETH\uAC00 \uCDA9\uBD84\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uACC4\uC18D\uD558\uB824\uBA74 \uCD5C\uC18C 0.001 ETH\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.",
|
|
36018
36494
|
topUpWallet: "\uC9C0\uAC11 \uCDA9\uC804",
|
|
36019
36495
|
refundProcessing: "\uC790\uAE08\uC774 \uCD9C\uAE08\uB418\uC5C8\uC9C0\uB9CC \uAC70\uB798\uAC00 \uC644\uB8CC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD658\uBD88\uC774 \uCC98\uB9AC\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",
|
|
36020
36496
|
orderRefunded: "\uC8FC\uBB38\uC774 \uD658\uBD88\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
|
|
@@ -36513,6 +36989,8 @@ var ru_default = {
|
|
|
36513
36989
|
checkout: {
|
|
36514
36990
|
noAvailableTokens: "\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432",
|
|
36515
36991
|
noAvailableTokensMessage: "\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u0432 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435. \u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443 \u0432 \u043A\u043E\u0448\u0435\u043B\u0451\u043A \u0434\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F.",
|
|
36992
|
+
insufficientEth: "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E ETH",
|
|
36993
|
+
insufficientEthMessage: "\u0412 \u0432\u0430\u0448\u0435\u043C \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435 \u043D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E ETH \u0432 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u0435\u0442\u0438. \u0414\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u043D\u0435 \u043C\u0435\u043D\u0435\u0435 0.001 ETH.",
|
|
36516
36994
|
topUpWallet: "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A",
|
|
36517
36995
|
refundProcessing: "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u043B\u0438 \u0432\u044B\u0432\u0435\u0434\u0435\u043D\u044B, \u043D\u043E \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044F \u043D\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430. \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0442.",
|
|
36518
36996
|
orderRefunded: "\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0431\u044B\u043B \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D.",
|
|
@@ -37011,6 +37489,8 @@ var tr_default = {
|
|
|
37011
37489
|
checkout: {
|
|
37012
37490
|
noAvailableTokens: "Kullan\u0131labilir token yok",
|
|
37013
37491
|
noAvailableTokensMessage: "C\xFCzdan\u0131n\u0131zda kripto token bulunmamaktad\u0131r. Devam etmek i\xE7in c\xFCzdan\u0131n\u0131za para yat\u0131r\u0131n veya kripto transfer edin.",
|
|
37492
|
+
insufficientEth: "Yetersiz ETH",
|
|
37493
|
+
insufficientEthMessage: "C\xFCzdan\u0131n\u0131zda yeterli mainnet ETH bulunmuyor. Devam etmek i\xE7in en az 0.001 ETH gereklidir.",
|
|
37014
37494
|
topUpWallet: "C\xFCzdana para y\xFCkle",
|
|
37015
37495
|
refundProcessing: "\u0130ade edilecek fonlar haz\u0131rland\u0131, ancak i\u015Flem tamamlanmad\u0131. \u0130ade i\u015Flemi yap\u0131l\u0131yor.",
|
|
37016
37496
|
orderRefunded: "Sipari\u015Finiz iade edildi.",
|
|
@@ -37509,6 +37989,8 @@ var zh_default = {
|
|
|
37509
37989
|
checkout: {
|
|
37510
37990
|
noAvailableTokens: "\u6CA1\u6709\u53EF\u7528\u4EE3\u5E01",
|
|
37511
37991
|
noAvailableTokensMessage: "\u60A8\u7684\u94B1\u5305\u4E2D\u6CA1\u6709\u4EFB\u4F55\u52A0\u5BC6\u4EE3\u5E01\u3002\u5145\u503C\u6216\u8F6C\u8D26\u52A0\u5BC6\u8D27\u5E01\u5230\u60A8\u7684\u94B1\u5305\u4EE5\u7EE7\u7EED\u3002",
|
|
37992
|
+
insufficientEth: "ETH \u4E0D\u8DB3",
|
|
37993
|
+
insufficientEthMessage: "\u60A8\u7684\u94B1\u5305\u4E2D\u6CA1\u6709\u8DB3\u591F\u7684\u4E3B\u7F51 ETH\u3002\u60A8\u81F3\u5C11\u9700\u8981 0.001 ETH \u624D\u80FD\u7EE7\u7EED\u3002",
|
|
37512
37994
|
topUpWallet: "\u5145\u503C\u94B1\u5305",
|
|
37513
37995
|
refundProcessing: "\u8D44\u91D1\u5DF2\u63D0\u53D6\uFF0C\u4F46\u4EA4\u6613\u672A\u5B8C\u6210\u3002\u6B63\u5728\u5904\u7406\u9000\u6B3E\u3002",
|
|
37514
37996
|
orderRefunded: "\u60A8\u7684\u8BA2\u5355\u5DF2\u9000\u6B3E\u3002",
|
|
@@ -38052,7 +38534,7 @@ import React240, {
|
|
|
38052
38534
|
createContext as createContext18,
|
|
38053
38535
|
useContext as useContext18,
|
|
38054
38536
|
useEffect as useEffect59,
|
|
38055
|
-
useMemo as
|
|
38537
|
+
useMemo as useMemo50
|
|
38056
38538
|
} from "react";
|
|
38057
38539
|
import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
|
|
38058
38540
|
|
|
@@ -38138,7 +38620,7 @@ var createThemeRootSelector = (id) => {
|
|
|
38138
38620
|
function FunkitProvider(props) {
|
|
38139
38621
|
validateFunkitProviderProps(props);
|
|
38140
38622
|
const initialChainId = getInitialChainIdFromFunkitProviderProps(props);
|
|
38141
|
-
const finalWagmiConfig =
|
|
38623
|
+
const finalWagmiConfig = useMemo50(() => {
|
|
38142
38624
|
if (!props.wagmiConfig || !initialChainId) {
|
|
38143
38625
|
return void 0;
|
|
38144
38626
|
}
|
|
@@ -38148,7 +38630,7 @@ function FunkitProvider(props) {
|
|
|
38148
38630
|
});
|
|
38149
38631
|
}, [initialChainId, props.wagmiConfig, props.funkitConfig.appName]);
|
|
38150
38632
|
const finalQueryClient = props.queryClient;
|
|
38151
|
-
const sdkVersion =
|
|
38633
|
+
const sdkVersion = useMemo50(() => getCurrentSdkVersion(), []);
|
|
38152
38634
|
useEffect59(() => {
|
|
38153
38635
|
logger.configure(props.funkitConfig.apiKey, !!props.debug, sdkVersion);
|
|
38154
38636
|
}, [props.funkitConfig.apiKey, props.debug, sdkVersion]);
|
|
@@ -38183,9 +38665,9 @@ function FunkitProviderInner({
|
|
|
38183
38665
|
useFingerprint();
|
|
38184
38666
|
useAccountEffect3({ onDisconnect: clearWalletConnectDeepLink });
|
|
38185
38667
|
const { activeTheme } = useActiveTheme();
|
|
38186
|
-
const selector =
|
|
38187
|
-
const themeRootProps =
|
|
38188
|
-
const themeStyles =
|
|
38668
|
+
const selector = useMemo50(() => createThemeRootSelector(id), [id]);
|
|
38669
|
+
const themeRootProps = useMemo50(() => createThemeRootProps2(id), [id]);
|
|
38670
|
+
const themeStyles = useMemo50(() => {
|
|
38189
38671
|
if (!activeTheme) {
|
|
38190
38672
|
return "";
|
|
38191
38673
|
}
|
|
@@ -38193,7 +38675,7 @@ function FunkitProviderInner({
|
|
|
38193
38675
|
}, [activeTheme, selector]);
|
|
38194
38676
|
const avatarContext = avatar ?? defaultAvatar;
|
|
38195
38677
|
const isSandboxMode = !!sandbox;
|
|
38196
|
-
const modalSizeFinal = modalSize || ModalSizeOptions.
|
|
38678
|
+
const modalSizeFinal = modalSize || ModalSizeOptions.MEDIUM;
|
|
38197
38679
|
return /* @__PURE__ */ React240.createElement(FunkitI18nProvider, { locale }, /* @__PURE__ */ React240.createElement(FunkitStatsigProvider, { isDevelopment: debug }, /* @__PURE__ */ React240.createElement(FunkitConfigContext.Provider, { value: funkitConfig }, /* @__PURE__ */ React240.createElement(FunkitConnectChainProvider, { initialChain }, /* @__PURE__ */ React240.createElement(ModalSizeProvider, { modalSize: modalSizeFinal }, /* @__PURE__ */ React240.createElement(GeneralWalletProvider, null, /* @__PURE__ */ React240.createElement(FunkitFlagsProvider, null, /* @__PURE__ */ React240.createElement(FunkitCheckoutHistoryProvider, null, /* @__PURE__ */ React240.createElement(FunkitCheckoutProvider, null, /* @__PURE__ */ React240.createElement(FunkitSandboxContext.Provider, { value: isSandboxMode }, /* @__PURE__ */ React240.createElement(FunkitBrokerageProvider, null, /* @__PURE__ */ React240.createElement(FunkitQuoteProvider, null, /* @__PURE__ */ React240.createElement(AvatarContext.Provider, { value: avatarContext }, /* @__PURE__ */ React240.createElement(ThemeIdContext2.Provider, { value: id }, /* @__PURE__ */ React240.createElement(ShowBalanceProvider, null, /* @__PURE__ */ React240.createElement(UserPresenceProvider, null, /* @__PURE__ */ React240.createElement(ModalProvider, null, activeTheme ? /* @__PURE__ */ React240.createElement(
|
|
38198
38680
|
"div",
|
|
38199
38681
|
{
|