@funkit/connect 7.0.3-next.0 → 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 +19 -0
- package/dist/__generated__/default_configs.d.ts +181 -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 +1 -0
- package/dist/domains/asset.d.ts +2 -2
- package/dist/hooks/statsig/useDynamicConfig.d.ts +1 -1
- package/dist/hooks/track/useTrack.d.ts +3 -1
- package/dist/hooks/useCheckoutDirectExecution.d.ts +0 -1
- package/dist/hooks/useCheckoutTransferInit.d.ts +4 -2
- package/dist/hooks/useDynamicRoutes.d.ts +4 -0
- package/dist/hooks/useUDAParams.d.ts +9 -0
- package/dist/index.js +925 -586
- package/dist/providers/FunkitCheckoutContext/index.d.ts +6 -0
- package/dist/providers/FunkitCheckoutContext/types.d.ts +4 -0
- package/dist/utils/checkout.d.ts +0 -1
- package/dist/utils/customer.d.ts +196 -0
- package/dist/utils/flags/config.d.ts +14 -40
- package/dist/utils/funLogger.d.ts +3 -1
- package/dist/utils/lighter.d.ts +3 -3
- package/dist/wallets/walletConnectors/index.js +6 -6
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -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,56 +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
|
|
863
|
-
|
|
864
|
-
// src/consts/customers.ts
|
|
865
|
-
import {
|
|
866
|
-
AVANTIS_API_KEY,
|
|
867
|
-
BANKR_API_KEY,
|
|
868
|
-
BASED_API_KEY,
|
|
869
|
-
BSX_API_KEY,
|
|
870
|
-
ETHEREAL_API_KEY,
|
|
871
|
-
HYENA_API_KEY,
|
|
872
|
-
HYPERBEAT_API_KEY,
|
|
873
|
-
HYPERDASH_API_KEY,
|
|
874
|
-
KATANA_API_KEY,
|
|
875
|
-
LIGHTERXYZ_API_KEY,
|
|
876
|
-
MONAD_API_KEY,
|
|
877
|
-
MONKEY_TILT_API_KEY,
|
|
878
|
-
OSTIUM_API_KEY,
|
|
879
|
-
PERPL_API_KEY,
|
|
880
|
-
POLYMARKET_API_KEY
|
|
881
|
-
} from "@funkit/api-base";
|
|
882
|
-
function isPolymarketCustomer(apiKey) {
|
|
883
|
-
return apiKey === POLYMARKET_API_KEY;
|
|
884
|
-
}
|
|
885
|
-
function isOstiumCustomer(apiKey) {
|
|
886
|
-
return apiKey === OSTIUM_API_KEY;
|
|
887
|
-
}
|
|
888
|
-
function isBankrCustomer(apiKey) {
|
|
889
|
-
return apiKey === BANKR_API_KEY;
|
|
890
|
-
}
|
|
891
|
-
function isEtherealCustomer(apiKey) {
|
|
892
|
-
return apiKey === ETHEREAL_API_KEY;
|
|
893
|
-
}
|
|
894
|
-
function isKatanaCustomer(apiKey) {
|
|
895
|
-
return apiKey === KATANA_API_KEY;
|
|
896
|
-
}
|
|
897
|
-
function isMonadCustomer(apiKey) {
|
|
898
|
-
return apiKey === MONAD_API_KEY;
|
|
899
|
-
}
|
|
900
|
-
function isBasedCustomer(apiKey) {
|
|
901
|
-
return apiKey === BASED_API_KEY;
|
|
902
|
-
}
|
|
903
|
-
function isHyenaCustomer(apiKey) {
|
|
904
|
-
return apiKey === HYENA_API_KEY;
|
|
905
|
-
}
|
|
906
|
-
function isLighterxyzCustomer(apiKey) {
|
|
907
|
-
return apiKey === LIGHTERXYZ_API_KEY;
|
|
908
|
-
}
|
|
909
|
-
function isLighterEthSpot(apiKey, checkoutConfig) {
|
|
910
|
-
return checkoutConfig && isLighterxyzCustomer(apiKey) && checkoutConfig.qrcodeActionType === "LIGHTER_ETH_SPOT_DEPOSIT";
|
|
911
|
-
}
|
|
862
|
+
import { arbitrum as arbitrum5, base as base7, mainnet as mainnet13, optimism, polygon as polygon6 } from "viem/chains";
|
|
912
863
|
|
|
913
864
|
// src/modals/CheckoutModal/InputAmount/utils.ts
|
|
914
865
|
import { formatCurrencyAndStringify } from "@funkit/utils";
|
|
@@ -1114,7 +1065,7 @@ import {
|
|
|
1114
1065
|
initializeCheckout as postApiInitializeCheckout
|
|
1115
1066
|
} from "@funkit/api-base";
|
|
1116
1067
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO12 } from "@funkit/chains";
|
|
1117
|
-
import { FlagKey as
|
|
1068
|
+
import { FlagKey as FlagKey21, isNotNullish as isNotNullish8 } from "@funkit/utils";
|
|
1118
1069
|
import React234, {
|
|
1119
1070
|
createContext as createContext17,
|
|
1120
1071
|
useCallback as useCallback49,
|
|
@@ -1138,7 +1089,7 @@ function getCheckoutRecipient({
|
|
|
1138
1089
|
import { exhaustiveCheck, formatAddress } from "@funkit/utils";
|
|
1139
1090
|
|
|
1140
1091
|
// src/consts/bluvo.tsx
|
|
1141
|
-
import { ETHEREAL_API_KEY
|
|
1092
|
+
import { ETHEREAL_API_KEY } from "@funkit/api-base";
|
|
1142
1093
|
import React16 from "react";
|
|
1143
1094
|
|
|
1144
1095
|
// src/components/Icons/BinanceIcon.tsx
|
|
@@ -1254,7 +1205,7 @@ var KrakenIcon = ({ size = 24 }) => {
|
|
|
1254
1205
|
|
|
1255
1206
|
// src/consts/bluvo.tsx
|
|
1256
1207
|
var BLUVO_MIN_DEPOSIT_BY_CUSTOMER = {
|
|
1257
|
-
[
|
|
1208
|
+
[ETHEREAL_API_KEY]: 15
|
|
1258
1209
|
};
|
|
1259
1210
|
var SUPPORTED_EXCHANGES = [
|
|
1260
1211
|
{ exchange: "coinbase" /* Coinbase */, status: "live" /* Live */ },
|
|
@@ -1426,7 +1377,7 @@ function setFunkitConnectVersion({ version }) {
|
|
|
1426
1377
|
localStorage.setItem(storageKey, version);
|
|
1427
1378
|
}
|
|
1428
1379
|
function getCurrentSdkVersion() {
|
|
1429
|
-
return "7.0.3-next.
|
|
1380
|
+
return "7.0.3-next.1";
|
|
1430
1381
|
}
|
|
1431
1382
|
function useFingerprint() {
|
|
1432
1383
|
const fingerprint = useCallback3(() => {
|
|
@@ -1459,6 +1410,7 @@ var FunLogger = class {
|
|
|
1459
1410
|
this.userName = null;
|
|
1460
1411
|
this.userLoginType = null;
|
|
1461
1412
|
this.sdkVersion = null;
|
|
1413
|
+
this.l2Address = null;
|
|
1462
1414
|
}
|
|
1463
1415
|
getFunLogEnv() {
|
|
1464
1416
|
if (!this.apiKey || FUN_DEV_API_KEYS.includes(this.apiKey)) {
|
|
@@ -1584,11 +1536,15 @@ var FunLogger = class {
|
|
|
1584
1536
|
getUserLoginType() {
|
|
1585
1537
|
return this.userLoginType;
|
|
1586
1538
|
}
|
|
1587
|
-
|
|
1539
|
+
getL2Address() {
|
|
1540
|
+
return this.l2Address;
|
|
1541
|
+
}
|
|
1542
|
+
setUserInfo(userId, userAddress, userName, userLoginType, l2Address) {
|
|
1588
1543
|
this.userId = userId;
|
|
1589
1544
|
this.userAddress = userAddress;
|
|
1590
1545
|
this.userName = userName;
|
|
1591
1546
|
this.userLoginType = userLoginType;
|
|
1547
|
+
this.l2Address = l2Address ?? null;
|
|
1592
1548
|
}
|
|
1593
1549
|
};
|
|
1594
1550
|
datadogLogs.init({
|
|
@@ -1648,7 +1604,8 @@ var useTrack = () => {
|
|
|
1648
1604
|
userAgent,
|
|
1649
1605
|
appVersion,
|
|
1650
1606
|
customIDs: {
|
|
1651
|
-
apiKey
|
|
1607
|
+
apiKey,
|
|
1608
|
+
l2Address: userInfo.l2Address
|
|
1652
1609
|
},
|
|
1653
1610
|
custom: {
|
|
1654
1611
|
name: userInfo.name,
|
|
@@ -1813,6 +1770,7 @@ import React17, {
|
|
|
1813
1770
|
useContext as useContext6,
|
|
1814
1771
|
useEffect as useEffect6,
|
|
1815
1772
|
useMemo as useMemo6,
|
|
1773
|
+
useRef,
|
|
1816
1774
|
useState as useState7
|
|
1817
1775
|
} from "react";
|
|
1818
1776
|
import {
|
|
@@ -1822,6 +1780,116 @@ import {
|
|
|
1822
1780
|
useSwitchChain
|
|
1823
1781
|
} from "wagmi";
|
|
1824
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
|
+
|
|
1825
1893
|
// src/utils/funkitProvider.ts
|
|
1826
1894
|
function getInitialChainIdFromFunkitProviderProps(props) {
|
|
1827
1895
|
if (!props.wagmiConfig) {
|
|
@@ -1973,6 +2041,7 @@ function GeneralWalletProvider({ children }) {
|
|
|
1973
2041
|
const ensAvatar = useMainnetEnsAvatar(ensName);
|
|
1974
2042
|
const { externalUserId, apiKey } = useFunkitConfig();
|
|
1975
2043
|
const { updateUserAsync } = useTrack();
|
|
2044
|
+
const prevApiKeyRef = useRef(apiKey);
|
|
1976
2045
|
const loginType = !connector ? "guest" /* Guest */ : "web3" /* Web3 */;
|
|
1977
2046
|
const isUserLoggedIn = loginType !== "guest" /* Guest */ || !!externalUserId;
|
|
1978
2047
|
const userInfo = useMemo6(() => {
|
|
@@ -2005,20 +2074,28 @@ function GeneralWalletProvider({ children }) {
|
|
|
2005
2074
|
apiKey,
|
|
2006
2075
|
externalUserId
|
|
2007
2076
|
]);
|
|
2077
|
+
const { mainAccountIndex: l2Address } = useLighterAccounts({
|
|
2078
|
+
address
|
|
2079
|
+
});
|
|
2008
2080
|
useEffect6(() => {
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
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(
|
|
2012
2087
|
(error) => logger.error("updateUserAsync:error", error)
|
|
2013
2088
|
);
|
|
2014
2089
|
logger.setUserInfo(
|
|
2015
2090
|
userInfo.id,
|
|
2016
2091
|
userInfo.address,
|
|
2017
2092
|
userInfo.name,
|
|
2018
|
-
userInfo.type
|
|
2093
|
+
userInfo.type,
|
|
2094
|
+
userInfoWithL2Address.l2Address
|
|
2019
2095
|
);
|
|
2096
|
+
prevApiKeyRef.current = apiKey;
|
|
2020
2097
|
}
|
|
2021
|
-
}, [userInfo, updateUserAsync, apiKey]);
|
|
2098
|
+
}, [userInfo, updateUserAsync, apiKey, l2Address]);
|
|
2022
2099
|
const [logoutSymbol, triggerLogoutSymbol] = useSymbolRefresh_default();
|
|
2023
2100
|
const handleLogout = useCallback5(async () => {
|
|
2024
2101
|
logger.log("handleLogout_called");
|
|
@@ -2167,69 +2244,13 @@ async function disableAtomicBatchIfSupported(wallet, chainId) {
|
|
|
2167
2244
|
});
|
|
2168
2245
|
}
|
|
2169
2246
|
|
|
2170
|
-
// src/utils/lighter.ts
|
|
2171
|
-
import { getAddress } from "viem";
|
|
2172
|
-
var LIGHTER_DEPOSIT_ABI = [
|
|
2173
|
-
{
|
|
2174
|
-
inputs: [
|
|
2175
|
-
{ internalType: "address", name: "_to", type: "address" },
|
|
2176
|
-
{ internalType: "uint16", name: "_assetIndex", type: "uint16" },
|
|
2177
|
-
{
|
|
2178
|
-
internalType: "enum TxTypes.RouteType",
|
|
2179
|
-
name: "_routeType",
|
|
2180
|
-
type: "uint8"
|
|
2181
|
-
},
|
|
2182
|
-
{ internalType: "uint256", name: "_amount", type: "uint256" }
|
|
2183
|
-
],
|
|
2184
|
-
name: "deposit",
|
|
2185
|
-
outputs: [],
|
|
2186
|
-
stateMutability: "payable",
|
|
2187
|
-
type: "function"
|
|
2188
|
-
},
|
|
2189
|
-
{
|
|
2190
|
-
inputs: [{ internalType: "address", name: "", type: "address" }],
|
|
2191
|
-
name: "addressToAccountIndex",
|
|
2192
|
-
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
|
|
2193
|
-
stateMutability: "view",
|
|
2194
|
-
type: "function"
|
|
2195
|
-
},
|
|
2196
|
-
{
|
|
2197
|
-
inputs: [{ internalType: "uint16", name: "assetIndex", type: "uint16" }],
|
|
2198
|
-
name: "assetConfigs",
|
|
2199
|
-
outputs: [
|
|
2200
|
-
{ internalType: "address", name: "tokenAddress", type: "address" },
|
|
2201
|
-
{
|
|
2202
|
-
internalType: "uint8",
|
|
2203
|
-
name: "withdrawalsEnabled",
|
|
2204
|
-
type: "uint8"
|
|
2205
|
-
},
|
|
2206
|
-
{
|
|
2207
|
-
internalType: "uint56",
|
|
2208
|
-
name: "extensionMultiplier",
|
|
2209
|
-
type: "uint56"
|
|
2210
|
-
},
|
|
2211
|
-
{ internalType: "uint128", name: "tickSize", type: "uint128" },
|
|
2212
|
-
{ internalType: "uint64", name: "depositCapTicks", type: "uint64" },
|
|
2213
|
-
{ internalType: "uint64", name: "minDepositTicks", type: "uint64" }
|
|
2214
|
-
],
|
|
2215
|
-
stateMutability: "view",
|
|
2216
|
-
type: "function"
|
|
2217
|
-
}
|
|
2218
|
-
];
|
|
2219
|
-
var LIGHTER_DEPOSIT_ADDRESS = getAddress(
|
|
2220
|
-
"0x3b4d794a66304f130a4db8f2551b0070dfcf5ca7"
|
|
2221
|
-
);
|
|
2222
|
-
var roundDownToTick = (amount, tickSize) => {
|
|
2223
|
-
return amount - amount % tickSize;
|
|
2224
|
-
};
|
|
2225
|
-
|
|
2226
2247
|
// src/hooks/useRelayBypass.ts
|
|
2227
2248
|
import { FlagKey as FlagKey3, isTokenAddressEquivalent } from "@funkit/utils";
|
|
2228
2249
|
import { useCallback as useCallback6, useMemo as useMemo10 } from "react";
|
|
2229
2250
|
|
|
2230
2251
|
// src/providers/FunkitFlagsProvider.tsx
|
|
2231
2252
|
import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
|
|
2232
|
-
import { useQuery as
|
|
2253
|
+
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
2233
2254
|
import React18, {
|
|
2234
2255
|
createContext as createContext7,
|
|
2235
2256
|
useContext as useContext7,
|
|
@@ -2243,31 +2264,26 @@ import {
|
|
|
2243
2264
|
BANKR_API_KEY as BANKR_API_KEY2,
|
|
2244
2265
|
BASED_API_KEY as BASED_API_KEY2,
|
|
2245
2266
|
BULLPEN_API_KEY,
|
|
2246
|
-
CAMBRIA_API_KEY,
|
|
2247
2267
|
ETHEREAL_API_KEY as ETHEREAL_API_KEY3,
|
|
2248
2268
|
FELIX_API_KEY,
|
|
2249
|
-
GINZA_API_KEY,
|
|
2250
2269
|
HYENA_API_KEY as HYENA_API_KEY2,
|
|
2251
2270
|
HYPERBEAT_API_KEY as HYPERBEAT_API_KEY2,
|
|
2252
2271
|
HYPERDASH_API_KEY as HYPERDASH_API_KEY2,
|
|
2253
2272
|
HYPEREDGE_API_KEY,
|
|
2254
2273
|
HYPERSWAP_API_KEY,
|
|
2255
2274
|
KATANA_API_KEY as KATANA_API_KEY2,
|
|
2256
|
-
LIGHTERXYZ_API_KEY as LIGHTERXYZ_API_KEY2,
|
|
2257
2275
|
MEGAPOT_API_KEY,
|
|
2258
2276
|
MONAD_API_KEY as MONAD_API_KEY2,
|
|
2259
|
-
MONKEY_TILT_API_KEY as MONKEY_TILT_API_KEY2,
|
|
2260
2277
|
OSTIUM_API_KEY as OSTIUM_API_KEY2,
|
|
2261
2278
|
PERPL_API_KEY as PERPL_API_KEY2,
|
|
2262
2279
|
POLYMARKET_API_KEY as POLYMARKET_API_KEY2,
|
|
2263
2280
|
RAREBETSPORTS_API_KEY,
|
|
2264
2281
|
SUSHI_API_KEY,
|
|
2265
|
-
TRADEFOX_API_KEY,
|
|
2266
2282
|
VENTUALS_API_KEY
|
|
2267
2283
|
} from "@funkit/api-base";
|
|
2268
|
-
import { MONAD_CHAIN_ID
|
|
2284
|
+
import { MONAD_CHAIN_ID } from "@funkit/chains";
|
|
2269
2285
|
import { FlagKey } from "@funkit/utils";
|
|
2270
|
-
import { arbitrum, base as base3, polygon } from "viem/chains";
|
|
2286
|
+
import { arbitrum, base as base3, mainnet as mainnet5, polygon } from "viem/chains";
|
|
2271
2287
|
var FUN_INTERNAL_USERS = [
|
|
2272
2288
|
"0x6ec0c2f25d323e7779925Cc20c3740101f990d9F",
|
|
2273
2289
|
// Chloe
|
|
@@ -2367,8 +2383,9 @@ var QR_CODE_WITH_SOLANA = {
|
|
|
2367
2383
|
1151111081099710: ["SOL", "USDC", "USDT", "TRUMP", "USDe"]
|
|
2368
2384
|
};
|
|
2369
2385
|
var QR_CODE_WITH_BITCOIN = {
|
|
2370
|
-
...QR_CODE_WITH_SOLANA
|
|
2371
|
-
|
|
2386
|
+
...QR_CODE_WITH_SOLANA
|
|
2387
|
+
// uncomment to re-enable bitcoin
|
|
2388
|
+
// [bitcoinChain.id]: ['BTC'],
|
|
2372
2389
|
};
|
|
2373
2390
|
var QR_CODE_WITH_MONAD = {
|
|
2374
2391
|
...QR_CODE_WITH_BITCOIN,
|
|
@@ -2445,7 +2462,7 @@ var flagConfig = {
|
|
|
2445
2462
|
},
|
|
2446
2463
|
[FlagKey.EnableTokenTransfer]: {
|
|
2447
2464
|
type: "boolean",
|
|
2448
|
-
default_value:
|
|
2465
|
+
default_value: true,
|
|
2449
2466
|
overrides: [
|
|
2450
2467
|
{
|
|
2451
2468
|
if_any: [
|
|
@@ -2457,59 +2474,12 @@ var flagConfig = {
|
|
|
2457
2474
|
],
|
|
2458
2475
|
value: true
|
|
2459
2476
|
},
|
|
2460
|
-
|
|
2461
|
-
if_any: [
|
|
2462
|
-
{
|
|
2463
|
-
key: "userId",
|
|
2464
|
-
type: "isAnyOf",
|
|
2465
|
-
values: FUN_INTERNAL_USERS
|
|
2466
|
-
}
|
|
2467
|
-
],
|
|
2468
|
-
value: true
|
|
2469
|
-
},
|
|
2470
|
-
disableFlagForCountries(US_COUNTRY_CODES),
|
|
2471
|
-
{
|
|
2472
|
-
if_any: [
|
|
2473
|
-
{
|
|
2474
|
-
key: "apiKey",
|
|
2475
|
-
type: "isAnyOf",
|
|
2476
|
-
values: [
|
|
2477
|
-
AVANTIS_API_KEY2,
|
|
2478
|
-
BANKR_API_KEY2,
|
|
2479
|
-
BASED_API_KEY2,
|
|
2480
|
-
BULLPEN_API_KEY,
|
|
2481
|
-
CAMBRIA_API_KEY,
|
|
2482
|
-
ETHEREAL_API_KEY3,
|
|
2483
|
-
FELIX_API_KEY,
|
|
2484
|
-
GINZA_API_KEY,
|
|
2485
|
-
HYENA_API_KEY2,
|
|
2486
|
-
HYPERBEAT_API_KEY2,
|
|
2487
|
-
HYPERDASH_API_KEY2,
|
|
2488
|
-
HYPEREDGE_API_KEY,
|
|
2489
|
-
HYPERSWAP_API_KEY,
|
|
2490
|
-
KATANA_API_KEY2,
|
|
2491
|
-
LIGHTERXYZ_API_KEY2,
|
|
2492
|
-
LIGHTERXYZ_API_KEY2,
|
|
2493
|
-
MEGAPOT_API_KEY,
|
|
2494
|
-
MONAD_API_KEY2,
|
|
2495
|
-
MONKEY_TILT_API_KEY2,
|
|
2496
|
-
OSTIUM_API_KEY2,
|
|
2497
|
-
PERPL_API_KEY2,
|
|
2498
|
-
POLYMARKET_API_KEY2,
|
|
2499
|
-
RAREBETSPORTS_API_KEY,
|
|
2500
|
-
SUSHI_API_KEY,
|
|
2501
|
-
VENTUALS_API_KEY,
|
|
2502
|
-
TRADEFOX_API_KEY
|
|
2503
|
-
]
|
|
2504
|
-
}
|
|
2505
|
-
],
|
|
2506
|
-
value: true
|
|
2507
|
-
}
|
|
2477
|
+
disableFlagForCountries(US_COUNTRY_CODES)
|
|
2508
2478
|
]
|
|
2509
2479
|
},
|
|
2510
2480
|
[FlagKey.EnableFiatDeposit]: {
|
|
2511
2481
|
type: "boolean",
|
|
2512
|
-
default_value:
|
|
2482
|
+
default_value: true,
|
|
2513
2483
|
overrides: [
|
|
2514
2484
|
{
|
|
2515
2485
|
if_any: [
|
|
@@ -2521,17 +2491,7 @@ var flagConfig = {
|
|
|
2521
2491
|
],
|
|
2522
2492
|
value: true
|
|
2523
2493
|
},
|
|
2524
|
-
disableFlagForCountries(US_COUNTRY_CODES)
|
|
2525
|
-
{
|
|
2526
|
-
if_any: [
|
|
2527
|
-
{
|
|
2528
|
-
key: "userId",
|
|
2529
|
-
type: "pctRollout",
|
|
2530
|
-
pct: 100
|
|
2531
|
-
}
|
|
2532
|
-
],
|
|
2533
|
-
value: true
|
|
2534
|
-
}
|
|
2494
|
+
disableFlagForCountries(US_COUNTRY_CODES)
|
|
2535
2495
|
]
|
|
2536
2496
|
},
|
|
2537
2497
|
[FlagKey.TokenTransferSourceChainsAndAssets]: {
|
|
@@ -2557,6 +2517,24 @@ var flagConfig = {
|
|
|
2557
2517
|
5064014: void 0
|
|
2558
2518
|
})
|
|
2559
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
|
+
},
|
|
2560
2538
|
// Omit MON as a source asset for Monad
|
|
2561
2539
|
{
|
|
2562
2540
|
if_any: [
|
|
@@ -2651,6 +2629,17 @@ var flagConfig = {
|
|
|
2651
2629
|
value: base3.id.toString()
|
|
2652
2630
|
},
|
|
2653
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
|
|
2654
2643
|
{
|
|
2655
2644
|
if_any: [
|
|
2656
2645
|
{
|
|
@@ -2659,7 +2648,7 @@ var flagConfig = {
|
|
|
2659
2648
|
values: [POLYMARKET_API_KEY2]
|
|
2660
2649
|
}
|
|
2661
2650
|
],
|
|
2662
|
-
value:
|
|
2651
|
+
value: mainnet5.id.toString()
|
|
2663
2652
|
}
|
|
2664
2653
|
]
|
|
2665
2654
|
},
|
|
@@ -2771,32 +2760,15 @@ var flagConfig = {
|
|
|
2771
2760
|
]
|
|
2772
2761
|
})
|
|
2773
2762
|
},
|
|
2774
|
-
[FlagKey.HelpTutorialUrl]: {
|
|
2775
|
-
type: "string",
|
|
2776
|
-
default_value: ""
|
|
2777
|
-
},
|
|
2778
2763
|
[FlagKey.EnableCard]: {
|
|
2779
2764
|
type: "boolean",
|
|
2780
|
-
default_value:
|
|
2781
|
-
overrides: [
|
|
2782
|
-
disableFlagForCountries(US_COUNTRY_CODES),
|
|
2783
|
-
{
|
|
2784
|
-
if_any: [
|
|
2785
|
-
{
|
|
2786
|
-
key: "apiKey",
|
|
2787
|
-
type: "isAnyOf",
|
|
2788
|
-
values: [KATANA_API_KEY2]
|
|
2789
|
-
}
|
|
2790
|
-
],
|
|
2791
|
-
value: false
|
|
2792
|
-
}
|
|
2793
|
-
]
|
|
2765
|
+
default_value: false,
|
|
2766
|
+
overrides: []
|
|
2794
2767
|
},
|
|
2795
2768
|
// cannot re-use this flag for brokerage flow or clients that are using older versions of the SDK will be impacted
|
|
2796
2769
|
[FlagKey.EnableBrokerage]: {
|
|
2797
2770
|
type: "boolean",
|
|
2798
|
-
default_value: false
|
|
2799
|
-
overrides: [disableFlagForCountries(US_COUNTRY_CODES)]
|
|
2771
|
+
default_value: false
|
|
2800
2772
|
},
|
|
2801
2773
|
[FlagKey.EnableBluvoBrokerage]: {
|
|
2802
2774
|
type: "boolean",
|
|
@@ -2970,7 +2942,8 @@ var flagConfig = {
|
|
|
2970
2942
|
},
|
|
2971
2943
|
[FlagKey.EnableBitcoin]: {
|
|
2972
2944
|
type: "boolean",
|
|
2973
|
-
|
|
2945
|
+
// uncomment to re-enable bitcoin
|
|
2946
|
+
default_value: false,
|
|
2974
2947
|
overrides: [
|
|
2975
2948
|
// Actually disable bitcoin for Ethereal
|
|
2976
2949
|
{
|
|
@@ -3149,7 +3122,7 @@ function evalCondition(flagKey, condition, context) {
|
|
|
3149
3122
|
}
|
|
3150
3123
|
|
|
3151
3124
|
// src/providers/FunkitMoonpayProvider.tsx
|
|
3152
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3125
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
3153
3126
|
import { useMemo as useMemo7 } from "react";
|
|
3154
3127
|
import { FlagKey as FlagKey2 } from "@funkit/utils";
|
|
3155
3128
|
var MOONPAY_LIVE_API_KEY = "pk_live_IxayBRQuBC3RzpPZkbGPrwUsRWAaeO";
|
|
@@ -3196,7 +3169,7 @@ function useFunkitUserIp() {
|
|
|
3196
3169
|
const { apiKey } = useFunkitConfig();
|
|
3197
3170
|
const isPolymarket = isPolymarketCustomer(apiKey);
|
|
3198
3171
|
const { isUserLoggedIn } = useGeneralWallet();
|
|
3199
|
-
const { data: userIpInfo, isLoading: isLoadingGeoCheck } =
|
|
3172
|
+
const { data: userIpInfo, isLoading: isLoadingGeoCheck } = useQuery2({
|
|
3200
3173
|
queryKey: ["getUserIpInfo"],
|
|
3201
3174
|
queryFn: async () => {
|
|
3202
3175
|
try {
|
|
@@ -3260,7 +3233,7 @@ function FunkitFlagsProvider({ children }) {
|
|
|
3260
3233
|
data: onlineConfig,
|
|
3261
3234
|
error,
|
|
3262
3235
|
isLoading
|
|
3263
|
-
} =
|
|
3236
|
+
} = useQuery3({
|
|
3264
3237
|
queryKey: ["flags"],
|
|
3265
3238
|
queryFn: fetchConfigFromServer,
|
|
3266
3239
|
refetchOnMount: false,
|
|
@@ -3468,19 +3441,17 @@ function useCheckoutDirectExecution() {
|
|
|
3468
3441
|
const fromAmountBaseUnit = BigInt(
|
|
3469
3442
|
Math.floor(fromTokenAmount * multiplier2)
|
|
3470
3443
|
);
|
|
3471
|
-
const roundedFromAmountBaseUnit = params.tickSize ? roundDownToTick(fromAmountBaseUnit, params.tickSize) : fromAmountBaseUnit;
|
|
3472
3444
|
return await getCheckoutQuoteV2({
|
|
3473
3445
|
...getCheckoutQuoteParams,
|
|
3474
|
-
fromAmountBaseUnit
|
|
3446
|
+
fromAmountBaseUnit
|
|
3475
3447
|
});
|
|
3476
3448
|
}
|
|
3477
3449
|
const { toTokenAmount, toTokenDecimals } = params;
|
|
3478
3450
|
const multiplier = 10 ** toTokenDecimals;
|
|
3479
3451
|
const toAmountBaseUnit = BigInt(Math.floor(toTokenAmount * multiplier));
|
|
3480
|
-
const roundedToAmountBaseUnit = params.tickSize ? roundDownToTick(toAmountBaseUnit, params.tickSize) : toAmountBaseUnit;
|
|
3481
3452
|
return await getCheckoutQuoteV2({
|
|
3482
3453
|
...getCheckoutQuoteParams,
|
|
3483
|
-
toAmountBaseUnit
|
|
3454
|
+
toAmountBaseUnit
|
|
3484
3455
|
});
|
|
3485
3456
|
},
|
|
3486
3457
|
[address, apiKey]
|
|
@@ -3659,8 +3630,301 @@ function useCheckoutDirectExecution() {
|
|
|
3659
3630
|
import {
|
|
3660
3631
|
initializeCheckoutTokenTransferAddress
|
|
3661
3632
|
} from "@funkit/api-base";
|
|
3633
|
+
import { lighterChain } from "@funkit/chains";
|
|
3662
3634
|
import { FlagKey as FlagKey4 } from "@funkit/utils";
|
|
3663
|
-
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
|
|
3664
3928
|
var COMMON_CLIENT_METADATA = generateClientMetadataForTokenTransfer();
|
|
3665
3929
|
async function checkoutTransferFetch(params) {
|
|
3666
3930
|
return await initializeCheckoutTokenTransferAddress({
|
|
@@ -3673,7 +3937,8 @@ function getCheckoutTokenTransferParams({
|
|
|
3673
3937
|
checkoutConfig,
|
|
3674
3938
|
userId,
|
|
3675
3939
|
recipientAddr,
|
|
3676
|
-
apiKey
|
|
3940
|
+
apiKey,
|
|
3941
|
+
udaParams
|
|
3677
3942
|
}) {
|
|
3678
3943
|
if (!checkoutConfig) {
|
|
3679
3944
|
return;
|
|
@@ -3687,6 +3952,14 @@ function getCheckoutTokenTransferParams({
|
|
|
3687
3952
|
recipientAddr,
|
|
3688
3953
|
actionType: checkoutConfig.qrcodeActionType
|
|
3689
3954
|
};
|
|
3955
|
+
if (udaParams) {
|
|
3956
|
+
return {
|
|
3957
|
+
...commonParams,
|
|
3958
|
+
toChainId: udaParams.targetChain,
|
|
3959
|
+
toTokenAddress: udaParams.targetAsset,
|
|
3960
|
+
actionType: udaParams.qrcodeActionType
|
|
3961
|
+
};
|
|
3962
|
+
}
|
|
3690
3963
|
const dynamicTargetAssetCandidates = checkoutConfig.dynamicTargetAssetCandidates;
|
|
3691
3964
|
if (dynamicTargetAssetCandidates?.[0]) {
|
|
3692
3965
|
const defaultCandidate = dynamicTargetAssetCandidates.find((candidate) => candidate.isDefault) || dynamicTargetAssetCandidates[0];
|
|
@@ -3713,10 +3986,17 @@ function getCheckoutTokenTransferParams({
|
|
|
3713
3986
|
}
|
|
3714
3987
|
function useIsQRCodeTransferEnabled() {
|
|
3715
3988
|
const { checkoutItem } = useCheckoutContext();
|
|
3716
|
-
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
3717
3989
|
const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
|
|
3718
|
-
const
|
|
3719
|
-
|
|
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;
|
|
3720
4000
|
}
|
|
3721
4001
|
var useCheckoutTransferInit = (enabled = true) => {
|
|
3722
4002
|
const { checkoutItem } = useCheckoutContext();
|
|
@@ -3724,19 +4004,31 @@ var useCheckoutTransferInit = (enabled = true) => {
|
|
|
3724
4004
|
const isQrCodeEnabled = useIsQRCodeTransferEnabled();
|
|
3725
4005
|
const { walletAddress, userInfo } = useGeneralWallet();
|
|
3726
4006
|
const { apiKey } = useFunkitConfig();
|
|
3727
|
-
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
|
+
})();
|
|
3728
4019
|
const userId = userInfo.id || "";
|
|
3729
4020
|
const queryKey = getCheckoutTokenTransferParams({
|
|
3730
4021
|
checkoutConfig,
|
|
3731
4022
|
userId,
|
|
3732
4023
|
apiKey,
|
|
3733
|
-
recipientAddr
|
|
4024
|
+
recipientAddr,
|
|
4025
|
+
udaParams
|
|
3734
4026
|
});
|
|
3735
4027
|
const postActionOverride = isHyenaCustomer(apiKey);
|
|
3736
4028
|
const isQRCodeEnabledWithPostAction = !!checkoutConfig && // either no post action required
|
|
3737
4029
|
(!isCheckoutPostActionRequired(checkoutConfig) || // or action type is set
|
|
3738
|
-
!!checkoutConfig?.qrcodeActionType || postActionOverride);
|
|
3739
|
-
const { data, isFetching } =
|
|
4030
|
+
!!checkoutConfig?.qrcodeActionType || postActionOverride || !!queryKey?.actionType);
|
|
4031
|
+
const { data, isFetching } = useQuery4({
|
|
3740
4032
|
queryKey: ["initializeCheckoutTokenTransferAddress", queryKey],
|
|
3741
4033
|
queryFn: ({ queryKey: [_, queryKey2] }) => queryKey2 ? checkoutTransferFetch(queryKey2) : void 0,
|
|
3742
4034
|
refetchOnWindowFocus: false,
|
|
@@ -3752,9 +4044,9 @@ var useCheckoutTransferInit = (enabled = true) => {
|
|
|
3752
4044
|
};
|
|
3753
4045
|
|
|
3754
4046
|
// src/hooks/useEffectEvent.ts
|
|
3755
|
-
import { useCallback as useCallback8, useInsertionEffect, useRef } from "react";
|
|
4047
|
+
import { useCallback as useCallback8, useInsertionEffect, useRef as useRef2 } from "react";
|
|
3756
4048
|
function useEffectEvent(fn) {
|
|
3757
|
-
const savedCallback =
|
|
4049
|
+
const savedCallback = useRef2(fn);
|
|
3758
4050
|
useInsertionEffect(() => {
|
|
3759
4051
|
savedCallback.current = fn;
|
|
3760
4052
|
}, [fn]);
|
|
@@ -3800,11 +4092,11 @@ import React19, {
|
|
|
3800
4092
|
useCallback as useCallback9,
|
|
3801
4093
|
useContext as useContext8,
|
|
3802
4094
|
useEffect as useEffect8,
|
|
3803
|
-
useRef as
|
|
4095
|
+
useRef as useRef3,
|
|
3804
4096
|
useState as useState8
|
|
3805
4097
|
} from "react";
|
|
3806
4098
|
import { isHex } from "viem";
|
|
3807
|
-
import { useQuery as
|
|
4099
|
+
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
3808
4100
|
|
|
3809
4101
|
// src/utils/purifyCheckoutHistoryItem.ts
|
|
3810
4102
|
import {
|
|
@@ -3823,7 +4115,7 @@ import {
|
|
|
3823
4115
|
getDirectExecutionByTxHash
|
|
3824
4116
|
} from "@funkit/api-base";
|
|
3825
4117
|
import { RELAY_TERMINAL_STATUSES } from "@funkit/fun-relay";
|
|
3826
|
-
import { useQuery as
|
|
4118
|
+
import { useQuery as useQuery5 } from "@tanstack/react-query";
|
|
3827
4119
|
var RELAY_FETCH_INTERVAL = 1500;
|
|
3828
4120
|
var logPrefix = "useDirectExecutionInfoPolling";
|
|
3829
4121
|
function useDirectExecutionInfoPolling({
|
|
@@ -3831,7 +4123,7 @@ function useDirectExecutionInfoPolling({
|
|
|
3831
4123
|
disabled = false
|
|
3832
4124
|
}) {
|
|
3833
4125
|
const { apiKey } = useFunkitConfig();
|
|
3834
|
-
const { data: directExecution, isLoading } =
|
|
4126
|
+
const { data: directExecution, isLoading } = useQuery5({
|
|
3835
4127
|
queryKey: [logPrefix, initDirectExecution?.txHash],
|
|
3836
4128
|
queryFn: async () => {
|
|
3837
4129
|
try {
|
|
@@ -3987,7 +4279,7 @@ function FunkitCheckoutHistoryProvider({
|
|
|
3987
4279
|
const { logoutSymbol, isUserLoggedIn, userInfo } = useGeneralWallet();
|
|
3988
4280
|
const funkitConfig = useFunkitConfig();
|
|
3989
4281
|
const [checkoutHistoryList, setCheckoutHistoryList] = useState8([]);
|
|
3990
|
-
const intervalRef =
|
|
4282
|
+
const intervalRef = useRef3();
|
|
3991
4283
|
const [refreshSymbol, triggerRefreshSymbol] = useSymbolRefresh_default();
|
|
3992
4284
|
const [historyDepositAddress, setHistoryDepositAddress] = useState8();
|
|
3993
4285
|
const [isInited, setIsInited] = useState8(false);
|
|
@@ -4113,7 +4405,7 @@ function useCheckoutHistoryContext() {
|
|
|
4113
4405
|
}
|
|
4114
4406
|
function useCheckoutsListenerByUserId(userId) {
|
|
4115
4407
|
const { apiKey } = useFunkitConfig();
|
|
4116
|
-
const { data, isLoading } =
|
|
4408
|
+
const { data, isLoading } = useQuery6({
|
|
4117
4409
|
enabled: !!userId,
|
|
4118
4410
|
queryKey: ["getPurifiedCheckoutsByUserId", userId],
|
|
4119
4411
|
queryFn: async () => {
|
|
@@ -4142,7 +4434,7 @@ function useCheckoutsListenerByUserId(userId) {
|
|
|
4142
4434
|
}
|
|
4143
4435
|
function useCheckoutListenerByCheckoutId(checkoutId) {
|
|
4144
4436
|
const { apiKey } = useFunkitConfig();
|
|
4145
|
-
const { data, isLoading } =
|
|
4437
|
+
const { data, isLoading } = useQuery6({
|
|
4146
4438
|
enabled: !!checkoutId,
|
|
4147
4439
|
queryKey: ["getPurifiedCheckoutById", checkoutId],
|
|
4148
4440
|
queryFn: async () => {
|
|
@@ -4240,7 +4532,7 @@ import React233, {
|
|
|
4240
4532
|
useCallback as useCallback48,
|
|
4241
4533
|
useContext as useContext16,
|
|
4242
4534
|
useEffect as useEffect54,
|
|
4243
|
-
useMemo as
|
|
4535
|
+
useMemo as useMemo49,
|
|
4244
4536
|
useState as useState73
|
|
4245
4537
|
} from "react";
|
|
4246
4538
|
import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig5 } from "wagmi";
|
|
@@ -4263,7 +4555,7 @@ import React107, { useCallback as useCallback23, useState as useState34 } from "
|
|
|
4263
4555
|
|
|
4264
4556
|
// src/components/FunCheckoutHistory/useCustomStatusAnimationAboveTopbar.tsx
|
|
4265
4557
|
import { clamp } from "@funkit/utils";
|
|
4266
|
-
import React29, { useRef as
|
|
4558
|
+
import React29, { useRef as useRef5, useState as useState13 } from "react";
|
|
4267
4559
|
|
|
4268
4560
|
// src/domains/checkout.ts
|
|
4269
4561
|
import {
|
|
@@ -4319,8 +4611,16 @@ function getCheckoutStateBooleans(checkoutState, refundState) {
|
|
|
4319
4611
|
};
|
|
4320
4612
|
}
|
|
4321
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
|
+
|
|
4322
4622
|
// src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
|
|
4323
|
-
import React27, { useEffect as useEffect11, useMemo as
|
|
4623
|
+
import React27, { useEffect as useEffect11, useMemo as useMemo14, useState as useState11 } from "react";
|
|
4324
4624
|
|
|
4325
4625
|
// src/components/TransactionStatus/TransactionStatus.tsx
|
|
4326
4626
|
import {
|
|
@@ -4331,8 +4631,8 @@ import {
|
|
|
4331
4631
|
import React26, {
|
|
4332
4632
|
useCallback as useCallback10,
|
|
4333
4633
|
useEffect as useEffect10,
|
|
4334
|
-
useMemo as
|
|
4335
|
-
useRef as
|
|
4634
|
+
useMemo as useMemo13,
|
|
4635
|
+
useRef as useRef4,
|
|
4336
4636
|
useState as useState10
|
|
4337
4637
|
} from "react";
|
|
4338
4638
|
import { Trans } from "react-i18next";
|
|
@@ -5073,7 +5373,7 @@ function TransactionStatusLoading({
|
|
|
5073
5373
|
)));
|
|
5074
5374
|
}
|
|
5075
5375
|
function TransactionStatus({
|
|
5076
|
-
|
|
5376
|
+
isSlowTransaction,
|
|
5077
5377
|
isWithdrawal,
|
|
5078
5378
|
status,
|
|
5079
5379
|
step,
|
|
@@ -5081,10 +5381,10 @@ function TransactionStatus({
|
|
|
5081
5381
|
textConfigSteps
|
|
5082
5382
|
}) {
|
|
5083
5383
|
const { t } = useFunkitTranslation();
|
|
5084
|
-
const finalTextConfigStatus =
|
|
5384
|
+
const finalTextConfigStatus = useMemo13(() => {
|
|
5085
5385
|
return textConfigStatus || getDefaultTextConfigStatus(t);
|
|
5086
5386
|
}, [t, textConfigStatus]);
|
|
5087
|
-
const finalTextConfigSteps =
|
|
5387
|
+
const finalTextConfigSteps = useMemo13(() => {
|
|
5088
5388
|
return textConfigSteps || getDefaultTextConfigSteps(t);
|
|
5089
5389
|
}, [t, textConfigSteps]);
|
|
5090
5390
|
const [initialStatus] = useState10(status);
|
|
@@ -5095,7 +5395,7 @@ function TransactionStatus({
|
|
|
5095
5395
|
const [isDelayed2, setDelayed] = useState10(status === "delayed");
|
|
5096
5396
|
const [transitioningToStatus, setTransitioningToStatus] = useState10(status);
|
|
5097
5397
|
const [transitioningToStep, setTransitioningToStep] = useState10(step);
|
|
5098
|
-
const spinAnimationRef =
|
|
5398
|
+
const spinAnimationRef = useRef4();
|
|
5099
5399
|
const stopSpinning = useCallback10(() => {
|
|
5100
5400
|
spinAnimationRef.current?.cancel();
|
|
5101
5401
|
spinAnimationRef.current = void 0;
|
|
@@ -5375,18 +5675,18 @@ function TransactionStatus({
|
|
|
5375
5675
|
transitioningToStep
|
|
5376
5676
|
]);
|
|
5377
5677
|
const textConfig = currentStatus === "progress" ? isDelayed2 ? finalTextConfigStatus.progress_delayed : finalTextConfigSteps[currentStep] : finalTextConfigStatus[currentStatus];
|
|
5378
|
-
const { description, descriptionKey, title } =
|
|
5379
|
-
const translatedDurationUnits =
|
|
5678
|
+
const { description, descriptionKey, title } = useMemo13(() => {
|
|
5679
|
+
const translatedDurationUnits = isSlowTransaction ? t("transaction.minutes") : t("transaction.seconds");
|
|
5380
5680
|
const config = typeof textConfig === "function" ? textConfig({
|
|
5381
5681
|
durationUnits: translatedDurationUnits,
|
|
5382
5682
|
isWithdrawal,
|
|
5383
|
-
finalizeVerb:
|
|
5683
|
+
finalizeVerb: isSlowTransaction ? t("transaction.credit") : t("transaction.finalize")
|
|
5384
5684
|
}) : textConfig;
|
|
5385
5685
|
return {
|
|
5386
5686
|
...config,
|
|
5387
5687
|
descriptionKey: config.descriptionKey ?? config.description
|
|
5388
5688
|
};
|
|
5389
|
-
}, [
|
|
5689
|
+
}, [isSlowTransaction, isWithdrawal, textConfig, t]);
|
|
5390
5690
|
return /* @__PURE__ */ React26.createElement(
|
|
5391
5691
|
Box,
|
|
5392
5692
|
{
|
|
@@ -5524,7 +5824,7 @@ function FunCheckoutStatusLoaded({
|
|
|
5524
5824
|
checkoutHistoryItem.state,
|
|
5525
5825
|
checkoutHistoryItem.refundState
|
|
5526
5826
|
);
|
|
5527
|
-
const startTimeMs =
|
|
5827
|
+
const startTimeMs = useMemo14(
|
|
5528
5828
|
() => extractStartTimeMs(
|
|
5529
5829
|
checkoutHistoryItem.clientMetadata.id,
|
|
5530
5830
|
activeCheckoutItem,
|
|
@@ -5551,7 +5851,7 @@ function FunCheckoutStatusLoaded({
|
|
|
5551
5851
|
return /* @__PURE__ */ React27.createElement(
|
|
5552
5852
|
TransactionStatus,
|
|
5553
5853
|
{
|
|
5554
|
-
|
|
5854
|
+
isSlowTransaction: false,
|
|
5555
5855
|
isWithdrawal: false,
|
|
5556
5856
|
key: checkoutHistoryItem.clientMetadata.id,
|
|
5557
5857
|
onOrderDelayed,
|
|
@@ -5593,10 +5893,22 @@ function formatSecondsTranslated(seconds, t, specifyUnderMinute = false, omitSec
|
|
|
5593
5893
|
var LAYERZEO_OFT_TIME_ESTIMATE_SECONDS = 180;
|
|
5594
5894
|
function useCheckoutTimeEstimate(latestQuote, originalTimeEstimationMs, paymentMethod, bypassFlag) {
|
|
5595
5895
|
const { t } = useFunkitTranslation();
|
|
5896
|
+
const { apiKey } = useFunkitConfig();
|
|
5897
|
+
const { checkoutItem } = useCheckoutContext();
|
|
5898
|
+
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
5899
|
+
const lighterNativeFlow = isLighterNativeFlow(apiKey, checkoutConfig);
|
|
5596
5900
|
const timeEstimatesJsonString = useFlag(FlagKey5.CheckoutTimeEstimateOverrides);
|
|
5597
5901
|
const timeEstimates = safeJSONParse(
|
|
5598
5902
|
timeEstimatesJsonString
|
|
5599
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
|
+
}
|
|
5600
5912
|
if (latestQuote?.baseQuote.metadata?.oftEnabled) {
|
|
5601
5913
|
return {
|
|
5602
5914
|
estimatedTime: LAYERZEO_OFT_TIME_ESTIMATE_SECONDS,
|
|
@@ -5652,6 +5964,9 @@ function FunDirectExecutionStatusLoaded({
|
|
|
5652
5964
|
disabled: disableAutoUpdate
|
|
5653
5965
|
});
|
|
5654
5966
|
const { getCheckoutProgress } = useCheckoutContext();
|
|
5967
|
+
const { apiKey } = useFunkitConfig();
|
|
5968
|
+
const { checkoutItem } = useCheckoutContext();
|
|
5969
|
+
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
5655
5970
|
const progress = getCheckoutProgress(directExecution.clientMetadata.id);
|
|
5656
5971
|
const startTimeMs = directExecution.createdTimeMs;
|
|
5657
5972
|
const [currentTimeMs, setCurrentTimeMs] = useState12(Date.now());
|
|
@@ -5664,11 +5979,12 @@ function FunDirectExecutionStatusLoaded({
|
|
|
5664
5979
|
if (isRefunded) {
|
|
5665
5980
|
return null;
|
|
5666
5981
|
}
|
|
5982
|
+
const isSlowTransaction = !!isLayerZero || isLighterNativeFlow(apiKey, checkoutConfig);
|
|
5667
5983
|
const { clientMetadata } = directExecution;
|
|
5668
5984
|
return /* @__PURE__ */ React28.createElement(
|
|
5669
5985
|
TransactionStatus,
|
|
5670
5986
|
{
|
|
5671
|
-
|
|
5987
|
+
isSlowTransaction,
|
|
5672
5988
|
isWithdrawal: !!clientMetadata.isWithdrawal,
|
|
5673
5989
|
key: clientMetadata.id,
|
|
5674
5990
|
startTimeMs,
|
|
@@ -5691,10 +6007,11 @@ function useCustomStatusAnimationAboveTopbar({
|
|
|
5691
6007
|
paddingTop,
|
|
5692
6008
|
topbar,
|
|
5693
6009
|
withTopDivider,
|
|
5694
|
-
scrollableContent
|
|
6010
|
+
scrollableContent,
|
|
6011
|
+
isLighterNativeDeposit
|
|
5695
6012
|
}) {
|
|
5696
6013
|
const [scrollPos, setScrollPos] = useState13(0);
|
|
5697
|
-
const lastY =
|
|
6014
|
+
const lastY = useRef5(0);
|
|
5698
6015
|
const { checkoutHistoryInfo, directExecutionInfo } = useFunkitPostCheckoutInternal(
|
|
5699
6016
|
isCheckoutDetailView && depositAddress ? depositAddress : "0x"
|
|
5700
6017
|
);
|
|
@@ -5751,7 +6068,8 @@ function useCustomStatusAnimationAboveTopbar({
|
|
|
5751
6068
|
FunDirectExecutionStatus,
|
|
5752
6069
|
{
|
|
5753
6070
|
directExecution: directExecutionInfo,
|
|
5754
|
-
isActiveCheckout
|
|
6071
|
+
isActiveCheckout,
|
|
6072
|
+
dangerousCustomDelayedAutoTriggerCutoff: isLighterNativeDeposit ? LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF : void 0
|
|
5755
6073
|
}
|
|
5756
6074
|
) : /* @__PURE__ */ React29.createElement(
|
|
5757
6075
|
FunCheckoutStatus,
|
|
@@ -5915,16 +6233,16 @@ import React45, {
|
|
|
5915
6233
|
useCallback as useCallback12,
|
|
5916
6234
|
useContext as useContext10,
|
|
5917
6235
|
useEffect as useEffect17,
|
|
5918
|
-
useRef as
|
|
6236
|
+
useRef as useRef8
|
|
5919
6237
|
} from "react";
|
|
5920
6238
|
import { createPortal } from "react-dom";
|
|
5921
6239
|
import { RemoveScroll } from "react-remove-scroll";
|
|
5922
6240
|
import { AnimatePresence as AnimatePresence2, motion as motion3 } from "motion/react";
|
|
5923
6241
|
|
|
5924
6242
|
// src/hooks/useScrollDivider.ts
|
|
5925
|
-
import { useEffect as useEffect13, useRef as
|
|
6243
|
+
import { useEffect as useEffect13, useRef as useRef6, useState as useState14 } from "react";
|
|
5926
6244
|
var useScrollDivider = () => {
|
|
5927
|
-
const ref =
|
|
6245
|
+
const ref = useRef6(null);
|
|
5928
6246
|
const [isTop, setIsTop] = useState14(true);
|
|
5929
6247
|
const [isScrollable, setIsScrollable] = useState14(false);
|
|
5930
6248
|
const [isScrolling, setIsScrolling] = useState14(false);
|
|
@@ -6246,72 +6564,6 @@ var ErrorBoundary_default = ErrorBoundary;
|
|
|
6246
6564
|
import { isMobile as isMobile2 } from "@funkit/utils";
|
|
6247
6565
|
import React40 from "react";
|
|
6248
6566
|
|
|
6249
|
-
// src/hooks/statsig/useDynamicConfig.ts
|
|
6250
|
-
import { useDynamicConfig as useStatsigDynamicConfig } from "@statsig/react-bindings";
|
|
6251
|
-
|
|
6252
|
-
// src/__generated__/default_configs.ts
|
|
6253
|
-
var default_configs_default = {
|
|
6254
|
-
addressblacklist: {
|
|
6255
|
-
value: [
|
|
6256
|
-
"0x7b97b46D35a28B561d47F50CFB9a2735E506e59d",
|
|
6257
|
-
"0x409ad08cc6CA757f69Fb80250a424B9eFeB99807",
|
|
6258
|
-
"0x02A86f51aA7B8b1c17c30364748d5Ae4a0727E23",
|
|
6259
|
-
"0x64131b60502C01362639CC5cfE1a1efB6Be1165A",
|
|
6260
|
-
"0xb84440Ee8BAD69c14755bBb7093f861c3512E3D1"
|
|
6261
|
-
]
|
|
6262
|
-
},
|
|
6263
|
-
array_of_strings: {
|
|
6264
|
-
value: []
|
|
6265
|
-
},
|
|
6266
|
-
blockedcountries: {
|
|
6267
|
-
value: [
|
|
6268
|
-
"AF",
|
|
6269
|
-
"BY",
|
|
6270
|
-
"MM",
|
|
6271
|
-
"CF",
|
|
6272
|
-
"CU",
|
|
6273
|
-
"CD",
|
|
6274
|
-
"IR",
|
|
6275
|
-
"LB",
|
|
6276
|
-
"LY",
|
|
6277
|
-
"NI",
|
|
6278
|
-
"KP",
|
|
6279
|
-
"UA",
|
|
6280
|
-
"SO",
|
|
6281
|
-
"SS",
|
|
6282
|
-
"SY",
|
|
6283
|
-
"VE"
|
|
6284
|
-
]
|
|
6285
|
-
},
|
|
6286
|
-
boolean: {
|
|
6287
|
-
value: false
|
|
6288
|
-
},
|
|
6289
|
-
brokerage_hide_you_receive: {
|
|
6290
|
-
value: false
|
|
6291
|
-
},
|
|
6292
|
-
showinfobanner: {
|
|
6293
|
-
value: {
|
|
6294
|
-
message: "",
|
|
6295
|
-
expireAtMs: 1,
|
|
6296
|
-
type: "announcement"
|
|
6297
|
-
}
|
|
6298
|
-
},
|
|
6299
|
-
showpoweredtagline: {
|
|
6300
|
-
value: false
|
|
6301
|
-
},
|
|
6302
|
-
supportedexchangesv2: {
|
|
6303
|
-
value: []
|
|
6304
|
-
}
|
|
6305
|
-
};
|
|
6306
|
-
|
|
6307
|
-
// src/hooks/statsig/useDynamicConfig.ts
|
|
6308
|
-
var useDynamicConfig = (name) => {
|
|
6309
|
-
const config = useStatsigDynamicConfig(name);
|
|
6310
|
-
const fallback2 = default_configs_default[name];
|
|
6311
|
-
const value = config.get("value", fallback2.value);
|
|
6312
|
-
return value;
|
|
6313
|
-
};
|
|
6314
|
-
|
|
6315
6567
|
// src/components/FunButton/FunButton.tsx
|
|
6316
6568
|
import clsx6 from "clsx";
|
|
6317
6569
|
import React37 from "react";
|
|
@@ -6797,7 +7049,7 @@ function FunDivider({
|
|
|
6797
7049
|
}
|
|
6798
7050
|
|
|
6799
7051
|
// src/components/Dialog/FocusTrap.tsx
|
|
6800
|
-
import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as
|
|
7052
|
+
import React44, { useCallback as useCallback11, useEffect as useEffect14, useRef as useRef7 } from "react";
|
|
6801
7053
|
var moveFocusWithin = (element2, position) => {
|
|
6802
7054
|
const focusableElements = element2.querySelectorAll(
|
|
6803
7055
|
"button:not(:disabled), a[href]"
|
|
@@ -6808,7 +7060,7 @@ var moveFocusWithin = (element2, position) => {
|
|
|
6808
7060
|
focusableElements[position === "end" ? focusableElements.length - 1 : 0].focus();
|
|
6809
7061
|
};
|
|
6810
7062
|
function FocusTrap(props) {
|
|
6811
|
-
const contentRef =
|
|
7063
|
+
const contentRef = useRef7(null);
|
|
6812
7064
|
useEffect14(() => {
|
|
6813
7065
|
const previouslyActiveElement = document.activeElement;
|
|
6814
7066
|
return () => {
|
|
@@ -7184,7 +7436,7 @@ var DialogBottom = ({
|
|
|
7184
7436
|
...boxProps
|
|
7185
7437
|
}) => {
|
|
7186
7438
|
const { activeTheme } = useActiveTheme();
|
|
7187
|
-
const ref =
|
|
7439
|
+
const ref = useRef8(null);
|
|
7188
7440
|
const extraBottomPadding = getValueFromPxString(activeTheme.spacing.modalBaseHorizontalPadding) * 2 - getValueFromPxString(activeTheme.spacing.modalPaddingBottomLower);
|
|
7189
7441
|
const hasNoChildren = useBottomBarHasNoChildren();
|
|
7190
7442
|
const paddingBottom = (() => {
|
|
@@ -7350,7 +7602,7 @@ import {
|
|
|
7350
7602
|
formatCryptoAndStringify as formatCryptoAndStringify2,
|
|
7351
7603
|
formatCurrencyAndStringify as formatCurrencyAndStringify3
|
|
7352
7604
|
} from "@funkit/utils";
|
|
7353
|
-
import React72, { useEffect as useEffect28, useMemo as
|
|
7605
|
+
import React72, { useEffect as useEffect28, useMemo as useMemo21, useRef as useRef15, useState as useState27 } from "react";
|
|
7354
7606
|
import { createPortal as createPortal2 } from "react-dom";
|
|
7355
7607
|
import { useDebounce } from "use-debounce";
|
|
7356
7608
|
import { useAccount as useAccount4 } from "wagmi";
|
|
@@ -7366,7 +7618,7 @@ import React59 from "react";
|
|
|
7366
7618
|
import React47, {
|
|
7367
7619
|
useCallback as useCallback13,
|
|
7368
7620
|
useEffect as useEffect18,
|
|
7369
|
-
useRef as
|
|
7621
|
+
useRef as useRef9,
|
|
7370
7622
|
useState as useState16
|
|
7371
7623
|
} from "react";
|
|
7372
7624
|
import clsx8 from "clsx";
|
|
@@ -7452,9 +7704,9 @@ var FunTooltip = ({
|
|
|
7452
7704
|
const [isDisplayed, setIsDisplayed] = useState16(false);
|
|
7453
7705
|
const [isSafeToRenderInCenter, setIsSafeToRenderInCenter] = useState16(false);
|
|
7454
7706
|
const [isSafeToRenderInRight, setIsSafeToRenderInRight] = useState16(false);
|
|
7455
|
-
const startDelayRef =
|
|
7456
|
-
const delayRef =
|
|
7457
|
-
const tooltipRef =
|
|
7707
|
+
const startDelayRef = useRef9();
|
|
7708
|
+
const delayRef = useRef9();
|
|
7709
|
+
const tooltipRef = useRef9(null);
|
|
7458
7710
|
const show = useCallback13(
|
|
7459
7711
|
(startHiding) => {
|
|
7460
7712
|
startDelayRef.current = setTimeout(() => {
|
|
@@ -7546,7 +7798,7 @@ var FunTooltip = ({
|
|
|
7546
7798
|
// src/components/Dropdown/BaseDropdown.tsx
|
|
7547
7799
|
import { isMobile as isMobile4, noop as noop2 } from "@funkit/utils";
|
|
7548
7800
|
import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
|
|
7549
|
-
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";
|
|
7550
7802
|
|
|
7551
7803
|
// src/consts/layout.ts
|
|
7552
7804
|
var VERTICAL_SECTION_GAP = "18";
|
|
@@ -7973,12 +8225,12 @@ var FunNoResults = ({
|
|
|
7973
8225
|
|
|
7974
8226
|
// src/components/FunSelect/FunClickOutside.tsx
|
|
7975
8227
|
import React53 from "react";
|
|
7976
|
-
import { useEffect as useEffect20, useRef as
|
|
8228
|
+
import { useEffect as useEffect20, useRef as useRef10 } from "react";
|
|
7977
8229
|
function FunClickOutside({
|
|
7978
8230
|
children,
|
|
7979
8231
|
onClick
|
|
7980
8232
|
}) {
|
|
7981
|
-
const wrapperRef =
|
|
8233
|
+
const wrapperRef = useRef10(null);
|
|
7982
8234
|
useEffect20(() => {
|
|
7983
8235
|
const handleClickListener = (event) => {
|
|
7984
8236
|
const clickedInside = wrapperRef.current?.contains(
|
|
@@ -8176,11 +8428,11 @@ function BaseDropdown({
|
|
|
8176
8428
|
const [isOpened, setIsOpened] = useState18();
|
|
8177
8429
|
const [searchInput, setSearchInput] = useState18("");
|
|
8178
8430
|
const selectedOption = options.find((option) => option.value === value);
|
|
8179
|
-
const prevIsOpenedRef =
|
|
8431
|
+
const prevIsOpenedRef = useRef11(false);
|
|
8180
8432
|
const handleSearch = (event) => {
|
|
8181
8433
|
setSearchInput(event.target.value);
|
|
8182
8434
|
};
|
|
8183
|
-
const filteredOptions =
|
|
8435
|
+
const filteredOptions = useMemo15(
|
|
8184
8436
|
() => options.filter(
|
|
8185
8437
|
(singleOption) => singleOption.label.toLowerCase().includes(searchInput?.toLowerCase())
|
|
8186
8438
|
),
|
|
@@ -8629,7 +8881,7 @@ var getTokenIconUrl = (symbol, tokens) => {
|
|
|
8629
8881
|
|
|
8630
8882
|
// src/components/FunBadge/FunBadge.tsx
|
|
8631
8883
|
import clsx12 from "clsx";
|
|
8632
|
-
import React60, { useMemo as
|
|
8884
|
+
import React60, { useMemo as useMemo16 } from "react";
|
|
8633
8885
|
|
|
8634
8886
|
// src/components/FunBadge/FunBadge.css.ts
|
|
8635
8887
|
var badgeShineStyle = "bc2uzy2";
|
|
@@ -8653,7 +8905,7 @@ function FunBadge({
|
|
|
8653
8905
|
hasShine = false
|
|
8654
8906
|
}) {
|
|
8655
8907
|
const { t } = useFunkitTranslation();
|
|
8656
|
-
const borderStyle =
|
|
8908
|
+
const borderStyle = useMemo16(() => {
|
|
8657
8909
|
return borderColor ? { borderStyle: "solid", borderColor, borderWidth: "1" } : {};
|
|
8658
8910
|
}, [borderColor]);
|
|
8659
8911
|
return /* @__PURE__ */ React60.createElement(
|
|
@@ -9158,10 +9410,10 @@ import {
|
|
|
9158
9410
|
formatPercent,
|
|
9159
9411
|
noop as noop4
|
|
9160
9412
|
} from "@funkit/utils";
|
|
9161
|
-
import React67, { useEffect as useEffect22, useMemo as
|
|
9413
|
+
import React67, { useEffect as useEffect22, useMemo as useMemo17, useState as useState20 } from "react";
|
|
9162
9414
|
import clsx14 from "clsx";
|
|
9163
9415
|
import { motion as motion6, useAnimationControls } from "motion/react";
|
|
9164
|
-
import { mainnet as
|
|
9416
|
+
import { mainnet as mainnet6 } from "viem/chains";
|
|
9165
9417
|
|
|
9166
9418
|
// src/domains/relay.ts
|
|
9167
9419
|
var KATANA_BRIDGE_ALERT_THRESHOLD_PERCENT = 0.5;
|
|
@@ -9358,7 +9610,7 @@ function computeDigest(relayQuoteMetadata, uiCustomizations, totalPriceImpactPer
|
|
|
9358
9610
|
value: void 0
|
|
9359
9611
|
};
|
|
9360
9612
|
}
|
|
9361
|
-
const isMainnet = details?.currencyIn?.currency?.chainId ===
|
|
9613
|
+
const isMainnet = details?.currencyIn?.currency?.chainId === mainnet6.id || details?.currencyOut?.currency?.chainId === mainnet6.id;
|
|
9362
9614
|
const percent = formatPercent(totalPriceImpactPercent);
|
|
9363
9615
|
return {
|
|
9364
9616
|
isMainnet,
|
|
@@ -9644,7 +9896,7 @@ function PaymentFeesSummary({
|
|
|
9644
9896
|
setIsExpanded(false);
|
|
9645
9897
|
}
|
|
9646
9898
|
}, [valuesNotAvailable, isExpanded]);
|
|
9647
|
-
const { collapsed: collapsedItem, expanded: expandedItems } =
|
|
9899
|
+
const { collapsed: collapsedItem, expanded: expandedItems } = useMemo17(() => {
|
|
9648
9900
|
const fees = quote?.finalFeesBreakdown ?? fallbackFees;
|
|
9649
9901
|
if (!fees) {
|
|
9650
9902
|
return NO_DATA;
|
|
@@ -9808,7 +10060,7 @@ var EvmWallet = ({ size = 20 }) => /* @__PURE__ */ React68.createElement(
|
|
|
9808
10060
|
);
|
|
9809
10061
|
|
|
9810
10062
|
// src/hooks/queries/useWithdrawalQuote.ts
|
|
9811
|
-
import { useQuery as
|
|
10063
|
+
import { useQuery as useQuery7 } from "@tanstack/react-query";
|
|
9812
10064
|
import { useConfig as useConfig2 } from "wagmi";
|
|
9813
10065
|
|
|
9814
10066
|
// src/domains/quote.ts
|
|
@@ -9962,11 +10214,9 @@ async function getCheckoutBaseQuote(checkoutItem, userId, walletAddress, apiKey,
|
|
|
9962
10214
|
const toTokenAddress = config.targetAsset;
|
|
9963
10215
|
const fromChainId = selectedSourceAssetInfo.chainId;
|
|
9964
10216
|
const fromTokenAddress = selectedSourceAssetInfo.address;
|
|
9965
|
-
const
|
|
9966
|
-
const [toTokenDecimals, fromTokenDecimals, lighterTickSize] = await Promise.all([
|
|
10217
|
+
const [toTokenDecimals, fromTokenDecimals] = await Promise.all([
|
|
9967
10218
|
getTokenDecimals(wagmiConfig, toChainId, toTokenAddress),
|
|
9968
|
-
getTokenDecimals(wagmiConfig, fromChainId, fromTokenAddress)
|
|
9969
|
-
isLighterSpot ? getLighterTickSize(wagmiConfig, toChainId, 1) : Promise.resolve(void 0)
|
|
10219
|
+
getTokenDecimals(wagmiConfig, fromChainId, fromTokenAddress)
|
|
9970
10220
|
]);
|
|
9971
10221
|
const toTokenAmount = config.targetAssetAmount ?? 0;
|
|
9972
10222
|
const fromTokenAmount = checkoutItem.sourceAssetAmount ?? 0;
|
|
@@ -9986,8 +10236,7 @@ async function getCheckoutBaseQuote(checkoutItem, userId, walletAddress, apiKey,
|
|
|
9986
10236
|
senderAddress,
|
|
9987
10237
|
fromTokenAmount,
|
|
9988
10238
|
fromTokenDecimals,
|
|
9989
|
-
isExactIn: isWithdrawal
|
|
9990
|
-
tickSize: lighterTickSize
|
|
10239
|
+
isExactIn: isWithdrawal
|
|
9991
10240
|
}) : await getApiCheckoutQuote({
|
|
9992
10241
|
userId,
|
|
9993
10242
|
fromChainId,
|
|
@@ -10261,7 +10510,7 @@ function useWithdrawalQuote({
|
|
|
10261
10510
|
);
|
|
10262
10511
|
const enabled = !!apiKey && !!targetAsset && !!sourceAmount && !!recipientAddress && !!chainId && !!symbol && !!isValidAddress && !!checkoutItem;
|
|
10263
10512
|
const { logEvent } = useTrack();
|
|
10264
|
-
const query =
|
|
10513
|
+
const query = useQuery7({
|
|
10265
10514
|
queryKey: [
|
|
10266
10515
|
"withdrawal",
|
|
10267
10516
|
"quote",
|
|
@@ -10337,12 +10586,12 @@ function useWithdrawalQuote({
|
|
|
10337
10586
|
}
|
|
10338
10587
|
|
|
10339
10588
|
// src/hooks/queries/useWithdrawalRisk.ts
|
|
10340
|
-
import { useQuery as
|
|
10341
|
-
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";
|
|
10342
10591
|
import { isAddress as isAddress2 } from "viem";
|
|
10343
10592
|
var useWithdrawalRisk = (apiKey, receiveAddress) => {
|
|
10344
|
-
const lastRiskyAddressRef =
|
|
10345
|
-
const query =
|
|
10593
|
+
const lastRiskyAddressRef = useRef12(null);
|
|
10594
|
+
const query = useQuery8({
|
|
10346
10595
|
queryKey: ["withdrawal", "addressRisk", apiKey, receiveAddress],
|
|
10347
10596
|
queryFn: async () => {
|
|
10348
10597
|
try {
|
|
@@ -10382,17 +10631,17 @@ import {
|
|
|
10382
10631
|
convertFunToRelayTokenAddress,
|
|
10383
10632
|
getRelayAssetPriceInfo
|
|
10384
10633
|
} from "@funkit/fun-relay";
|
|
10385
|
-
import { skipToken, useQuery as
|
|
10634
|
+
import { skipToken, useQuery as useQuery10 } from "@tanstack/react-query";
|
|
10386
10635
|
|
|
10387
10636
|
// src/hooks/queries/useErc20Asset.ts
|
|
10388
10637
|
import { getAssetErc20ByChainAndSymbol } from "@funkit/api-base";
|
|
10389
|
-
import { useQuery as
|
|
10638
|
+
import { useQuery as useQuery9 } from "@tanstack/react-query";
|
|
10390
10639
|
var useErc20Asset = ({
|
|
10391
10640
|
chainId,
|
|
10392
10641
|
symbol
|
|
10393
10642
|
}) => {
|
|
10394
10643
|
const { apiKey } = useFunkitConfig();
|
|
10395
|
-
const query =
|
|
10644
|
+
const query = useQuery9({
|
|
10396
10645
|
queryKey: ["erc20Asset", chainId, symbol],
|
|
10397
10646
|
queryFn: async () => {
|
|
10398
10647
|
if (!apiKey || !chainId || !symbol) {
|
|
@@ -10444,7 +10693,7 @@ function useAssetAddressPrice({
|
|
|
10444
10693
|
refetchInterval = 1e4
|
|
10445
10694
|
}) {
|
|
10446
10695
|
const { apiKey } = useFunkitConfig();
|
|
10447
|
-
const { data, error, isLoading } =
|
|
10696
|
+
const { data, error, isLoading } = useQuery10({
|
|
10448
10697
|
queryKey: ["getAssetPriceInfo", chainId, assetTokenAddress],
|
|
10449
10698
|
queryFn: chainId && assetTokenAddress ? async () => {
|
|
10450
10699
|
const isRelayPrimary = RELAY_SHORT_CIRCUIT_CHAIN_IDS.includes(chainId);
|
|
@@ -10507,7 +10756,7 @@ import { useEffect as useEffect24, useState as useState21 } from "react";
|
|
|
10507
10756
|
import { polygon as polygon2 } from "viem/chains";
|
|
10508
10757
|
|
|
10509
10758
|
// src/hooks/useEnabledTokenTransferChainTokens.ts
|
|
10510
|
-
import { bitcoinChain
|
|
10759
|
+
import { bitcoinChain, solanaChain as solanaChain2 } from "@funkit/chains";
|
|
10511
10760
|
import { FlagKey as FlagKey8 } from "@funkit/utils";
|
|
10512
10761
|
import { base as base4 } from "viem/chains";
|
|
10513
10762
|
|
|
@@ -10547,7 +10796,7 @@ function useEnabledTokenTransferChainTokens(transferInit, isWithdrawal) {
|
|
|
10547
10796
|
if (isSolana && !hasSolanaAddress && !isWithdrawal) {
|
|
10548
10797
|
return acc;
|
|
10549
10798
|
}
|
|
10550
|
-
const isBitcoin = chainId ===
|
|
10799
|
+
const isBitcoin = chainId === bitcoinChain.id;
|
|
10551
10800
|
if (isBitcoin && !hasBitcoinAddress && !isWithdrawal) {
|
|
10552
10801
|
return acc;
|
|
10553
10802
|
}
|
|
@@ -10868,10 +11117,10 @@ function usePreparedWalletConnectors() {
|
|
|
10868
11117
|
import { useState as useState26 } from "react";
|
|
10869
11118
|
|
|
10870
11119
|
// src/hooks/useAutoClearState.ts
|
|
10871
|
-
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";
|
|
10872
11121
|
function useAutoClearState(initialValue = null) {
|
|
10873
11122
|
const [state, setState] = useState22(initialValue);
|
|
10874
|
-
const timeoutRef =
|
|
11123
|
+
const timeoutRef = useRef13();
|
|
10875
11124
|
useEffect25(() => {
|
|
10876
11125
|
return () => {
|
|
10877
11126
|
if (timeoutRef.current !== void 0) {
|
|
@@ -10922,13 +11171,13 @@ import { useConfig as useConfig3 } from "wagmi";
|
|
|
10922
11171
|
// src/hooks/useBluvo.ts
|
|
10923
11172
|
import { bluvoGetWithdrawableBalanceById as bluvoGetWithdrawableBalanceById2 } from "@funkit/api-base";
|
|
10924
11173
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO4 } from "@funkit/chains";
|
|
10925
|
-
import { keepPreviousData, useQuery as
|
|
10926
|
-
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";
|
|
10927
11176
|
|
|
10928
11177
|
// src/domains/wallet.ts
|
|
10929
11178
|
import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO2 } from "@funkit/chains";
|
|
10930
11179
|
import { isNotNullish as isNotNullish2 } from "@funkit/utils";
|
|
10931
|
-
import { mainnet as
|
|
11180
|
+
import { mainnet as mainnet7, polygon as polygon3 } from "viem/chains";
|
|
10932
11181
|
|
|
10933
11182
|
// src/utils/assets.ts
|
|
10934
11183
|
import { formatUnits } from "viem";
|
|
@@ -10974,14 +11223,14 @@ import { arbitrum as arbitrum3 } from "viem/chains";
|
|
|
10974
11223
|
|
|
10975
11224
|
// src/hooks/useTokenTransfer.ts
|
|
10976
11225
|
import {
|
|
10977
|
-
bitcoinChain as
|
|
11226
|
+
bitcoinChain as bitcoinChain2,
|
|
10978
11227
|
hyperEvmChain,
|
|
10979
11228
|
monadChain,
|
|
10980
11229
|
solanaChain as solanaChain3
|
|
10981
11230
|
} from "@funkit/chains";
|
|
10982
11231
|
import { FlagKey as FlagKey10 } from "@funkit/utils";
|
|
10983
|
-
import { useMemo as
|
|
10984
|
-
import { arbitrum as arbitrum2, mainnet as
|
|
11232
|
+
import { useMemo as useMemo18 } from "react";
|
|
11233
|
+
import { arbitrum as arbitrum2, mainnet as mainnet8, polygon as polygon4 } from "viem/chains";
|
|
10985
11234
|
|
|
10986
11235
|
// src/utils/transfer.ts
|
|
10987
11236
|
var getTransferTokenQrCodeUri = (props) => {
|
|
@@ -11026,12 +11275,12 @@ var useTokenTransfer = (selectedChainId, selectedToken, chainIds) => {
|
|
|
11026
11275
|
const isUsdceOnPolygon = isPolygon && selectedToken === "USDC.e";
|
|
11027
11276
|
const isUsdcOnPolygon = isPolygon && selectedToken === "USDC";
|
|
11028
11277
|
const showOriginalRecipient = isBankrUsUser || !enableUniversal && (isUsdceOnPolygon || isUsdcOnPolygon);
|
|
11029
|
-
const funDepositAddress = selectedChainId === solanaChain3.id ? transferInit?.solanaAddr : selectedChainId ===
|
|
11278
|
+
const funDepositAddress = selectedChainId === solanaChain3.id ? transferInit?.solanaAddr : selectedChainId === bitcoinChain2.id ? transferInit?.btcAddrSegwit : transferInit?.depositAddr;
|
|
11030
11279
|
const blockchainType = (() => {
|
|
11031
11280
|
if (selectedChainId === solanaChain3.id) {
|
|
11032
11281
|
return "solana";
|
|
11033
11282
|
}
|
|
11034
|
-
if (selectedChainId ===
|
|
11283
|
+
if (selectedChainId === bitcoinChain2.id) {
|
|
11035
11284
|
return "bitcoin";
|
|
11036
11285
|
}
|
|
11037
11286
|
return "ethereum";
|
|
@@ -11070,7 +11319,7 @@ var useMinTransferLimits = () => {
|
|
|
11070
11319
|
return limits;
|
|
11071
11320
|
};
|
|
11072
11321
|
function getMinTransferValueForChain(chainId, limits) {
|
|
11073
|
-
const MAINNET_IDS = [
|
|
11322
|
+
const MAINNET_IDS = [mainnet8.id, bitcoinChain2.id];
|
|
11074
11323
|
return MAINNET_IDS.includes(chainId) ? limits.mainnet : limits.nonMainnet;
|
|
11075
11324
|
}
|
|
11076
11325
|
var useMinTransferValue = (selectedChainId) => {
|
|
@@ -11088,7 +11337,7 @@ var useMinTransferValue = (selectedChainId) => {
|
|
|
11088
11337
|
};
|
|
11089
11338
|
var useMinTransferValues = (chainIds) => {
|
|
11090
11339
|
const limits = useMinTransferLimits();
|
|
11091
|
-
return
|
|
11340
|
+
return useMemo18(() => {
|
|
11092
11341
|
return chainIds.reduce(
|
|
11093
11342
|
(acc, id) => {
|
|
11094
11343
|
const limit = getMinTransferValueForChain(id, limits);
|
|
@@ -11359,8 +11608,8 @@ import { safeParseJson as safeParseJson3 } from "@funkit/utils";
|
|
|
11359
11608
|
import React69, {
|
|
11360
11609
|
useContext as useContext12,
|
|
11361
11610
|
useEffect as useEffect26,
|
|
11362
|
-
useMemo as
|
|
11363
|
-
useRef as
|
|
11611
|
+
useMemo as useMemo19,
|
|
11612
|
+
useRef as useRef14,
|
|
11364
11613
|
useState as useState23
|
|
11365
11614
|
} from "react";
|
|
11366
11615
|
import { createContext as createContext12 } from "react";
|
|
@@ -11382,7 +11631,7 @@ var FunkitBrokerageProvider = ({
|
|
|
11382
11631
|
}) => {
|
|
11383
11632
|
const { apiKey } = useFunkitConfig();
|
|
11384
11633
|
const isSandboxMode = useIsFunkitSandboxMode();
|
|
11385
|
-
const minTransferRef =
|
|
11634
|
+
const minTransferRef = useRef14(useMinTransferLimits());
|
|
11386
11635
|
const ORG_ID = isSandboxMode ? STAGE_ORG_ID : PROD_ORG_ID;
|
|
11387
11636
|
const PROJECT_ID = isSandboxMode ? STAGE_PROJECT_ID : PROD_PROJECT_ID;
|
|
11388
11637
|
const [authConnections, setAuthConnections] = useState23(
|
|
@@ -11419,7 +11668,7 @@ var FunkitBrokerageProvider = ({
|
|
|
11419
11668
|
setSelectedBrokerageAsset(null);
|
|
11420
11669
|
}
|
|
11421
11670
|
}, [bluvoClient.withdrawal?.status]);
|
|
11422
|
-
const brokerageMinMax =
|
|
11671
|
+
const brokerageMinMax = useMemo19(() => {
|
|
11423
11672
|
if (!selectedBrokerageAsset || !isBrokerageAsset(selectedBrokerageAsset)) {
|
|
11424
11673
|
return null;
|
|
11425
11674
|
}
|
|
@@ -11493,7 +11742,7 @@ var useBluvoExchangeBalance = ({
|
|
|
11493
11742
|
const deviceId = exchange && authorizedConnections?.[exchange] || "";
|
|
11494
11743
|
const isEnabled = !!exchange && !!deviceId;
|
|
11495
11744
|
const preferredChainId = checkoutItem?.initSettings.config.targetChain;
|
|
11496
|
-
const { data, isLoading, isError } =
|
|
11745
|
+
const { data, isLoading, isError } = useQuery11({
|
|
11497
11746
|
queryKey: ["bluvo-exchange-balance", deviceId, preferredChainId],
|
|
11498
11747
|
queryFn: async () => {
|
|
11499
11748
|
if (!exchange) {
|
|
@@ -11585,7 +11834,7 @@ var useBluvoSupportedExchanges = ({
|
|
|
11585
11834
|
filterBy = ["live" /* Live */]
|
|
11586
11835
|
}) => {
|
|
11587
11836
|
const { authorizedConnections } = useFunkitBrokerageContext();
|
|
11588
|
-
const exchangeOptions =
|
|
11837
|
+
const exchangeOptions = useMemo20(
|
|
11589
11838
|
() => SUPPORTED_EXCHANGES.filter(
|
|
11590
11839
|
({ status: exchangeStatus }) => filterBy.includes(exchangeStatus)
|
|
11591
11840
|
).map(({ exchange, status }) => {
|
|
@@ -12590,10 +12839,10 @@ var WithdrawContent = ({
|
|
|
12590
12839
|
recipientAddress
|
|
12591
12840
|
);
|
|
12592
12841
|
const isReceipentBlacklisted = isBlacklistedWithdrawAddress(recipientAddress);
|
|
12593
|
-
const lastTargetAssetErrorRef =
|
|
12594
|
-
const lastQuoteErrorRef =
|
|
12595
|
-
const lastRiskyRecipientRef =
|
|
12596
|
-
const lastBlacklistedRecipientRef =
|
|
12842
|
+
const lastTargetAssetErrorRef = useRef15(null);
|
|
12843
|
+
const lastQuoteErrorRef = useRef15(null);
|
|
12844
|
+
const lastRiskyRecipientRef = useRef15(null);
|
|
12845
|
+
const lastBlacklistedRecipientRef = useRef15(null);
|
|
12597
12846
|
useEffect28(() => {
|
|
12598
12847
|
if (!targetAssetFetchError) {
|
|
12599
12848
|
return;
|
|
@@ -12689,7 +12938,7 @@ var WithdrawContent = ({
|
|
|
12689
12938
|
selectedChainName,
|
|
12690
12939
|
t
|
|
12691
12940
|
});
|
|
12692
|
-
const errorNotification =
|
|
12941
|
+
const errorNotification = useMemo21(
|
|
12693
12942
|
() => getErrorNotification(
|
|
12694
12943
|
quoteErrorObject,
|
|
12695
12944
|
withdrawalError,
|
|
@@ -13122,7 +13371,7 @@ import {
|
|
|
13122
13371
|
getBridgeKycLink
|
|
13123
13372
|
} from "@funkit/api-base";
|
|
13124
13373
|
import { FlagKey as FlagKey12 } from "@funkit/utils";
|
|
13125
|
-
import { useQuery as
|
|
13374
|
+
import { useQuery as useQuery12, useQueryClient } from "@tanstack/react-query";
|
|
13126
13375
|
import { useCallback as useCallback18 } from "react";
|
|
13127
13376
|
var sepaCountryCode = [
|
|
13128
13377
|
// EU countries that are part of SEPA
|
|
@@ -13209,7 +13458,7 @@ function useFrogAccounts() {
|
|
|
13209
13458
|
const { apiKey } = useFunkitConfig();
|
|
13210
13459
|
const { userInfo, isUserLoggedIn } = useGeneralWallet();
|
|
13211
13460
|
const userId = userInfo.id;
|
|
13212
|
-
const query =
|
|
13461
|
+
const query = useQuery12({
|
|
13213
13462
|
queryKey: ["frogSubAccounts", userId],
|
|
13214
13463
|
queryFn: () => fetchFrogAccounts(userId, { apiKey, logger }),
|
|
13215
13464
|
enabled: userId !== "0x" && isUserLoggedIn,
|
|
@@ -13245,7 +13494,7 @@ function useVirtualFiatAccounts() {
|
|
|
13245
13494
|
const bridgeSubAccount = frogSubAccounts?.find(
|
|
13246
13495
|
(subAccount) => subAccount.subAccountType === "bridge"
|
|
13247
13496
|
);
|
|
13248
|
-
const query =
|
|
13497
|
+
const query = useQuery12({
|
|
13249
13498
|
queryKey: ["useVirtualFiatAccounts", bridgeSubAccount?.guid],
|
|
13250
13499
|
queryFn: () => fetchAllFiatAccounts(bridgeSubAccount, { apiKey, logger }),
|
|
13251
13500
|
enabled: !!bridgeSubAccount,
|
|
@@ -13272,7 +13521,7 @@ function useMatchingVirtualFiatAccount(accounts) {
|
|
|
13272
13521
|
}
|
|
13273
13522
|
function useLoadKycLink(linkLoad) {
|
|
13274
13523
|
const { apiKey } = useFunkitConfig();
|
|
13275
|
-
const query =
|
|
13524
|
+
const query = useQuery12({
|
|
13276
13525
|
queryKey: ["kycLink", linkLoad.guid],
|
|
13277
13526
|
queryFn: async () => {
|
|
13278
13527
|
if (linkLoad.kycLink) {
|
|
@@ -13355,7 +13604,7 @@ import {
|
|
|
13355
13604
|
FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS3,
|
|
13356
13605
|
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7
|
|
13357
13606
|
} from "@funkit/chains";
|
|
13358
|
-
import { useMemo as
|
|
13607
|
+
import { useMemo as useMemo22 } from "react";
|
|
13359
13608
|
var processWalletAssets = (walletAssets, targetChain) => {
|
|
13360
13609
|
if (!walletAssets) {
|
|
13361
13610
|
return;
|
|
@@ -13404,7 +13653,7 @@ var processWalletAssets = (walletAssets, targetChain) => {
|
|
|
13404
13653
|
};
|
|
13405
13654
|
function useWalletAssetHoldings(targetChain) {
|
|
13406
13655
|
const { walletAssets, isLoading, totalWalletAssetsUsd } = useWalletAssets();
|
|
13407
|
-
const processedAssets =
|
|
13656
|
+
const processedAssets = useMemo22(
|
|
13408
13657
|
() => processWalletAssets(walletAssets, targetChain),
|
|
13409
13658
|
[targetChain, walletAssets]
|
|
13410
13659
|
);
|
|
@@ -14243,7 +14492,7 @@ import React76 from "react";
|
|
|
14243
14492
|
|
|
14244
14493
|
// src/components/FunOptionBox/FunOptionBox.tsx
|
|
14245
14494
|
import clsx15 from "clsx";
|
|
14246
|
-
import React75, { useRef as
|
|
14495
|
+
import React75, { useRef as useRef16 } from "react";
|
|
14247
14496
|
|
|
14248
14497
|
// src/components/FunOptionBox/FunOptionBox.css.ts
|
|
14249
14498
|
var funOptionBoxStyle = { baseStyle: "_1rfcluh0", defaultBorder: "_1rsrm2f15a _1rsrm2f13f", transparentBorder: "_1rsrm2f18s _1rsrm2f13f _1rsrm2f1k", activeBorder: "_1rsrm2f13a", disabledOptionBorder: "_1rsrm2f154", defaultBackground: "_1rsrm2fzy _1rsrm2fmh", activeBackground: "_1rsrm2fzy _1rsrm2fqn _1rsrm2fqo" };
|
|
@@ -14269,7 +14518,7 @@ function FunOptionBox({
|
|
|
14269
14518
|
...boxProps
|
|
14270
14519
|
}) {
|
|
14271
14520
|
const isClickable = !!onClick && !disabled;
|
|
14272
|
-
const ref =
|
|
14521
|
+
const ref = useRef16(null);
|
|
14273
14522
|
return /* @__PURE__ */ React75.createElement(
|
|
14274
14523
|
Box,
|
|
14275
14524
|
{
|
|
@@ -15270,7 +15519,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
|
|
|
15270
15519
|
|
|
15271
15520
|
// src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
|
|
15272
15521
|
import clsx18 from "clsx";
|
|
15273
|
-
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";
|
|
15274
15523
|
|
|
15275
15524
|
// src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
|
|
15276
15525
|
import React88 from "react";
|
|
@@ -15323,7 +15572,7 @@ import {
|
|
|
15323
15572
|
getCheckoutsByUserId as getCheckoutsByUserId2
|
|
15324
15573
|
} from "@funkit/api-base";
|
|
15325
15574
|
import { FlagKey as FlagKey14 } from "@funkit/utils";
|
|
15326
|
-
import { useQuery as
|
|
15575
|
+
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
15327
15576
|
var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
|
|
15328
15577
|
var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
|
|
15329
15578
|
var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
|
|
@@ -15338,7 +15587,7 @@ var useRecentCheckouts = ({
|
|
|
15338
15587
|
const { isUserLoggedIn, userInfo } = useGeneralWallet();
|
|
15339
15588
|
const { apiKey } = useFunkitConfig();
|
|
15340
15589
|
const { listRefresh } = useCheckoutRefreshInterval();
|
|
15341
|
-
const query =
|
|
15590
|
+
const query = useQuery13({
|
|
15342
15591
|
queryKey: ["checkouts", userInfo.id],
|
|
15343
15592
|
queryFn: async () => {
|
|
15344
15593
|
const checkouts = await getCheckoutsByUserId2({
|
|
@@ -15361,8 +15610,8 @@ var useRecentCheckouts = ({
|
|
|
15361
15610
|
import {
|
|
15362
15611
|
getDirectExecutionsByUserId as getDirectExecutionsByUserId2
|
|
15363
15612
|
} from "@funkit/api-base";
|
|
15364
|
-
import { useQuery as
|
|
15365
|
-
import { useMemo as
|
|
15613
|
+
import { useQuery as useQuery14 } from "@tanstack/react-query";
|
|
15614
|
+
import { useMemo as useMemo23 } from "react";
|
|
15366
15615
|
var isRecent2 = (de, timestampCutoff) => de.createdTimeMs > timestampCutoff;
|
|
15367
15616
|
function mergeMultiStepDirectExecutions(directExecutions) {
|
|
15368
15617
|
const directExecutionsByToTxId = {};
|
|
@@ -15406,7 +15655,7 @@ var useRecentDirectExecutions = ({
|
|
|
15406
15655
|
const { userInfo, isUserLoggedIn } = useGeneralWallet();
|
|
15407
15656
|
const { apiKey } = useFunkitConfig();
|
|
15408
15657
|
const { listRefresh } = useCheckoutRefreshInterval();
|
|
15409
|
-
const { data: directExecutions } =
|
|
15658
|
+
const { data: directExecutions } = useQuery14({
|
|
15410
15659
|
queryKey: ["directExecutions", userInfo.id],
|
|
15411
15660
|
queryFn: async () => {
|
|
15412
15661
|
const directExecutions2 = await getDirectExecutionsByUserId2({
|
|
@@ -15419,7 +15668,7 @@ var useRecentDirectExecutions = ({
|
|
|
15419
15668
|
refetchInterval: listRefresh,
|
|
15420
15669
|
enabled: isUserLoggedIn && isVisible
|
|
15421
15670
|
});
|
|
15422
|
-
const data =
|
|
15671
|
+
const data = useMemo23(() => {
|
|
15423
15672
|
if (!directExecutions) {
|
|
15424
15673
|
return directExecutions;
|
|
15425
15674
|
}
|
|
@@ -15491,7 +15740,7 @@ import { Trans as Trans3 } from "react-i18next";
|
|
|
15491
15740
|
import { CheckoutState as CheckoutState3 } from "@funkit/api-base";
|
|
15492
15741
|
import { SOLANA_MAINNET_CHAIN_ID } from "@funkit/chains";
|
|
15493
15742
|
import { formatAddress as formatAddress4, formatTimestamp } from "@funkit/utils";
|
|
15494
|
-
import React92, { useState as useState28, useRef as
|
|
15743
|
+
import React92, { useState as useState28, useRef as useRef17, useEffect as useEffect31 } from "react";
|
|
15495
15744
|
|
|
15496
15745
|
// src/utils/checkoutHistory.ts
|
|
15497
15746
|
var storageKey4 = "fkc-last-report-submit-time";
|
|
@@ -15725,7 +15974,7 @@ function OrderDetail({
|
|
|
15725
15974
|
}) {
|
|
15726
15975
|
const { t } = useFunkitTranslation();
|
|
15727
15976
|
const [isExpanded, setIsExpanded] = useState28(false);
|
|
15728
|
-
const contentRef =
|
|
15977
|
+
const contentRef = useRef17(null);
|
|
15729
15978
|
const isCheckoutItemLoaded = checkoutHistoryItem !== void 0;
|
|
15730
15979
|
return /* @__PURE__ */ React92.createElement(Box, { ref: contentRef, paddingX: "12" }, /* @__PURE__ */ React92.createElement(
|
|
15731
15980
|
Box,
|
|
@@ -15793,7 +16042,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f12m _1rsrm2f1f _1rsrm2f1c _1rsrm2fm4
|
|
|
15793
16042
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
|
|
15794
16043
|
import clsx16 from "clsx";
|
|
15795
16044
|
import { motion as motion7, useAnimate as useAnimate2 } from "motion/react";
|
|
15796
|
-
import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as
|
|
16045
|
+
import React93, { useCallback as useCallback19, useEffect as useEffect32, useRef as useRef18 } from "react";
|
|
15797
16046
|
|
|
15798
16047
|
// src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
|
|
15799
16048
|
var STATUS_SPINNER_BOTTOM_POSITION = -5;
|
|
@@ -16242,7 +16491,7 @@ var FunNotificationBannerIcon = ({
|
|
|
16242
16491
|
)
|
|
16243
16492
|
]);
|
|
16244
16493
|
}, [animate]);
|
|
16245
|
-
const statusRef =
|
|
16494
|
+
const statusRef = useRef18(status);
|
|
16246
16495
|
useEffect32(() => {
|
|
16247
16496
|
if (statusRef.current !== status) {
|
|
16248
16497
|
if (statusRef.current === "processing" && status === "completed") {
|
|
@@ -16474,11 +16723,11 @@ var FunNotificationBanner = ({
|
|
|
16474
16723
|
import {
|
|
16475
16724
|
getCheckoutByDepositAddress as getCheckoutByDepositAddress2
|
|
16476
16725
|
} from "@funkit/api-base";
|
|
16477
|
-
import { useQuery as
|
|
16726
|
+
import { useQuery as useQuery15 } from "@tanstack/react-query";
|
|
16478
16727
|
var useCheckout = (depositAddress, initial) => {
|
|
16479
16728
|
const { apiKey } = useFunkitConfig();
|
|
16480
16729
|
const { itemRefresh } = useCheckoutRefreshInterval();
|
|
16481
|
-
const query =
|
|
16730
|
+
const query = useQuery15({
|
|
16482
16731
|
queryKey: ["checkouts", "checkout", depositAddress],
|
|
16483
16732
|
queryFn: () => (
|
|
16484
16733
|
// biome-ignore lint/style/noNonNullAssertion: already checked for null
|
|
@@ -16683,7 +16932,7 @@ import {
|
|
|
16683
16932
|
formatTimestamp as formatTimestamp2,
|
|
16684
16933
|
isTokenEquivalent
|
|
16685
16934
|
} from "@funkit/utils";
|
|
16686
|
-
import React96, { useCallback as useCallback20, useMemo as
|
|
16935
|
+
import React96, { useCallback as useCallback20, useMemo as useMemo24, useRef as useRef19, useState as useState30 } from "react";
|
|
16687
16936
|
import { createPortal as createPortal3 } from "react-dom";
|
|
16688
16937
|
|
|
16689
16938
|
// src/hooks/useReceiveAmountLabel.ts
|
|
@@ -16744,7 +16993,7 @@ function FunDirectExecutionHistoryDetail({
|
|
|
16744
16993
|
]
|
|
16745
16994
|
);
|
|
16746
16995
|
const isWithdrawal = directExecution?.clientMetadata?.isWithdrawal;
|
|
16747
|
-
const buttonProps =
|
|
16996
|
+
const buttonProps = useMemo24(() => {
|
|
16748
16997
|
if (!isLoaded) {
|
|
16749
16998
|
return void 0;
|
|
16750
16999
|
}
|
|
@@ -16890,7 +17139,7 @@ function DirectExecutionOrderDetail({
|
|
|
16890
17139
|
}) {
|
|
16891
17140
|
const { t } = useFunkitTranslation();
|
|
16892
17141
|
const [isExpanded, setIsExpanded] = useState30(false);
|
|
16893
|
-
const contentRef =
|
|
17142
|
+
const contentRef = useRef19(null);
|
|
16894
17143
|
return /* @__PURE__ */ React96.createElement(Box, { ref: contentRef, paddingX: "12" }, /* @__PURE__ */ React96.createElement(
|
|
16895
17144
|
Box,
|
|
16896
17145
|
{
|
|
@@ -17123,7 +17372,7 @@ var CheckoutNotifications = ({
|
|
|
17123
17372
|
const [initialDirectExecutions, setInitialDirectExecutions] = useState31();
|
|
17124
17373
|
const [closedNotifications, setClosedNotifications] = useState31([]);
|
|
17125
17374
|
const { data: checkouts } = useRecentCheckouts({ isVisible });
|
|
17126
|
-
const filterFunc =
|
|
17375
|
+
const filterFunc = useMemo25(() => {
|
|
17127
17376
|
return variant && {
|
|
17128
17377
|
token_transfer: isTokenTransferDirectExecution,
|
|
17129
17378
|
withdrawal: isWithdrawalDirectExecution
|
|
@@ -17145,19 +17394,19 @@ var CheckoutNotifications = ({
|
|
|
17145
17394
|
}
|
|
17146
17395
|
setInitialDirectExecutions(directExecutions);
|
|
17147
17396
|
}, [initialDirectExecutions, directExecutions]);
|
|
17148
|
-
const displayedDirectExecutions =
|
|
17397
|
+
const displayedDirectExecutions = useMemo25(() => {
|
|
17149
17398
|
if (!directExecutions) {
|
|
17150
17399
|
return [];
|
|
17151
17400
|
}
|
|
17152
17401
|
return getUpdatedDirectExecutions(directExecutions, initialDirectExecutions).filter(({ txHash }) => !closedNotifications.includes(txHash)).slice(0, MAX_COUNT);
|
|
17153
17402
|
}, [initialDirectExecutions, directExecutions, closedNotifications]);
|
|
17154
|
-
const displayedCheckouts =
|
|
17403
|
+
const displayedCheckouts = useMemo25(() => {
|
|
17155
17404
|
if (!checkouts) {
|
|
17156
17405
|
return [];
|
|
17157
17406
|
}
|
|
17158
17407
|
return getUpdatedCheckouts(checkouts, initialCheckouts).filter(({ depositAddr }) => !closedNotifications.includes(depositAddr)).slice(0, MAX_COUNT);
|
|
17159
17408
|
}, [initialCheckouts, checkouts, closedNotifications]);
|
|
17160
|
-
const combinedNotifications =
|
|
17409
|
+
const combinedNotifications = useMemo25(() => {
|
|
17161
17410
|
return [
|
|
17162
17411
|
...displayedDirectExecutions.map(
|
|
17163
17412
|
(item) => ({ ...item, isDirectExecution: true })
|
|
@@ -17167,7 +17416,7 @@ var CheckoutNotifications = ({
|
|
|
17167
17416
|
)
|
|
17168
17417
|
].sort((a, b) => b.createdTimeMs - a.createdTimeMs);
|
|
17169
17418
|
}, [displayedDirectExecutions, displayedCheckouts]);
|
|
17170
|
-
const displayedNotifications =
|
|
17419
|
+
const displayedNotifications = useMemo25(() => {
|
|
17171
17420
|
return isExpanded ? combinedNotifications : combinedNotifications.slice(0, COLLAPSED_COUNT);
|
|
17172
17421
|
}, [isExpanded, combinedNotifications]);
|
|
17173
17422
|
const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
|
|
@@ -17324,13 +17573,13 @@ import React106 from "react";
|
|
|
17324
17573
|
import React105 from "react";
|
|
17325
17574
|
|
|
17326
17575
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
|
|
17327
|
-
import React100, { useCallback as useCallback22, useMemo as
|
|
17576
|
+
import React100, { useCallback as useCallback22, useMemo as useMemo26, useState as useState32 } from "react";
|
|
17328
17577
|
import { createPortal as createPortal5 } from "react-dom";
|
|
17329
17578
|
|
|
17330
17579
|
// src/hooks/useFunListeners.ts
|
|
17331
|
-
import { useEffect as useEffect34, useRef as
|
|
17580
|
+
import { useEffect as useEffect34, useRef as useRef20 } from "react";
|
|
17332
17581
|
function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
|
|
17333
|
-
const activeIntervalRef =
|
|
17582
|
+
const activeIntervalRef = useRef20();
|
|
17334
17583
|
const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
|
|
17335
17584
|
useEffect34(() => {
|
|
17336
17585
|
if (activate) {
|
|
@@ -17391,7 +17640,7 @@ function FunCheckoutHistoryDetail({
|
|
|
17391
17640
|
isActiveCheckout
|
|
17392
17641
|
]
|
|
17393
17642
|
);
|
|
17394
|
-
const primaryButtonProps =
|
|
17643
|
+
const primaryButtonProps = useMemo26(() => {
|
|
17395
17644
|
if (!isCheckoutLoaded) {
|
|
17396
17645
|
return void 0;
|
|
17397
17646
|
}
|
|
@@ -17478,7 +17727,7 @@ var CheckoutAlert = ({ state, refundState, onHelp: onHelp2 }) => {
|
|
|
17478
17727
|
|
|
17479
17728
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
|
|
17480
17729
|
import { sendSupportMessage } from "@funkit/api-base";
|
|
17481
|
-
import React104, { useEffect as useEffect35, useMemo as
|
|
17730
|
+
import React104, { useEffect as useEffect35, useMemo as useMemo27, useRef as useRef21, useState as useState33 } from "react";
|
|
17482
17731
|
import { createPortal as createPortal6 } from "react-dom";
|
|
17483
17732
|
|
|
17484
17733
|
// src/components/FunInput/FunTextAreaInput.tsx
|
|
@@ -17662,13 +17911,13 @@ function FunCheckoutHistoryHelp({
|
|
|
17662
17911
|
);
|
|
17663
17912
|
const [descriptionInput, setDescriptionInput] = useState33("");
|
|
17664
17913
|
const [errorMessage, setErrorMessage] = useState33();
|
|
17665
|
-
const isEmailInputValid =
|
|
17914
|
+
const isEmailInputValid = useMemo27(() => {
|
|
17666
17915
|
return validateEmailString(emailInput);
|
|
17667
17916
|
}, [emailInput]);
|
|
17668
17917
|
const [processStage, setProcessStage] = useState33(
|
|
17669
17918
|
0 /* INPUT */
|
|
17670
17919
|
);
|
|
17671
|
-
const wrapperRef =
|
|
17920
|
+
const wrapperRef = useRef21(null);
|
|
17672
17921
|
useEffect35(() => wrapperRef.current?.scrollIntoView(), []);
|
|
17673
17922
|
const handleShowErrorMessage = (message, timeMs = FIVE_SECONDS_MS) => {
|
|
17674
17923
|
setErrorMessage(message);
|
|
@@ -17860,6 +18109,12 @@ function FunCheckoutHistoryContent({
|
|
|
17860
18109
|
onHelp: onHelp2
|
|
17861
18110
|
}) {
|
|
17862
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
|
+
);
|
|
17863
18118
|
const { directExecution } = useDirectExecutionInfoPolling({
|
|
17864
18119
|
initDirectExecution: directExecutionInfo
|
|
17865
18120
|
});
|
|
@@ -17872,6 +18127,7 @@ function FunCheckoutHistoryContent({
|
|
|
17872
18127
|
directExecution,
|
|
17873
18128
|
isActiveCheckout,
|
|
17874
18129
|
onClose,
|
|
18130
|
+
dangerousCustomDelayedAutoTriggerCutoff: lighterNativeDeposit ? LIGHTER_DELAYED_AUTO_TRIGGER_CUTOFF : void 0,
|
|
17875
18131
|
onAnimationComplete
|
|
17876
18132
|
}
|
|
17877
18133
|
);
|
|
@@ -18058,7 +18314,7 @@ import React108, {
|
|
|
18058
18314
|
createContext as createContext14,
|
|
18059
18315
|
useCallback as useCallback24,
|
|
18060
18316
|
useContext as useContext14,
|
|
18061
|
-
useMemo as
|
|
18317
|
+
useMemo as useMemo28,
|
|
18062
18318
|
useState as useState35
|
|
18063
18319
|
} from "react";
|
|
18064
18320
|
var ActivityTraversalContext = createContext14({
|
|
@@ -18101,7 +18357,7 @@ var ActivityTraversalProvider = ({
|
|
|
18101
18357
|
setSelectedPurchaseInitView(void 0);
|
|
18102
18358
|
setReturnView(void 0);
|
|
18103
18359
|
}, []);
|
|
18104
|
-
const contextValue =
|
|
18360
|
+
const contextValue = useMemo28(
|
|
18105
18361
|
() => ({
|
|
18106
18362
|
selectedPurchaseId,
|
|
18107
18363
|
selectedPurchaseInitView,
|
|
@@ -18130,12 +18386,12 @@ import React217, { useCallback as useCallback46, useState as useState69 } from "
|
|
|
18130
18386
|
|
|
18131
18387
|
// src/components/FunCheckoutModalHeightAnimationWrapper/FunCheckoutModalHeightAnimationWrapper.tsx
|
|
18132
18388
|
import { motion as motion15 } from "motion/react";
|
|
18133
|
-
import React204, { useEffect as useEffect51, useRef as
|
|
18389
|
+
import React204, { useEffect as useEffect51, useRef as useRef28, useState as useState66 } from "react";
|
|
18134
18390
|
|
|
18135
18391
|
// src/modals/CheckoutModal/stepTransition.ts
|
|
18136
18392
|
import {
|
|
18137
18393
|
useCallback as useCallback44,
|
|
18138
|
-
useRef as
|
|
18394
|
+
useRef as useRef27,
|
|
18139
18395
|
useState as useState65
|
|
18140
18396
|
} from "react";
|
|
18141
18397
|
|
|
@@ -18206,11 +18462,11 @@ function useAnimatedNavigation(callback) {
|
|
|
18206
18462
|
}
|
|
18207
18463
|
|
|
18208
18464
|
// src/hooks/useCheckoutQuoteNotification.ts
|
|
18209
|
-
import { useMemo as
|
|
18465
|
+
import { useMemo as useMemo29 } from "react";
|
|
18210
18466
|
function useCheckoutQuoteNotification() {
|
|
18211
18467
|
const { clearCheckoutQuoteMessages } = useQuoteContext();
|
|
18212
18468
|
const { quoteErrorMessage, quoteStepMessage } = useQuoteContext();
|
|
18213
|
-
const quoteNotification =
|
|
18469
|
+
const quoteNotification = useMemo29(() => {
|
|
18214
18470
|
if (quoteErrorMessage !== "") {
|
|
18215
18471
|
return {
|
|
18216
18472
|
messageType: "error",
|
|
@@ -19648,7 +19904,7 @@ import {
|
|
|
19648
19904
|
DirectExecutionType as DirectExecutionType2,
|
|
19649
19905
|
RelayExecutionStatus as RelayExecutionStatus3
|
|
19650
19906
|
} from "@funkit/api-base";
|
|
19651
|
-
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";
|
|
19652
19908
|
var overrideAssetsData = (de, checkoutItem) => {
|
|
19653
19909
|
return {
|
|
19654
19910
|
...de,
|
|
@@ -19723,7 +19979,7 @@ var BrokerageSuccess = ({
|
|
|
19723
19979
|
}) => {
|
|
19724
19980
|
const { t } = useFunkitTranslation();
|
|
19725
19981
|
const [startTime] = useState39(() => Date.now());
|
|
19726
|
-
const filterFunc =
|
|
19982
|
+
const filterFunc = useMemo30(() => {
|
|
19727
19983
|
return (execution) => execution.createdTimeMs > startTime && execution.listenerInfo?.status === RelayExecutionStatus3.SUCCESS;
|
|
19728
19984
|
}, [startTime]);
|
|
19729
19985
|
const { data: directExecutions } = useRecentDirectExecutions({
|
|
@@ -19743,7 +19999,7 @@ var BrokerageSuccess = ({
|
|
|
19743
19999
|
setDirectExecution(getFakeDirectExecution(checkoutItem, walletAddress));
|
|
19744
20000
|
}
|
|
19745
20001
|
}, [directExecution, checkoutItem, setCheckoutProgress]);
|
|
19746
|
-
const latestDirectExecution =
|
|
20002
|
+
const latestDirectExecution = useMemo30(() => {
|
|
19747
20003
|
return directExecutions?.[0];
|
|
19748
20004
|
}, [directExecutions?.[0]?.txHash]);
|
|
19749
20005
|
useEffect36(() => {
|
|
@@ -19798,7 +20054,7 @@ var BrokerageSuccess = ({
|
|
|
19798
20054
|
// string
|
|
19799
20055
|
directExecution?.txHash
|
|
19800
20056
|
]);
|
|
19801
|
-
const customTextConfigSteps =
|
|
20057
|
+
const customTextConfigSteps = useMemo30(() => {
|
|
19802
20058
|
if (exchangeType) {
|
|
19803
20059
|
return {
|
|
19804
20060
|
...getDefaultTextConfigSteps(t),
|
|
@@ -20855,7 +21111,7 @@ function CheckoutHelp({
|
|
|
20855
21111
|
}
|
|
20856
21112
|
|
|
20857
21113
|
// src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
|
|
20858
|
-
import React156, { useEffect as useEffect43, useMemo as
|
|
21114
|
+
import React156, { useEffect as useEffect43, useMemo as useMemo36, useState as useState51 } from "react";
|
|
20859
21115
|
import { createPortal as createPortal14 } from "react-dom";
|
|
20860
21116
|
|
|
20861
21117
|
// src/providers/UserPresenceContext.tsx
|
|
@@ -20901,9 +21157,9 @@ import React145 from "react";
|
|
|
20901
21157
|
import React144, { useState as useState44 } from "react";
|
|
20902
21158
|
|
|
20903
21159
|
// src/hooks/useInterval.ts
|
|
20904
|
-
import { useEffect as useEffect39, useRef as
|
|
21160
|
+
import { useEffect as useEffect39, useRef as useRef22 } from "react";
|
|
20905
21161
|
function useInterval(callback, delay) {
|
|
20906
|
-
const savedCallback =
|
|
21162
|
+
const savedCallback = useRef22(callback);
|
|
20907
21163
|
useIsomorphicLayoutEffect(() => {
|
|
20908
21164
|
savedCallback.current = callback;
|
|
20909
21165
|
}, [callback]);
|
|
@@ -20961,7 +21217,7 @@ import {
|
|
|
20961
21217
|
} from "@funkit/utils";
|
|
20962
21218
|
import NumberFlow from "@number-flow/react";
|
|
20963
21219
|
import { motion as motion9 } from "motion/react";
|
|
20964
|
-
import React147, { useMemo as
|
|
21220
|
+
import React147, { useMemo as useMemo32 } from "react";
|
|
20965
21221
|
|
|
20966
21222
|
// src/consts/design.ts
|
|
20967
21223
|
var mapFontLineHeightToNumberFlowHeight = {
|
|
@@ -20974,7 +21230,7 @@ var defaultTransition = "all 150ms cubic-bezier(0.3, 0, 0.06, 1)";
|
|
|
20974
21230
|
// src/components/FunAssetAvatar/FunAssetAvatar.tsx
|
|
20975
21231
|
import { isNotNullish as isNotNullish4 } from "@funkit/utils";
|
|
20976
21232
|
import clsx20 from "clsx";
|
|
20977
|
-
import React146, { useMemo as
|
|
21233
|
+
import React146, { useMemo as useMemo31 } from "react";
|
|
20978
21234
|
|
|
20979
21235
|
// src/components/FunAssetAvatar/FunAssetAvatar.css.ts
|
|
20980
21236
|
var chainContainerStyle = "uwrdc22 _1rsrm2f19 _1rsrm2fa _1rsrm2f4 _1rsrm2f4o";
|
|
@@ -20995,7 +21251,7 @@ function FunAssetAvatar({
|
|
|
20995
21251
|
isChainIconHidden = false
|
|
20996
21252
|
}) {
|
|
20997
21253
|
const chainMetadata = chainMetadataById[Number.parseInt((chainId || "").toString())] || null;
|
|
20998
|
-
const finalAssetSrc =
|
|
21254
|
+
const finalAssetSrc = useMemo31(() => {
|
|
20999
21255
|
const normalizedTicker = assetTicker?.toUpperCase() || "";
|
|
21000
21256
|
const defaultSrc = ASSET_LOGO_SRCS[normalizedTicker];
|
|
21001
21257
|
if (prioritizeDefaults) {
|
|
@@ -21114,7 +21370,7 @@ function PaymentAmountSummary({
|
|
|
21114
21370
|
const showYouWillPaySummary = !isExactSameToken && !isCardPayment || hasStakingToken;
|
|
21115
21371
|
const feeBreakdown = quote?.baseQuote.metadata?.feeBreakdown;
|
|
21116
21372
|
const swapImpactPct = checkoutConfig?.generateActionsParams ? feeBreakdown?.swapImpact + feeBreakdown?.appFeePercent || 0 : 0;
|
|
21117
|
-
const receiveTokenUsdAmount =
|
|
21373
|
+
const receiveTokenUsdAmount = useMemo32(() => {
|
|
21118
21374
|
if (!quote) {
|
|
21119
21375
|
return void 0;
|
|
21120
21376
|
}
|
|
@@ -21246,24 +21502,16 @@ function useCheckoutItemDisplay({
|
|
|
21246
21502
|
});
|
|
21247
21503
|
}
|
|
21248
21504
|
|
|
21249
|
-
// src/utils/customer.ts
|
|
21250
|
-
function isKatanaEarnFlow({
|
|
21251
|
-
apiKey,
|
|
21252
|
-
checkoutConfig
|
|
21253
|
-
}) {
|
|
21254
|
-
return isKatanaCustomer(apiKey) && !!checkoutConfig && isCheckoutPostActionRequired(checkoutConfig);
|
|
21255
|
-
}
|
|
21256
|
-
|
|
21257
21505
|
// src/modals/CheckoutModal/ConfirmationStep/CheckoutPrimaryInfo.tsx
|
|
21258
21506
|
import React150 from "react";
|
|
21259
21507
|
|
|
21260
21508
|
// src/components/AnimatedDollarValue/AnimatedDollarValue.tsx
|
|
21261
21509
|
import NumberFlow2 from "@number-flow/react";
|
|
21262
|
-
import React148, { forwardRef as forwardRef4, useMemo as
|
|
21510
|
+
import React148, { forwardRef as forwardRef4, useMemo as useMemo33 } from "react";
|
|
21263
21511
|
var AnimatedDollarValue = forwardRef4((props, ref) => {
|
|
21264
21512
|
const { value, dynamicMinFractionDigits, ...restProps } = props;
|
|
21265
21513
|
const minimumFractionDigits = typeof value === "number" && !Number.isInteger(value) || !dynamicMinFractionDigits ? 2 : 0;
|
|
21266
|
-
const formatOptions =
|
|
21514
|
+
const formatOptions = useMemo33(
|
|
21267
21515
|
() => ({
|
|
21268
21516
|
style: "currency",
|
|
21269
21517
|
currency: "USD",
|
|
@@ -21412,7 +21660,7 @@ function CheckoutPrimaryInfo({
|
|
|
21412
21660
|
}
|
|
21413
21661
|
|
|
21414
21662
|
// src/modals/CheckoutModal/ConfirmationStep/DisclaimerText.tsx
|
|
21415
|
-
import React151, { useMemo as
|
|
21663
|
+
import React151, { useMemo as useMemo34 } from "react";
|
|
21416
21664
|
import { Trans as Trans8 } from "react-i18next";
|
|
21417
21665
|
var FunLinkButtonComponent = ({
|
|
21418
21666
|
children,
|
|
@@ -21487,7 +21735,7 @@ var DisclaimerText = ({
|
|
|
21487
21735
|
};
|
|
21488
21736
|
function useCardDisclaimer(checkoutItem, finalConvertedAssetName) {
|
|
21489
21737
|
const { t } = useFunkitTranslation();
|
|
21490
|
-
const cardDisclaimer =
|
|
21738
|
+
const cardDisclaimer = useMemo34(() => {
|
|
21491
21739
|
if (!checkoutItem || !finalConvertedAssetName) {
|
|
21492
21740
|
return null;
|
|
21493
21741
|
}
|
|
@@ -21694,14 +21942,14 @@ import { useAccount as useAccount6, useSendTransaction, useWriteContract } from
|
|
|
21694
21942
|
|
|
21695
21943
|
// src/utils/isMainnetUsdt.ts
|
|
21696
21944
|
import { isTokenEquivalent as isTokenEquivalent3 } from "@funkit/utils";
|
|
21697
|
-
import { mainnet as
|
|
21945
|
+
import { mainnet as mainnet9 } from "viem/chains";
|
|
21698
21946
|
var USDT_MAINNET_ADDRESS = "0xdAC17F958D2ee523a2206206994597C13D831ec7";
|
|
21699
21947
|
function isMainnetUsdt(chainId, address) {
|
|
21700
21948
|
return isTokenEquivalent3({
|
|
21701
21949
|
firstTokenAddress: address,
|
|
21702
21950
|
firstTokenChainId: chainId.toString(),
|
|
21703
21951
|
secondTokenAddress: USDT_MAINNET_ADDRESS,
|
|
21704
|
-
secondTokenChainId:
|
|
21952
|
+
secondTokenChainId: mainnet9.id.toString()
|
|
21705
21953
|
});
|
|
21706
21954
|
}
|
|
21707
21955
|
|
|
@@ -21974,7 +22222,7 @@ function usePostCheckout({
|
|
|
21974
22222
|
}
|
|
21975
22223
|
|
|
21976
22224
|
// src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
|
|
21977
|
-
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";
|
|
21978
22226
|
|
|
21979
22227
|
// src/hooks/useCountdown.tsx
|
|
21980
22228
|
import React155 from "react";
|
|
@@ -22172,8 +22420,8 @@ function useQuoteRefresh({
|
|
|
22172
22420
|
refreshIntervalSeconds
|
|
22173
22421
|
}) {
|
|
22174
22422
|
const { setCheckoutQuote, isQuoting, quoteErrorMessage, quoteStepMessage } = useQuoteContext();
|
|
22175
|
-
const preloadedQuoteRef =
|
|
22176
|
-
const quoteCallbackRef =
|
|
22423
|
+
const preloadedQuoteRef = useRef23();
|
|
22424
|
+
const quoteCallbackRef = useRef23();
|
|
22177
22425
|
const [isPendingRefresh, setIsPendingRefresh] = useState50(false);
|
|
22178
22426
|
const {
|
|
22179
22427
|
isSourceAssetConfirming,
|
|
@@ -22237,7 +22485,7 @@ function useQuoteRefresh({
|
|
|
22237
22485
|
},
|
|
22238
22486
|
[isOnHold, restartCountdown, setCheckoutQuote, triggerAssetConfirm]
|
|
22239
22487
|
);
|
|
22240
|
-
const quoteError =
|
|
22488
|
+
const quoteError = useMemo35(() => {
|
|
22241
22489
|
if (quoteErrorMessage && !isQuoting) {
|
|
22242
22490
|
return {
|
|
22243
22491
|
message: quoteErrorMessage,
|
|
@@ -22375,7 +22623,7 @@ function ConfirmationStep({
|
|
|
22375
22623
|
})
|
|
22376
22624
|
);
|
|
22377
22625
|
const error = confirmationError ?? postCheckoutError ?? quoteError;
|
|
22378
|
-
const stepMessage =
|
|
22626
|
+
const stepMessage = useMemo36(() => {
|
|
22379
22627
|
if (initialQuoteStep) {
|
|
22380
22628
|
return initialQuoteStep;
|
|
22381
22629
|
}
|
|
@@ -22433,7 +22681,7 @@ function ConfirmationStep({
|
|
|
22433
22681
|
const isQuoteLoading = isInitialQuoting || isQuoting;
|
|
22434
22682
|
const isStepLoading = isInitialQuoting || isContinuing || isRefreshing;
|
|
22435
22683
|
const customRecipient = checkoutItem?.initSettings.config.customRecipient;
|
|
22436
|
-
const showKatanaBridgeAlert =
|
|
22684
|
+
const showKatanaBridgeAlert = useMemo36(() => {
|
|
22437
22685
|
const relayQuoteMetadata = latestQuote?.baseQuote?.metadata;
|
|
22438
22686
|
if (!relayQuoteMetadata) {
|
|
22439
22687
|
return false;
|
|
@@ -22664,7 +22912,7 @@ import React173, { useEffect as useEffect45 } from "react";
|
|
|
22664
22912
|
|
|
22665
22913
|
// src/hooks/queries/useMeldCurrencies.ts
|
|
22666
22914
|
import { getMeldSupportedFiat } from "@funkit/api-base";
|
|
22667
|
-
import { useQuery as
|
|
22915
|
+
import { useQuery as useQuery16 } from "@tanstack/react-query";
|
|
22668
22916
|
var getPriority = (currencyCode) => {
|
|
22669
22917
|
if (currencyCode === "USD") {
|
|
22670
22918
|
return 0;
|
|
@@ -22676,7 +22924,7 @@ var getPriority = (currencyCode) => {
|
|
|
22676
22924
|
};
|
|
22677
22925
|
var useMeldCurrencies = (isEnabled = true) => {
|
|
22678
22926
|
const { apiKey } = useFunkitConfig();
|
|
22679
|
-
const query =
|
|
22927
|
+
const query = useQuery16({
|
|
22680
22928
|
queryKey: ["meld", "currencies"],
|
|
22681
22929
|
queryFn: async () => {
|
|
22682
22930
|
if (!apiKey) {
|
|
@@ -22702,7 +22950,7 @@ var useMeldCurrencies = (isEnabled = true) => {
|
|
|
22702
22950
|
|
|
22703
22951
|
// src/hooks/queries/useMeldDefaultCurrency.ts
|
|
22704
22952
|
import { getMeldDefaultFiat } from "@funkit/api-base";
|
|
22705
|
-
import { useQuery as
|
|
22953
|
+
import { useQuery as useQuery17 } from "@tanstack/react-query";
|
|
22706
22954
|
|
|
22707
22955
|
// src/hooks/queries/useMeldCryptoCurrencyCode.ts
|
|
22708
22956
|
import { FlagKey as FlagKey15 } from "@funkit/utils";
|
|
@@ -22748,7 +22996,7 @@ var useMeldDefaultCurrency = (paymentMethod) => {
|
|
|
22748
22996
|
const { apiKey } = useFunkitConfig();
|
|
22749
22997
|
const { userIpInfo } = useFunkitUserIp();
|
|
22750
22998
|
const enableMeld = useIsMeldEnabled();
|
|
22751
|
-
const query =
|
|
22999
|
+
const query = useQuery17({
|
|
22752
23000
|
queryKey: ["meld", "defaultCurrency", paymentMethod],
|
|
22753
23001
|
queryFn: async () => {
|
|
22754
23002
|
if (!apiKey) {
|
|
@@ -22773,7 +23021,7 @@ var useMeldDefaultCurrency = (paymentMethod) => {
|
|
|
22773
23021
|
// src/hooks/queries/useMeldLimits.ts
|
|
22774
23022
|
import { getMeldFiatLimits } from "@funkit/api-base";
|
|
22775
23023
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify6 } from "@funkit/utils";
|
|
22776
|
-
import { useQuery as
|
|
23024
|
+
import { useQuery as useQuery19 } from "@tanstack/react-query";
|
|
22777
23025
|
|
|
22778
23026
|
// src/consts/meld.ts
|
|
22779
23027
|
var MELD_MIN_LIMIT_BUFFER = 5;
|
|
@@ -22805,9 +23053,9 @@ var getExchangeRate = (currency, currencyExchangeRates, bipsMarkup = DEFAULT_BIP
|
|
|
22805
23053
|
|
|
22806
23054
|
// src/hooks/useFiatExchangeRates.ts
|
|
22807
23055
|
import { getFiatExchangeRates } from "@funkit/api-base";
|
|
22808
|
-
import { useQuery as
|
|
23056
|
+
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
22809
23057
|
function useFiatExchangeRates(enabled = true) {
|
|
22810
|
-
const { data, isLoading, error } =
|
|
23058
|
+
const { data, isLoading, error } = useQuery18({
|
|
22811
23059
|
queryKey: ["fiatExchangeRates"],
|
|
22812
23060
|
queryFn: () => getFiatExchangeRates(),
|
|
22813
23061
|
refetchOnMount: false,
|
|
@@ -22852,7 +23100,7 @@ var useMeldLimits = (isEnabled = true) => {
|
|
|
22852
23100
|
const { userIpInfo } = useFunkitUserIp();
|
|
22853
23101
|
const cryptoCurrency = useMeldCryptoCurrencyCode();
|
|
22854
23102
|
const countryCode = userIpInfo?.alpha2;
|
|
22855
|
-
const query =
|
|
23103
|
+
const query = useQuery19({
|
|
22856
23104
|
queryKey: ["meld", "limits", countryCode, cryptoCurrency],
|
|
22857
23105
|
queryFn: async () => {
|
|
22858
23106
|
if (!apiKey || !countryCode) {
|
|
@@ -22935,23 +23183,23 @@ var useMeldLimitError = (amount, fiatCurrency) => {
|
|
|
22935
23183
|
|
|
22936
23184
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoaded.tsx
|
|
22937
23185
|
import {
|
|
22938
|
-
FlagKey as
|
|
23186
|
+
FlagKey as FlagKey17,
|
|
22939
23187
|
formatCryptoAndStringify as formatCryptoAndStringify5,
|
|
22940
23188
|
formatCurrencyAndStringify as formatCurrencyAndStringify9,
|
|
22941
23189
|
isTokenEquivalent as isTokenEquivalent4,
|
|
22942
23190
|
round as round2
|
|
22943
23191
|
} from "@funkit/utils";
|
|
22944
23192
|
import { motion as motion11 } from "motion/react";
|
|
22945
|
-
import React171, { useMemo as
|
|
23193
|
+
import React171, { useMemo as useMemo38 } from "react";
|
|
22946
23194
|
|
|
22947
23195
|
// src/components/AnimatedWidthWrapper/AnimatedWidthWrapper.tsx
|
|
22948
23196
|
import { motion as motion10 } from "motion/react";
|
|
22949
23197
|
import React159 from "react";
|
|
22950
|
-
import { useEffect as useEffect44, useRef as
|
|
23198
|
+
import { useEffect as useEffect44, useRef as useRef24, useState as useState52 } from "react";
|
|
22951
23199
|
function AnimatedWidthWrapper({ children }) {
|
|
22952
|
-
const containerRef =
|
|
22953
|
-
const animationFrameRef =
|
|
22954
|
-
const resizeObserverRef =
|
|
23200
|
+
const containerRef = useRef24(null);
|
|
23201
|
+
const animationFrameRef = useRef24(null);
|
|
23202
|
+
const resizeObserverRef = useRef24(null);
|
|
22955
23203
|
const [width, setWidth] = useState52("auto");
|
|
22956
23204
|
useEffect44(() => {
|
|
22957
23205
|
if (containerRef.current) {
|
|
@@ -23988,7 +24236,7 @@ function InputAmountLayout({
|
|
|
23988
24236
|
}
|
|
23989
24237
|
|
|
23990
24238
|
// src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
|
|
23991
|
-
import {
|
|
24239
|
+
import { clamp as clamp2, formatCurrencyAndStringify as formatCurrencyAndStringify7 } from "@funkit/utils";
|
|
23992
24240
|
import React167 from "react";
|
|
23993
24241
|
var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
|
|
23994
24242
|
function deduplicateArray(arr) {
|
|
@@ -23996,10 +24244,7 @@ function deduplicateArray(arr) {
|
|
|
23996
24244
|
}
|
|
23997
24245
|
function useFiatAmountOptions(currency) {
|
|
23998
24246
|
const isMeldEnabled = useIsMeldEnabled();
|
|
23999
|
-
const
|
|
24000
|
-
const currencyQuickOption = safeJSONParse(
|
|
24001
|
-
currencyQuickOptionStr
|
|
24002
|
-
);
|
|
24247
|
+
const currencyQuickOption = useDynamicConfig("meldquickoptions");
|
|
24003
24248
|
const { data: meldLimit, isPending } = useMeldLimit(currency);
|
|
24004
24249
|
if (isPending || !meldLimit || !isMeldEnabled) {
|
|
24005
24250
|
return [];
|
|
@@ -24007,9 +24252,7 @@ function useFiatAmountOptions(currency) {
|
|
|
24007
24252
|
const minimumAmount = meldLimit.minimumAmount;
|
|
24008
24253
|
const maximumAmount = meldLimit.maximumAmount;
|
|
24009
24254
|
return deduplicateArray(
|
|
24010
|
-
currencyQuickOption?.[currency ?? "USD"]?.map(
|
|
24011
|
-
(val) => clamp2(val, minimumAmount, maximumAmount)
|
|
24012
|
-
) || []
|
|
24255
|
+
currencyQuickOption?.[currency ?? "USD"]?.map((val) => clamp2(val, minimumAmount, maximumAmount)) || []
|
|
24013
24256
|
);
|
|
24014
24257
|
}
|
|
24015
24258
|
var QuickOptions = ({
|
|
@@ -24058,9 +24301,9 @@ var QuickOptions = ({
|
|
|
24058
24301
|
// src/modals/CheckoutModal/InputAmount/useAmountInput.ts
|
|
24059
24302
|
import {
|
|
24060
24303
|
useCallback as useCallback36,
|
|
24061
|
-
useMemo as
|
|
24304
|
+
useMemo as useMemo37,
|
|
24062
24305
|
useReducer as useReducer3,
|
|
24063
|
-
useRef as
|
|
24306
|
+
useRef as useRef25,
|
|
24064
24307
|
useState as useState54
|
|
24065
24308
|
} from "react";
|
|
24066
24309
|
|
|
@@ -24373,11 +24616,11 @@ function useAmountInput(options) {
|
|
|
24373
24616
|
quickOptions,
|
|
24374
24617
|
paymentMethodInfo
|
|
24375
24618
|
} = options;
|
|
24376
|
-
const derivedState =
|
|
24619
|
+
const derivedState = useMemo37(
|
|
24377
24620
|
() => getDerivedState(state, checkoutConfig.targetAssetTicker),
|
|
24378
24621
|
[state, checkoutConfig]
|
|
24379
24622
|
);
|
|
24380
|
-
const inputRef =
|
|
24623
|
+
const inputRef = useRef25(null);
|
|
24381
24624
|
const { inputValue, locale } = state;
|
|
24382
24625
|
const { inputDecimals, inputAffix, placeholder } = derivedState;
|
|
24383
24626
|
const { measureText } = useTextMeasurer(inputRef);
|
|
@@ -24934,8 +25177,9 @@ function createMoonpayMeldQuote(quote) {
|
|
|
24934
25177
|
};
|
|
24935
25178
|
}
|
|
24936
25179
|
function withMoonpayMeldQuote(quotes) {
|
|
24937
|
-
if (!quotes) {
|
|
24938
|
-
|
|
25180
|
+
if (!quotes || quotes.length === 0) {
|
|
25181
|
+
logger.error("withMoonpayMeldQuote:error", "No quotes could be found.");
|
|
25182
|
+
return void 0;
|
|
24939
25183
|
}
|
|
24940
25184
|
const topQuote = quotes[0];
|
|
24941
25185
|
const moonpay = createMoonpayMeldQuote(topQuote);
|
|
@@ -24978,7 +25222,7 @@ var useMeldLink = (sourceAmount, sourceCurrencyCode = "USD") => {
|
|
|
24978
25222
|
|
|
24979
25223
|
// src/modals/CheckoutModal/MeldQuotes/useMeldQuotes.tsx
|
|
24980
25224
|
import { getMeldQuotes } from "@funkit/api-base";
|
|
24981
|
-
import { useQuery as
|
|
25225
|
+
import { useQuery as useQuery20 } from "@tanstack/react-query";
|
|
24982
25226
|
import { useDebounce as useDebounce2 } from "use-debounce";
|
|
24983
25227
|
var DEBOUNCE_DELAY = 500;
|
|
24984
25228
|
var COUNTDOWN_INTERVAL_SEC = 60;
|
|
@@ -24991,7 +25235,7 @@ var useMeldQuotes = (sourceAmount, fiatCurrency, meldEnabled = true) => {
|
|
|
24991
25235
|
const destinationCurrencyCode = useMeldCryptoCurrencyCode();
|
|
24992
25236
|
const isPolymarket = isPolymarketCustomer(apiKey);
|
|
24993
25237
|
const sourceCurrencyCode = fiatCurrency || "USD";
|
|
24994
|
-
const query =
|
|
25238
|
+
const query = useQuery20({
|
|
24995
25239
|
queryKey: [
|
|
24996
25240
|
"meld",
|
|
24997
25241
|
"quotes",
|
|
@@ -25051,7 +25295,7 @@ import {
|
|
|
25051
25295
|
katanaChain
|
|
25052
25296
|
} from "@funkit/chains";
|
|
25053
25297
|
import { useCallback as useCallback37, useState as useState55 } from "react";
|
|
25054
|
-
import { mainnet as
|
|
25298
|
+
import { mainnet as mainnet10, mantle, zksync as zksync2 } from "viem/chains";
|
|
25055
25299
|
import { getAssetErc20ByChainAndSymbol as getAssetErc20ByChainAndSymbol2 } from "@funkit/api-base";
|
|
25056
25300
|
var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
|
|
25057
25301
|
if (!checkoutItem?.initSettings.config.targetChain) {
|
|
@@ -25085,7 +25329,7 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo, apiKey) => {
|
|
|
25085
25329
|
sourceTokenAddress = NATIVE_TOKEN;
|
|
25086
25330
|
sourceTokenChainId = moonpayChainId;
|
|
25087
25331
|
} else {
|
|
25088
|
-
sourceTokenChainId = isNyOrTxOrVi ?
|
|
25332
|
+
sourceTokenChainId = isNyOrTxOrVi ? mainnet10.id.toString() : moonpayChainId;
|
|
25089
25333
|
if (isTargetAssetEthOrWeth) {
|
|
25090
25334
|
sourceTokenTicker = "ETH" /* ETH */;
|
|
25091
25335
|
sourceTokenAddress = NATIVE_TOKEN;
|
|
@@ -25299,7 +25543,7 @@ function InputAmountLoaded({
|
|
|
25299
25543
|
textCustomizations
|
|
25300
25544
|
}) {
|
|
25301
25545
|
const { t } = useFunkitTranslation();
|
|
25302
|
-
const maxCheckoutUsdString = useFlag(
|
|
25546
|
+
const maxCheckoutUsdString = useFlag(FlagKey17.MaxCheckoutUsd);
|
|
25303
25547
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
25304
25548
|
const paymentMethodInfo = modalState.paymentMethodInfo;
|
|
25305
25549
|
const { quote: manuallySelectedQuote } = modalState;
|
|
@@ -25358,7 +25602,7 @@ function InputAmountLoaded({
|
|
|
25358
25602
|
onNext,
|
|
25359
25603
|
onClose
|
|
25360
25604
|
});
|
|
25361
|
-
const error =
|
|
25605
|
+
const error = useMemo38(() => {
|
|
25362
25606
|
if (isCardCheckout) {
|
|
25363
25607
|
const meldError = getMeldError();
|
|
25364
25608
|
if (meldError) {
|
|
@@ -25760,7 +26004,7 @@ function YouPayYouReceiveWrapper({
|
|
|
25760
26004
|
|
|
25761
26005
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoading.tsx
|
|
25762
26006
|
import { formatCryptoAndStringify as formatCryptoAndStringify6 } from "@funkit/utils";
|
|
25763
|
-
import React172, { useMemo as
|
|
26007
|
+
import React172, { useMemo as useMemo39 } from "react";
|
|
25764
26008
|
function InputAmountLoading({
|
|
25765
26009
|
modalState,
|
|
25766
26010
|
sourceHoldingError,
|
|
@@ -25773,7 +26017,7 @@ function InputAmountLoading({
|
|
|
25773
26017
|
const isSourceNavWidgetEnabled = modalState.startingStep === "select_asset" /* SELECT_ASSET */;
|
|
25774
26018
|
const targetAssetAmount = checkoutItem?.initSettings.config.targetAssetAmount;
|
|
25775
26019
|
const targetAssetTicker = checkoutItem?.initSettings.config.targetAssetTicker;
|
|
25776
|
-
const error =
|
|
26020
|
+
const error = useMemo39(() => {
|
|
25777
26021
|
if (sourceHoldingError) {
|
|
25778
26022
|
return {
|
|
25779
26023
|
message: /* @__PURE__ */ React172.createElement("div", null, t("inputAmount.unableToRetrieveBalance"), " "),
|
|
@@ -25853,7 +26097,7 @@ function InputAmountLoading({
|
|
|
25853
26097
|
}
|
|
25854
26098
|
|
|
25855
26099
|
// src/modals/CheckoutModal/InputAmount/useAvailableBalanceForCheckout.ts
|
|
25856
|
-
import { useMemo as
|
|
26100
|
+
import { useMemo as useMemo40 } from "react";
|
|
25857
26101
|
function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetChainId, assetSymbol) {
|
|
25858
26102
|
const paymentMethod = paymentMethodInfo.paymentMethod;
|
|
25859
26103
|
const isBrokerage = paymentMethod === "brokerage" /* BROKERAGE */;
|
|
@@ -25868,7 +26112,7 @@ function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetC
|
|
|
25868
26112
|
["virtual_bank" /* VIRTUAL_BANK */]: null
|
|
25869
26113
|
}[paymentMethod];
|
|
25870
26114
|
const isLoading = isBrokerage ? isLoadingBrokerageBalance : isLoadingWalletAssetHoldings;
|
|
25871
|
-
const holdingItem =
|
|
26115
|
+
const holdingItem = useMemo40(() => {
|
|
25872
26116
|
if (!assetSymbol || !holdings) {
|
|
25873
26117
|
return;
|
|
25874
26118
|
}
|
|
@@ -25995,7 +26239,7 @@ function InputAmount(props) {
|
|
|
25995
26239
|
import React176, { useEffect as useEffect46 } from "react";
|
|
25996
26240
|
|
|
25997
26241
|
// src/hooks/usePaymentSources.ts
|
|
25998
|
-
import { FlagKey as
|
|
26242
|
+
import { FlagKey as FlagKey18, isNotNullish as isNotNullish5 } from "@funkit/utils";
|
|
25999
26243
|
function usePaymentMethodEnablement({
|
|
26000
26244
|
checkoutConfig
|
|
26001
26245
|
}) {
|
|
@@ -26003,7 +26247,7 @@ function usePaymentMethodEnablement({
|
|
|
26003
26247
|
const isTokenTransferFlagEnabled = useIsQRCodeTransferEnabled();
|
|
26004
26248
|
const isFiatFlagEnabled = useFiatEnabled();
|
|
26005
26249
|
const isMeldFlagEnabled = useIsMeldEnabled();
|
|
26006
|
-
const isBrokerageFlagEnabled = useFlag(
|
|
26250
|
+
const isBrokerageFlagEnabled = useFlag(FlagKey18.EnableBluvoBrokerage);
|
|
26007
26251
|
const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
|
|
26008
26252
|
const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
|
|
26009
26253
|
const isTokenTransferEnabled = isTokenTransferFlagEnabled && !isKatanaEarnFlowAction;
|
|
@@ -26400,7 +26644,7 @@ function LoadingAccount({
|
|
|
26400
26644
|
|
|
26401
26645
|
// src/modals/CheckoutModal/MeldCurrencySelect/MeldCurrencySelect.tsx
|
|
26402
26646
|
import clsx22 from "clsx";
|
|
26403
|
-
import React177, { useMemo as
|
|
26647
|
+
import React177, { useMemo as useMemo41, useState as useState56 } from "react";
|
|
26404
26648
|
|
|
26405
26649
|
// src/modals/CheckoutModal/MeldCurrencySelect/currenciesWithMultipleCountries.ts
|
|
26406
26650
|
var currenciesWithMultipleCountries = {
|
|
@@ -26460,7 +26704,7 @@ function MeldCurrencySelect({
|
|
|
26460
26704
|
const [selectedCurrency, setSelectedCurrency] = useState56(
|
|
26461
26705
|
defaultCurrency
|
|
26462
26706
|
);
|
|
26463
|
-
const filteredOptions =
|
|
26707
|
+
const filteredOptions = useMemo41(() => {
|
|
26464
26708
|
const newOptions = data?.filter(
|
|
26465
26709
|
({ name, currencyCode }) => currencyCode.toLowerCase().includes(query.toLowerCase()) || name.toLowerCase().includes(query.toLowerCase())
|
|
26466
26710
|
) ?? [];
|
|
@@ -26678,9 +26922,9 @@ import {
|
|
|
26678
26922
|
hyperEvmChain as hyperEvmChain5
|
|
26679
26923
|
} from "@funkit/chains";
|
|
26680
26924
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent5 } from "@funkit/utils";
|
|
26681
|
-
import React182, { useEffect as useEffect47, useMemo as
|
|
26925
|
+
import React182, { useEffect as useEffect47, useMemo as useMemo44, useState as useState57 } from "react";
|
|
26682
26926
|
import { createPortal as createPortal18 } from "react-dom";
|
|
26683
|
-
import { mainnet as
|
|
26927
|
+
import { mainnet as mainnet11 } from "viem/chains";
|
|
26684
26928
|
|
|
26685
26929
|
// src/components/Dropdown/ReceiveTokenDropdown.tsx
|
|
26686
26930
|
import React180 from "react";
|
|
@@ -26776,7 +27020,7 @@ var ReceiveTokenDropdown = ({
|
|
|
26776
27020
|
// src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
|
|
26777
27021
|
import React181 from "react";
|
|
26778
27022
|
import { Trans as Trans11 } from "react-i18next";
|
|
26779
|
-
import { FlagKey as
|
|
27023
|
+
import { FlagKey as FlagKey19 } from "@funkit/utils";
|
|
26780
27024
|
var FunLinkButtonComponent2 = ({
|
|
26781
27025
|
children,
|
|
26782
27026
|
onClick,
|
|
@@ -26796,7 +27040,7 @@ var NewTokenDepositAlert = ({
|
|
|
26796
27040
|
onClick
|
|
26797
27041
|
}) => {
|
|
26798
27042
|
const { t } = useFunkitTranslation();
|
|
26799
|
-
const alertJson = useFlag(
|
|
27043
|
+
const alertJson = useFlag(FlagKey19.NewTokenAssetSelectionBanner);
|
|
26800
27044
|
const alertData = useSafeJSONParse(alertJson);
|
|
26801
27045
|
const isTokenTransferEnabled = useIsQRCodeTransferEnabled();
|
|
26802
27046
|
if (!alertData || !isTokenTransferEnabled) {
|
|
@@ -26833,13 +27077,13 @@ var NewTokenDepositAlert = ({
|
|
|
26833
27077
|
|
|
26834
27078
|
// src/hooks/useAllowedAssets.ts
|
|
26835
27079
|
import { getAllowedAssets } from "@funkit/api-base";
|
|
26836
|
-
import { useQuery as
|
|
26837
|
-
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";
|
|
26838
27082
|
function useAllowedAssets() {
|
|
26839
27083
|
const { apiKey } = useFunkitConfig();
|
|
26840
27084
|
const { checkoutItem } = useCheckoutContext();
|
|
26841
27085
|
const isRelayEnabled = useSourceTokenRelayEnabled();
|
|
26842
|
-
const { data: allowedAssets, isLoading } =
|
|
27086
|
+
const { data: allowedAssets, isLoading } = useQuery21({
|
|
26843
27087
|
queryKey: ["getAllowedAssets", apiKey],
|
|
26844
27088
|
queryFn: () => getAllowedAssets({ apiKey, logger }),
|
|
26845
27089
|
refetchOnMount: false,
|
|
@@ -26848,7 +27092,7 @@ function useAllowedAssets() {
|
|
|
26848
27092
|
staleTime: 5 * 60 * 1e3,
|
|
26849
27093
|
gcTime: Number.POSITIVE_INFINITY
|
|
26850
27094
|
});
|
|
26851
|
-
const tokens =
|
|
27095
|
+
const tokens = useMemo42(() => {
|
|
26852
27096
|
if (!allowedAssets) {
|
|
26853
27097
|
return {};
|
|
26854
27098
|
}
|
|
@@ -26881,6 +27125,32 @@ function useAllowedAssets() {
|
|
|
26881
27125
|
};
|
|
26882
27126
|
}
|
|
26883
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
|
+
|
|
26884
27154
|
// src/modals/CheckoutModal/SelectAsset.tsx
|
|
26885
27155
|
var ASSET_ITEM_HEIGHT = 52;
|
|
26886
27156
|
var VISIBLE_ITEMS_COUNT = 5;
|
|
@@ -26928,7 +27198,8 @@ function useEnrichedAccountHoldings({
|
|
|
26928
27198
|
const { isAllowed, isLoading } = useAllowedAssets();
|
|
26929
27199
|
const { walletAddress } = useGeneralWallet();
|
|
26930
27200
|
const minTransferLimits = useMinTransferLimits();
|
|
26931
|
-
const
|
|
27201
|
+
const { isLoading: isLighterLoading, lighterNativeNeeded } = useLighterNativeFlowNeeded(apiKey, checkoutConfig);
|
|
27202
|
+
const enrichedAccountHoldings = useMemo44(() => {
|
|
26932
27203
|
if (!checkoutConfig) {
|
|
26933
27204
|
return [];
|
|
26934
27205
|
}
|
|
@@ -26940,7 +27211,6 @@ function useEnrichedAccountHoldings({
|
|
|
26940
27211
|
minUsdRequired = minUsd;
|
|
26941
27212
|
}
|
|
26942
27213
|
const usableForCheckout = isAssetUsableToPayForCheckout({
|
|
26943
|
-
apiKey,
|
|
26944
27214
|
config: checkoutConfig,
|
|
26945
27215
|
targetTokenAddress: targetAssetInfo.tokenAddress,
|
|
26946
27216
|
targetChainId: targetAssetInfo.tokenChainId,
|
|
@@ -26954,12 +27224,12 @@ function useEnrichedAccountHoldings({
|
|
|
26954
27224
|
asset.pickedChainId,
|
|
26955
27225
|
asset.tokenAddress
|
|
26956
27226
|
),
|
|
27227
|
+
isLighterNative: !!lighterNativeNeeded,
|
|
26957
27228
|
t
|
|
26958
27229
|
});
|
|
26959
27230
|
return { asset, usableForCheckout };
|
|
26960
27231
|
});
|
|
26961
27232
|
}, [
|
|
26962
|
-
apiKey,
|
|
26963
27233
|
accountHoldings,
|
|
26964
27234
|
checkoutConfig,
|
|
26965
27235
|
isAllowed,
|
|
@@ -26967,9 +27237,10 @@ function useEnrichedAccountHoldings({
|
|
|
26967
27237
|
walletAddress,
|
|
26968
27238
|
targetAssetInfo,
|
|
26969
27239
|
minTransferLimits,
|
|
27240
|
+
lighterNativeNeeded,
|
|
26970
27241
|
t
|
|
26971
27242
|
]);
|
|
26972
|
-
return { enrichedAccountHoldings, isLoading };
|
|
27243
|
+
return { enrichedAccountHoldings, isLoading: isLoading || isLighterLoading };
|
|
26973
27244
|
}
|
|
26974
27245
|
function useAssetOptions({
|
|
26975
27246
|
enrichedAccountHoldings,
|
|
@@ -26979,7 +27250,8 @@ function useAssetOptions({
|
|
|
26979
27250
|
}) {
|
|
26980
27251
|
const { apiKey } = useFunkitConfig();
|
|
26981
27252
|
const { t } = useFunkitTranslation();
|
|
26982
|
-
const
|
|
27253
|
+
const { findPath } = useDynamicRoutes();
|
|
27254
|
+
const assetOptions = useMemo44(() => {
|
|
26983
27255
|
return enrichedAccountHoldings.filter(
|
|
26984
27256
|
({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
|
|
26985
27257
|
).map(({ asset, usableForCheckout }) => {
|
|
@@ -27001,7 +27273,12 @@ function useAssetOptions({
|
|
|
27001
27273
|
badgeText = reason;
|
|
27002
27274
|
} else if (!isKnown) {
|
|
27003
27275
|
badgeText = t("badge.unknown");
|
|
27004
|
-
} else if (isTreatedAsNativeToken(
|
|
27276
|
+
} else if (isTreatedAsNativeToken(
|
|
27277
|
+
apiKey,
|
|
27278
|
+
asset,
|
|
27279
|
+
dynamicTargetAssetCandidates,
|
|
27280
|
+
findPath
|
|
27281
|
+
)) {
|
|
27005
27282
|
badgeText = "Native";
|
|
27006
27283
|
if (showsNativeTokensOnTop(apiKey)) {
|
|
27007
27284
|
priority = 1e3;
|
|
@@ -27030,7 +27307,8 @@ function useAssetOptions({
|
|
|
27030
27307
|
enrichedAccountHoldings,
|
|
27031
27308
|
chainId,
|
|
27032
27309
|
userSelectedTargetAsset,
|
|
27033
|
-
dynamicTargetAssetCandidates
|
|
27310
|
+
dynamicTargetAssetCandidates,
|
|
27311
|
+
findPath
|
|
27034
27312
|
]);
|
|
27035
27313
|
return assetOptions;
|
|
27036
27314
|
}
|
|
@@ -27076,7 +27354,19 @@ function AccountSelectAsset({
|
|
|
27076
27354
|
const { t } = useFunkitTranslation();
|
|
27077
27355
|
const [selectedChainId, setSelectedChainId] = useState57();
|
|
27078
27356
|
const { apiKey, textCustomizations, uiCustomizations } = useFunkitConfig();
|
|
27079
|
-
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();
|
|
27080
27370
|
const { setSelectedBrokerageAsset } = useFunkitBrokerageContext();
|
|
27081
27371
|
const [explicitlySelectedChainTokenSymbol, setSelectedChainTokenSymbol] = useState57("");
|
|
27082
27372
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
@@ -27099,6 +27389,37 @@ function AccountSelectAsset({
|
|
|
27099
27389
|
});
|
|
27100
27390
|
const showTargetAssetSelection = isTargetAssetSelectable && uiCustomizations.selectAssetScreen.showTargetAssetSelection;
|
|
27101
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
|
+
}
|
|
27102
27423
|
if (!isTargetAssetSelectable) {
|
|
27103
27424
|
return;
|
|
27104
27425
|
}
|
|
@@ -27145,7 +27466,7 @@ function AccountSelectAsset({
|
|
|
27145
27466
|
handleTargetAssetUpdate(tokenItem);
|
|
27146
27467
|
onFinish();
|
|
27147
27468
|
});
|
|
27148
|
-
const selectedChainTokenSymbol =
|
|
27469
|
+
const selectedChainTokenSymbol = useMemo44(() => {
|
|
27149
27470
|
if (explicitlySelectedChainTokenSymbol) {
|
|
27150
27471
|
const assetExists = assetOptions.find(
|
|
27151
27472
|
({ asset }) => asset.chainSymbolKey === explicitlySelectedChainTokenSymbol
|
|
@@ -27429,10 +27750,17 @@ function SelectAsset({
|
|
|
27429
27750
|
}
|
|
27430
27751
|
));
|
|
27431
27752
|
}
|
|
27432
|
-
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
|
+
}
|
|
27433
27761
|
if (isEtherealCustomer(apiKey)) {
|
|
27434
27762
|
if (isTokenEquivalent5({
|
|
27435
|
-
firstTokenChainId:
|
|
27763
|
+
firstTokenChainId: mainnet11.id.toString(),
|
|
27436
27764
|
firstTokenAddress: "0x90d2af7d622ca3141efa4d8f1f24d86e5974cc8f",
|
|
27437
27765
|
// eUSDe (Ethereum)
|
|
27438
27766
|
secondTokenChainId: asset.pickedChainId,
|
|
@@ -27858,7 +28186,7 @@ function SourceChange({
|
|
|
27858
28186
|
|
|
27859
28187
|
// src/modals/CheckoutModal/TransferToken/TransferToken.tsx
|
|
27860
28188
|
import { motion as motion13, useAnimationControls as useAnimationControls3 } from "motion/react";
|
|
27861
|
-
import React196, { useRef as
|
|
28189
|
+
import React196, { useRef as useRef26, useState as useState62 } from "react";
|
|
27862
28190
|
import { createPortal as createPortal20 } from "react-dom";
|
|
27863
28191
|
|
|
27864
28192
|
// src/components/CopyAddress/CopyInputDisplayedAddress.tsx
|
|
@@ -27975,12 +28303,12 @@ function CopyInputDisplayedAddress(props) {
|
|
|
27975
28303
|
}
|
|
27976
28304
|
|
|
27977
28305
|
// src/components/FunInfoBanner/ChainInfoBanners.tsx
|
|
27978
|
-
import { FlagKey as
|
|
28306
|
+
import { FlagKey as FlagKey20 } from "@funkit/utils";
|
|
27979
28307
|
import React186 from "react";
|
|
27980
28308
|
var ChainInfoBanners = ({
|
|
27981
28309
|
chainId
|
|
27982
28310
|
}) => {
|
|
27983
|
-
const chainInfoBanners = useFlag(
|
|
28311
|
+
const chainInfoBanners = useFlag(FlagKey20.ChainInfoBanners);
|
|
27984
28312
|
const chainInfoBannersData = useSafeJSONParse(chainInfoBanners) ?? {};
|
|
27985
28313
|
try {
|
|
27986
28314
|
const chainBanners = chainInfoBannersData[chainId] ?? [];
|
|
@@ -28002,7 +28330,7 @@ var ChainInfoBanners = ({
|
|
|
28002
28330
|
|
|
28003
28331
|
// src/components/QRCode/QRCode.tsx
|
|
28004
28332
|
import QRCodeUtil from "qrcode";
|
|
28005
|
-
import React187, { useMemo as
|
|
28333
|
+
import React187, { useMemo as useMemo45 } from "react";
|
|
28006
28334
|
var generateMatrix = (value, errorCorrectionLevel) => {
|
|
28007
28335
|
const { data } = QRCodeUtil.create(value, { errorCorrectionLevel }).modules;
|
|
28008
28336
|
const sqrt = Math.sqrt(data.length);
|
|
@@ -28030,7 +28358,7 @@ function QRCode({
|
|
|
28030
28358
|
}) {
|
|
28031
28359
|
const { activeTheme } = useActiveTheme();
|
|
28032
28360
|
const size = sizeProp - Number.parseInt(outsidePadding, 10) * 2;
|
|
28033
|
-
const dots =
|
|
28361
|
+
const dots = useMemo45(() => {
|
|
28034
28362
|
const dots2 = [];
|
|
28035
28363
|
const matrix = generateMatrix(uri, ecl);
|
|
28036
28364
|
const cellSize = size / matrix.length;
|
|
@@ -28596,7 +28924,7 @@ function TransferToken({
|
|
|
28596
28924
|
const { checkoutItem } = useCheckoutContext();
|
|
28597
28925
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
28598
28926
|
const { transferToken } = modalState;
|
|
28599
|
-
const disclaimerTextWrapperRef =
|
|
28927
|
+
const disclaimerTextWrapperRef = useRef26(null);
|
|
28600
28928
|
const { transferInit } = useCheckoutTransferInit();
|
|
28601
28929
|
const {
|
|
28602
28930
|
assets,
|
|
@@ -29264,7 +29592,7 @@ var FiatAccountDetail = {
|
|
|
29264
29592
|
|
|
29265
29593
|
// src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
|
|
29266
29594
|
import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
|
|
29267
|
-
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";
|
|
29268
29596
|
function useIframeListener(listeners) {
|
|
29269
29597
|
const handleMessage = useCallback43(
|
|
29270
29598
|
(event) => {
|
|
@@ -29318,7 +29646,7 @@ function KycIframe({
|
|
|
29318
29646
|
const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
|
|
29319
29647
|
const { data: kycLink, isLoading: isLinkLoading } = useLoadKycLink(modalState);
|
|
29320
29648
|
const [iframeLoading, setIframeLoading] = useState64(true);
|
|
29321
|
-
const listeners =
|
|
29649
|
+
const listeners = useMemo46(
|
|
29322
29650
|
() => ({
|
|
29323
29651
|
load: () => {
|
|
29324
29652
|
logger.info("KYC iframe loaded");
|
|
@@ -29535,7 +29863,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
|
|
|
29535
29863
|
);
|
|
29536
29864
|
const { animation, animate } = useAnimatedNavigation(void 0);
|
|
29537
29865
|
const [stateHistory, setHistory] = useState65([]);
|
|
29538
|
-
const prevStep =
|
|
29866
|
+
const prevStep = useRef27(null);
|
|
29539
29867
|
const hasHistoryEntry = stateHistory.length > 1;
|
|
29540
29868
|
const onNext = useCallback44(
|
|
29541
29869
|
(payload) => {
|
|
@@ -29673,9 +30001,9 @@ function FunCheckoutModalHeightAnimationWrapper({
|
|
|
29673
30001
|
children,
|
|
29674
30002
|
checkoutStep
|
|
29675
30003
|
}) {
|
|
29676
|
-
const containerRef =
|
|
29677
|
-
const animationFrameRef =
|
|
29678
|
-
const resizeObserverRef =
|
|
30004
|
+
const containerRef = useRef28(null);
|
|
30005
|
+
const animationFrameRef = useRef28(null);
|
|
30006
|
+
const resizeObserverRef = useRef28(null);
|
|
29679
30007
|
const [height, setHeight] = useState66("auto");
|
|
29680
30008
|
useEffect51(() => {
|
|
29681
30009
|
if (containerRef.current) {
|
|
@@ -29735,7 +30063,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
|
|
|
29735
30063
|
import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
|
|
29736
30064
|
import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
|
|
29737
30065
|
import clsx24 from "clsx";
|
|
29738
|
-
import React213, { useEffect as useEffect52, useMemo as
|
|
30066
|
+
import React213, { useEffect as useEffect52, useMemo as useMemo47, useRef as useRef29, useState as useState68 } from "react";
|
|
29739
30067
|
import { Virtuoso } from "react-virtuoso";
|
|
29740
30068
|
import { useAccount as useAccount7 } from "wagmi";
|
|
29741
30069
|
|
|
@@ -30269,8 +30597,8 @@ function Home({
|
|
|
30269
30597
|
}) {
|
|
30270
30598
|
const { t } = useFunkitTranslation();
|
|
30271
30599
|
const [selectedView, setSelectedView] = useState68(defaultHomeTab);
|
|
30272
|
-
const checkoutsListRef =
|
|
30273
|
-
const virtuosoParentRef =
|
|
30600
|
+
const checkoutsListRef = useRef29(null);
|
|
30601
|
+
const virtuosoParentRef = useRef29(null);
|
|
30274
30602
|
const account = useAccount7();
|
|
30275
30603
|
useCheckoutHistoryListener();
|
|
30276
30604
|
const { userInfo, handleLogout } = useGeneralWallet();
|
|
@@ -30282,7 +30610,7 @@ function Home({
|
|
|
30282
30610
|
const virtuosoDiv = virtuosoParentRef.current?.firstChild;
|
|
30283
30611
|
virtuosoDiv?.classList.add(animateVirtuosoInClass);
|
|
30284
30612
|
}, []);
|
|
30285
|
-
const AssetsList =
|
|
30613
|
+
const AssetsList = useMemo47(() => {
|
|
30286
30614
|
if (walletAssets && !Object.keys(walletAssets).length) {
|
|
30287
30615
|
return /* @__PURE__ */ React213.createElement(EmptyTabAlert, null);
|
|
30288
30616
|
}
|
|
@@ -30309,7 +30637,7 @@ function Home({
|
|
|
30309
30637
|
}
|
|
30310
30638
|
));
|
|
30311
30639
|
}, [walletAssets]);
|
|
30312
|
-
const CheckoutsList =
|
|
30640
|
+
const CheckoutsList = useMemo47(() => {
|
|
30313
30641
|
if (checkoutHistoryList.length === 0 && isCheckoutHistoryInited) {
|
|
30314
30642
|
return /* @__PURE__ */ React213.createElement(EmptyTabAlert, null);
|
|
30315
30643
|
}
|
|
@@ -31029,10 +31357,10 @@ function ChainModal({ onClose, open }) {
|
|
|
31029
31357
|
// src/modals/CheckoutModal/FunCheckoutModal.tsx
|
|
31030
31358
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST3 } from "@funkit/chains";
|
|
31031
31359
|
import { LogLevel, initializeRelayClient } from "@funkit/fun-relay";
|
|
31032
|
-
import React231, { useRef as
|
|
31360
|
+
import React231, { useRef as useRef30 } from "react";
|
|
31033
31361
|
|
|
31034
31362
|
// src/components/FunConnectOptions/FunConnectOptions.tsx
|
|
31035
|
-
import React229, { useCallback as useCallback47, useMemo as
|
|
31363
|
+
import React229, { useCallback as useCallback47, useMemo as useMemo48, useState as useState72 } from "react";
|
|
31036
31364
|
|
|
31037
31365
|
// src/components/FunConnectOptions/FunConnectResultStep.tsx
|
|
31038
31366
|
import React224, { useEffect as useEffect53 } from "react";
|
|
@@ -31492,7 +31820,7 @@ function FunConnectOptions({
|
|
|
31492
31820
|
}
|
|
31493
31821
|
}
|
|
31494
31822
|
};
|
|
31495
|
-
const stepComponent =
|
|
31823
|
+
const stepComponent = useMemo48(() => {
|
|
31496
31824
|
switch (step) {
|
|
31497
31825
|
case 0 /* SIGNIN_PRIMARY */:
|
|
31498
31826
|
return /* @__PURE__ */ React229.createElement(
|
|
@@ -31636,7 +31964,7 @@ function FunCheckoutModalInner({
|
|
|
31636
31964
|
depositAddress
|
|
31637
31965
|
});
|
|
31638
31966
|
};
|
|
31639
|
-
const animationCallbackRef =
|
|
31967
|
+
const animationCallbackRef = useRef30(null);
|
|
31640
31968
|
const handleAnimationCompleteRegister = (cb) => {
|
|
31641
31969
|
animationCallbackRef.current = cb;
|
|
31642
31970
|
};
|
|
@@ -31657,12 +31985,18 @@ function FunCheckoutModalInner({
|
|
|
31657
31985
|
const isInitialStep = modalState.step === "loading_account" /* LOADING_ACCOUNT */;
|
|
31658
31986
|
const isBlocked = isUserGeoblocked || modalState.isBlocked;
|
|
31659
31987
|
const hasBack = hasHistoryEntry && !disableBack;
|
|
31988
|
+
const { apiKey } = useFunkitConfig();
|
|
31989
|
+
const lighterNativeDeposit = isLighterNativeFlow(
|
|
31990
|
+
apiKey,
|
|
31991
|
+
checkoutItem.initSettings.config
|
|
31992
|
+
);
|
|
31660
31993
|
const checkoutConfig = hideModalTitleMetaIfTrue(
|
|
31661
31994
|
checkoutItem.initSettings.config,
|
|
31662
31995
|
HIDE_MODAL_META_TITLE_AND_DIVIDER.includes(modalState.step)
|
|
31663
31996
|
);
|
|
31664
31997
|
const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
|
|
31665
31998
|
depositAddress: checkoutItem.depositAddress ?? void 0,
|
|
31999
|
+
isLighterNativeDeposit: lighterNativeDeposit,
|
|
31666
32000
|
isActiveCheckout: true,
|
|
31667
32001
|
isCheckoutDetailView: modalState.step === "checkout_complete" /* CHECKOUT_COMPLETE */,
|
|
31668
32002
|
paddingTop: 0,
|
|
@@ -31881,7 +32215,7 @@ function ModalProvider({ children }) {
|
|
|
31881
32215
|
return /* @__PURE__ */ React233.createElement(
|
|
31882
32216
|
ModalContext.Provider,
|
|
31883
32217
|
{
|
|
31884
|
-
value:
|
|
32218
|
+
value: useMemo49(
|
|
31885
32219
|
() => ({
|
|
31886
32220
|
accountModalOpen,
|
|
31887
32221
|
accountModalTab,
|
|
@@ -32014,7 +32348,8 @@ var FunkitCheckoutContext = createContext17({
|
|
|
32014
32348
|
setCompletedTimestamp: () => void 0,
|
|
32015
32349
|
withdrawalItem: null,
|
|
32016
32350
|
initNewWithdrawal: () => "",
|
|
32017
|
-
updateWithdrawalSourceAssetAmount: () => void 0
|
|
32351
|
+
updateWithdrawalSourceAssetAmount: () => void 0,
|
|
32352
|
+
applyDynamicRouting: () => void 0
|
|
32018
32353
|
});
|
|
32019
32354
|
function assertCheckoutItem(checkoutItem) {
|
|
32020
32355
|
if (!checkoutItem) {
|
|
@@ -32031,6 +32366,9 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32031
32366
|
const { logEvent } = useTrack();
|
|
32032
32367
|
const [activeCheckout, setActiveCheckout] = useState74(null);
|
|
32033
32368
|
const [activeWithdrawal, setActiveWithdrawal] = useState74(null);
|
|
32369
|
+
const udaParams = useUDAParams(
|
|
32370
|
+
activeCheckout?.initSettings.config?.dynamicRoutingId
|
|
32371
|
+
);
|
|
32034
32372
|
const [checkoutsProgress, setCheckoutsProgress] = useState74({});
|
|
32035
32373
|
const getCheckoutProgress = useCallback49(
|
|
32036
32374
|
(checkoutId) => {
|
|
@@ -32278,7 +32616,8 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32278
32616
|
config: checkoutItem.initSettings.config,
|
|
32279
32617
|
walletAddress
|
|
32280
32618
|
}),
|
|
32281
|
-
apiKey: funkitConfig.apiKey
|
|
32619
|
+
apiKey: funkitConfig.apiKey,
|
|
32620
|
+
udaParams
|
|
32282
32621
|
});
|
|
32283
32622
|
if (!queryParams) {
|
|
32284
32623
|
const missingQueryParamsError = new Error(
|
|
@@ -32324,7 +32663,8 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32324
32663
|
updateActiveCheckout,
|
|
32325
32664
|
walletAddress,
|
|
32326
32665
|
getWithdrawalDirectExecution,
|
|
32327
|
-
logEvent
|
|
32666
|
+
logEvent,
|
|
32667
|
+
udaParams
|
|
32328
32668
|
]
|
|
32329
32669
|
);
|
|
32330
32670
|
const startRegularCheckout = useCallback49(
|
|
@@ -32469,6 +32809,27 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32469
32809
|
});
|
|
32470
32810
|
}
|
|
32471
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
|
+
);
|
|
32472
32833
|
const updateModalTitleMeta = useEffectEvent((newMeta) => {
|
|
32473
32834
|
updateActiveCheckout((checkoutItem) => {
|
|
32474
32835
|
const config = checkoutItem.initSettings.config;
|
|
@@ -32525,7 +32886,8 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
32525
32886
|
withdrawalItem: activeWithdrawal,
|
|
32526
32887
|
initNewWithdrawal,
|
|
32527
32888
|
updateCustomRecipient,
|
|
32528
|
-
updateWithdrawalSourceAssetAmount
|
|
32889
|
+
updateWithdrawalSourceAssetAmount,
|
|
32890
|
+
applyDynamicRouting
|
|
32529
32891
|
};
|
|
32530
32892
|
return /* @__PURE__ */ React234.createElement(FunkitCheckoutContext.Provider, { value: contextValue }, children);
|
|
32531
32893
|
}
|
|
@@ -32544,7 +32906,7 @@ function useFunkitCheckout(props) {
|
|
|
32544
32906
|
const { openWithdrawalModal } = useWithdrawalModal();
|
|
32545
32907
|
const { connectModalOpen, openConnectModal } = useConnectModal();
|
|
32546
32908
|
const { isUserLoggedIn } = useGeneralWallet();
|
|
32547
|
-
const isCheckoutActivated = useFlag(
|
|
32909
|
+
const isCheckoutActivated = useFlag(FlagKey21.IsCheckoutActivated);
|
|
32548
32910
|
const onErrorWrapper = useCallback49(
|
|
32549
32911
|
(payload) => {
|
|
32550
32912
|
logger.warn(payload.message, payload);
|
|
@@ -32715,21 +33077,6 @@ async function validateCheckoutConfig(config) {
|
|
|
32715
33077
|
message: "Invalid generateActionsParams configuration: Must be a function."
|
|
32716
33078
|
};
|
|
32717
33079
|
}
|
|
32718
|
-
if (parsedTargetAssetAmount === 0) {
|
|
32719
|
-
return {
|
|
32720
|
-
isValid: false,
|
|
32721
|
-
message: "Invalid targetAssetAmount configuration: Has to be a number greater than 0"
|
|
32722
|
-
};
|
|
32723
|
-
}
|
|
32724
|
-
const initialActionsParams = await config.generateActionsParams(
|
|
32725
|
-
parsedTargetAssetAmount
|
|
32726
|
-
);
|
|
32727
|
-
if (!Array.isArray(initialActionsParams)) {
|
|
32728
|
-
return {
|
|
32729
|
-
isValid: false,
|
|
32730
|
-
message: "Invalid generateActionsParams configuration: Must return an array. If no actions are required, please specify an empty array ([]) instead."
|
|
32731
|
-
};
|
|
32732
|
-
}
|
|
32733
33080
|
}
|
|
32734
33081
|
if (!config.targetAssetTicker) {
|
|
32735
33082
|
return {
|
|
@@ -32892,16 +33239,6 @@ async function getTokenDecimals(wagmiConfig, chainId, tokenAddress) {
|
|
|
32892
33239
|
}
|
|
32893
33240
|
}
|
|
32894
33241
|
}
|
|
32895
|
-
async function getLighterTickSize(wagmiConfig, chainId, assetIndex) {
|
|
32896
|
-
const assetConfig = await readContract(wagmiConfig, {
|
|
32897
|
-
address: LIGHTER_DEPOSIT_ADDRESS,
|
|
32898
|
-
abi: LIGHTER_DEPOSIT_ABI,
|
|
32899
|
-
functionName: "assetConfigs",
|
|
32900
|
-
args: [assetIndex],
|
|
32901
|
-
chainId: Number.parseInt(chainId)
|
|
32902
|
-
});
|
|
32903
|
-
return assetConfig[3];
|
|
32904
|
-
}
|
|
32905
33242
|
async function evaluateCheckoutGenerateActionsParams(config) {
|
|
32906
33243
|
if (!config.generateActionsParams) {
|
|
32907
33244
|
return [];
|
|
@@ -32988,12 +33325,12 @@ function computeDisplayDestinationToken(checkoutConfig, displayAssetAmount) {
|
|
|
32988
33325
|
}
|
|
32989
33326
|
|
|
32990
33327
|
// src/domains/feeEstimate.ts
|
|
32991
|
-
import { mainnet as
|
|
33328
|
+
import { mainnet as mainnet12 } from "viem/chains";
|
|
32992
33329
|
var L1_FEES_ESTIMATE = 1;
|
|
32993
33330
|
var L2_FEES_ESTIMATE = 1;
|
|
32994
33331
|
var BROKERAGE_FEES_ESTIMATE = 0;
|
|
32995
33332
|
var getBaseFeeUsdEstimate = (targetChainId, assetChainId) => {
|
|
32996
|
-
if (targetChainId !==
|
|
33333
|
+
if (targetChainId !== mainnet12.id.toString() && assetChainId !== mainnet12.id.toString()) {
|
|
32997
33334
|
return L2_FEES_ESTIMATE;
|
|
32998
33335
|
}
|
|
32999
33336
|
return L1_FEES_ESTIMATE;
|
|
@@ -33009,7 +33346,7 @@ var getFeesUsdEstimate = (targetChainId, assetChainId, paymentMethod) => {
|
|
|
33009
33346
|
var isStablecoin = (symbol) => STABLECOIN_SYMBOLS.find((s) => symbol.toLowerCase().includes(s.toLowerCase()));
|
|
33010
33347
|
function isPreferredChain(chainId, additionalChains = []) {
|
|
33011
33348
|
const chains = /* @__PURE__ */ new Set([
|
|
33012
|
-
|
|
33349
|
+
mainnet13.id,
|
|
33013
33350
|
polygon6.id,
|
|
33014
33351
|
base7.id,
|
|
33015
33352
|
arbitrum5.id,
|
|
@@ -33027,7 +33364,6 @@ function isNativeTokenAddress(address) {
|
|
|
33027
33364
|
}
|
|
33028
33365
|
var isPolygonEcosystemToken = (chainId, tokenAddress) => chainId === polygon6.id.toString() && tokenAddress === "0x0000000000000000000000000000000000001010";
|
|
33029
33366
|
var isAssetUsableToPayForCheckout = ({
|
|
33030
|
-
apiKey,
|
|
33031
33367
|
config,
|
|
33032
33368
|
payerAddress,
|
|
33033
33369
|
paymentMethod,
|
|
@@ -33038,6 +33374,7 @@ var isAssetUsableToPayForCheckout = ({
|
|
|
33038
33374
|
assetUsdAmount,
|
|
33039
33375
|
isAllowedForCheckout,
|
|
33040
33376
|
minUsdRequired,
|
|
33377
|
+
isLighterNative,
|
|
33041
33378
|
t
|
|
33042
33379
|
}) => {
|
|
33043
33380
|
const finalCheckoutRecipient = getCheckoutRecipient({
|
|
@@ -33054,6 +33391,9 @@ var isAssetUsableToPayForCheckout = ({
|
|
|
33054
33391
|
minUsdRequired ?? 0
|
|
33055
33392
|
);
|
|
33056
33393
|
const isSameAsPurchasingToken = (() => {
|
|
33394
|
+
if (isLighterNative) {
|
|
33395
|
+
return false;
|
|
33396
|
+
}
|
|
33057
33397
|
if (isCheckoutPostActionRequired(config)) {
|
|
33058
33398
|
const vaultToken = config.stakingToken;
|
|
33059
33399
|
return vaultToken && isTokenEquivalent7({
|
|
@@ -33093,12 +33433,11 @@ var isAssetUsableToPayForCheckout = ({
|
|
|
33093
33433
|
};
|
|
33094
33434
|
}
|
|
33095
33435
|
let isSupported = isAllowedForCheckout && FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO14[assetChainId]?.isCheckoutSupported;
|
|
33096
|
-
|
|
33097
|
-
if (isSupported && isLighterEth) {
|
|
33436
|
+
if (isSupported && isLighterNative) {
|
|
33098
33437
|
isSupported = isTokenEquivalent7({
|
|
33099
33438
|
firstTokenChainId: assetChainId,
|
|
33100
33439
|
firstTokenAddress: assetTokenAddress,
|
|
33101
|
-
secondTokenChainId:
|
|
33440
|
+
secondTokenChainId: mainnet13.id.toString(),
|
|
33102
33441
|
secondTokenAddress: NATIVE_TOKEN
|
|
33103
33442
|
});
|
|
33104
33443
|
}
|
|
@@ -33233,7 +33572,7 @@ var useWalletAssets = ({
|
|
|
33233
33572
|
} = {}) => {
|
|
33234
33573
|
const { address, isConnected } = useAccount11();
|
|
33235
33574
|
const { apiKey } = useFunkitConfig();
|
|
33236
|
-
const { data, isLoading, isFetching } =
|
|
33575
|
+
const { data, isLoading, isFetching } = useQuery22({
|
|
33237
33576
|
queryKey: ["getWalletAssets", address, apiKey],
|
|
33238
33577
|
queryFn: ({ queryKey: [_, addr, key] }) => fetchAssets(addr, key),
|
|
33239
33578
|
placeholderData: keepPreviousData2,
|
|
@@ -34031,9 +34370,9 @@ function cssStringFromTheme(theme, options = {}) {
|
|
|
34031
34370
|
}
|
|
34032
34371
|
|
|
34033
34372
|
// src/hooks/useFunkitMaxCheckoutUsdInfo.ts
|
|
34034
|
-
import { FlagKey as
|
|
34373
|
+
import { FlagKey as FlagKey22, formatCurrencyAndStringify as formatCurrencyAndStringify16 } from "@funkit/utils";
|
|
34035
34374
|
var useFunkitMaxCheckoutUsdInfo = () => {
|
|
34036
|
-
const maxCheckoutUsd = Number(useFlag(
|
|
34375
|
+
const maxCheckoutUsd = Number(useFlag(FlagKey22.MaxCheckoutUsd));
|
|
34037
34376
|
const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify16(maxCheckoutUsd, {
|
|
34038
34377
|
decimalPrecisionForSuffix: 0,
|
|
34039
34378
|
minimumSignificantDigits: 0,
|
|
@@ -38195,7 +38534,7 @@ import React240, {
|
|
|
38195
38534
|
createContext as createContext18,
|
|
38196
38535
|
useContext as useContext18,
|
|
38197
38536
|
useEffect as useEffect59,
|
|
38198
|
-
useMemo as
|
|
38537
|
+
useMemo as useMemo50
|
|
38199
38538
|
} from "react";
|
|
38200
38539
|
import { WagmiProvider, useAccountEffect as useAccountEffect3 } from "wagmi";
|
|
38201
38540
|
|
|
@@ -38281,7 +38620,7 @@ var createThemeRootSelector = (id) => {
|
|
|
38281
38620
|
function FunkitProvider(props) {
|
|
38282
38621
|
validateFunkitProviderProps(props);
|
|
38283
38622
|
const initialChainId = getInitialChainIdFromFunkitProviderProps(props);
|
|
38284
|
-
const finalWagmiConfig =
|
|
38623
|
+
const finalWagmiConfig = useMemo50(() => {
|
|
38285
38624
|
if (!props.wagmiConfig || !initialChainId) {
|
|
38286
38625
|
return void 0;
|
|
38287
38626
|
}
|
|
@@ -38291,7 +38630,7 @@ function FunkitProvider(props) {
|
|
|
38291
38630
|
});
|
|
38292
38631
|
}, [initialChainId, props.wagmiConfig, props.funkitConfig.appName]);
|
|
38293
38632
|
const finalQueryClient = props.queryClient;
|
|
38294
|
-
const sdkVersion =
|
|
38633
|
+
const sdkVersion = useMemo50(() => getCurrentSdkVersion(), []);
|
|
38295
38634
|
useEffect59(() => {
|
|
38296
38635
|
logger.configure(props.funkitConfig.apiKey, !!props.debug, sdkVersion);
|
|
38297
38636
|
}, [props.funkitConfig.apiKey, props.debug, sdkVersion]);
|
|
@@ -38326,9 +38665,9 @@ function FunkitProviderInner({
|
|
|
38326
38665
|
useFingerprint();
|
|
38327
38666
|
useAccountEffect3({ onDisconnect: clearWalletConnectDeepLink });
|
|
38328
38667
|
const { activeTheme } = useActiveTheme();
|
|
38329
|
-
const selector =
|
|
38330
|
-
const themeRootProps =
|
|
38331
|
-
const themeStyles =
|
|
38668
|
+
const selector = useMemo50(() => createThemeRootSelector(id), [id]);
|
|
38669
|
+
const themeRootProps = useMemo50(() => createThemeRootProps2(id), [id]);
|
|
38670
|
+
const themeStyles = useMemo50(() => {
|
|
38332
38671
|
if (!activeTheme) {
|
|
38333
38672
|
return "";
|
|
38334
38673
|
}
|