@funkit/connect 5.5.6 → 5.5.7
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 +12 -0
- package/dist/domains/fees.d.ts +2 -0
- package/dist/hooks/useReceiveAmountLabel.d.ts +2 -2
- package/dist/index.js +273 -130
- package/dist/utils/flags/config.d.ts +5 -1
- package/dist/wallets/walletConnectors/index.js +48 -48
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
darkTheme
|
|
4
|
-
} from "./chunk-ICCAQZHZ.js";
|
|
5
2
|
import {
|
|
6
3
|
lightTheme
|
|
7
4
|
} from "./chunk-RN4I4Y57.js";
|
|
5
|
+
import {
|
|
6
|
+
darkTheme
|
|
7
|
+
} from "./chunk-ICCAQZHZ.js";
|
|
8
8
|
import {
|
|
9
9
|
systemFontStack
|
|
10
10
|
} from "./chunk-R2UFCJL7.js";
|
|
@@ -509,7 +509,7 @@ import React256, {
|
|
|
509
509
|
useCallback as useCallback47,
|
|
510
510
|
useContext as useContext18,
|
|
511
511
|
useEffect as useEffect48,
|
|
512
|
-
useMemo as
|
|
512
|
+
useMemo as useMemo45,
|
|
513
513
|
useState as useState67
|
|
514
514
|
} from "react";
|
|
515
515
|
import { useConfig as useConfig5, useConnect as useConnect2, useDisconnect as useDisconnect2 } from "wagmi";
|
|
@@ -1031,7 +1031,7 @@ import React255, {
|
|
|
1031
1031
|
useCallback as useCallback46,
|
|
1032
1032
|
useContext as useContext17,
|
|
1033
1033
|
useEffect as useEffect47,
|
|
1034
|
-
useMemo as
|
|
1034
|
+
useMemo as useMemo44,
|
|
1035
1035
|
useState as useState66
|
|
1036
1036
|
} from "react";
|
|
1037
1037
|
import { useAccount as useAccount9, useAccountEffect as useAccountEffect2, useConfig as useConfig4 } from "wagmi";
|
|
@@ -3603,8 +3603,10 @@ var flagConfig = {
|
|
|
3603
3603
|
"0x2A8Bd916E85d98d8175258De99fc0ddbcC102eF6",
|
|
3604
3604
|
"0xda6b07Eb94f699F511a943e9bFC12B64B7fe3486",
|
|
3605
3605
|
"0x0D6e43CA32545B3dc2FE6f93AafBD7e640F548d4",
|
|
3606
|
-
"0x236c60C57a8B9ca563Fb0dA5199FDdCB686d91E8"
|
|
3606
|
+
"0x236c60C57a8B9ca563Fb0dA5199FDdCB686d91E8",
|
|
3607
3607
|
// greg
|
|
3608
|
+
"0x4a1457fa2845bAfE8D3909cA3C5ac6107be312Dd"
|
|
3609
|
+
// william PM
|
|
3608
3610
|
]
|
|
3609
3611
|
}
|
|
3610
3612
|
],
|
|
@@ -3623,7 +3625,13 @@ var flagConfig = {
|
|
|
3623
3625
|
values: [POLYMARKET_API_KEY2]
|
|
3624
3626
|
}
|
|
3625
3627
|
],
|
|
3626
|
-
if_any: [
|
|
3628
|
+
if_any: [
|
|
3629
|
+
{
|
|
3630
|
+
key: "userId",
|
|
3631
|
+
type: "pctRollout",
|
|
3632
|
+
pct: 0
|
|
3633
|
+
}
|
|
3634
|
+
],
|
|
3627
3635
|
value: true
|
|
3628
3636
|
},
|
|
3629
3637
|
{
|
|
@@ -7022,7 +7030,7 @@ function getCheckoutCompletionTime(checkout) {
|
|
|
7022
7030
|
}
|
|
7023
7031
|
|
|
7024
7032
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
|
|
7025
|
-
import React221, { useCallback as useCallback40, useMemo as
|
|
7033
|
+
import React221, { useCallback as useCallback40, useMemo as useMemo38, useState as useState57 } from "react";
|
|
7026
7034
|
import { createPortal as createPortal14 } from "react-dom";
|
|
7027
7035
|
|
|
7028
7036
|
// src/components/HelpAlert/HelpAlert.tsx
|
|
@@ -8513,6 +8521,8 @@ var isCountryBlocked = (blockedList, userIpInfo) => {
|
|
|
8513
8521
|
function useFunkitUserIp() {
|
|
8514
8522
|
const { moonpayApiKey } = useContext14(FunkitMoonpayContext);
|
|
8515
8523
|
const { getFlag, isLoading: isLoadingFlags } = useFlags();
|
|
8524
|
+
const { apiKey } = useFunkitConfig();
|
|
8525
|
+
const isPolymarket = isPolymarketCustomer(apiKey);
|
|
8516
8526
|
const { data: userIpInfo, isLoading: isLoadingGeoCheck } = useQuery6({
|
|
8517
8527
|
queryKey: ["getUserIpInfo"],
|
|
8518
8528
|
queryFn: async () => {
|
|
@@ -8535,7 +8545,7 @@ function useFunkitUserIp() {
|
|
|
8535
8545
|
refetchOnWindowFocus: false
|
|
8536
8546
|
});
|
|
8537
8547
|
const isUserGeoblocked = useMemo9(() => {
|
|
8538
|
-
if (isLoadingFlags || isLoadingGeoCheck) {
|
|
8548
|
+
if (isLoadingFlags || isLoadingGeoCheck || isPolymarket) {
|
|
8539
8549
|
return false;
|
|
8540
8550
|
}
|
|
8541
8551
|
if (!userIpInfo) {
|
|
@@ -8543,7 +8553,7 @@ function useFunkitUserIp() {
|
|
|
8543
8553
|
}
|
|
8544
8554
|
const blockedList = getFlag(FlagKey7.BlockedCountries, ALL_MATCH).split(",");
|
|
8545
8555
|
return isCountryBlocked(blockedList, userIpInfo);
|
|
8546
|
-
}, [getFlag, isLoadingFlags, isLoadingGeoCheck, userIpInfo]);
|
|
8556
|
+
}, [getFlag, isLoadingFlags, isLoadingGeoCheck, userIpInfo, isPolymarket]);
|
|
8547
8557
|
return {
|
|
8548
8558
|
isLoadingGeoCheck: isLoadingFlags || isLoadingGeoCheck,
|
|
8549
8559
|
isUserGeoblocked,
|
|
@@ -10695,7 +10705,7 @@ var BankIconActive = ({ size = 20 }) => {
|
|
|
10695
10705
|
|
|
10696
10706
|
// src/components/FunConnectOptions/FunSignInStep.tsx
|
|
10697
10707
|
import { groupBy, isMobile as isMobile8, isSafari as isSafari3, redirectInMobile as redirectInMobile2 } from "@funkit/utils";
|
|
10698
|
-
import React214, { Fragment as Fragment3, useCallback as useCallback39, useMemo as
|
|
10708
|
+
import React214, { Fragment as Fragment3, useCallback as useCallback39, useMemo as useMemo36, useState as useState55 } from "react";
|
|
10699
10709
|
|
|
10700
10710
|
// src/providers/walletConnectDeepLink.ts
|
|
10701
10711
|
var storageKey2 = "WALLETCONNECT_DEEPLINK_CHOICE";
|
|
@@ -11292,7 +11302,7 @@ var SocialsIcon = () => {
|
|
|
11292
11302
|
};
|
|
11293
11303
|
|
|
11294
11304
|
// src/components/FunConnectOptions/FunConnectOptions.tsx
|
|
11295
|
-
import React213, { useCallback as useCallback38, useMemo as
|
|
11305
|
+
import React213, { useCallback as useCallback38, useMemo as useMemo35, useState as useState54 } from "react";
|
|
11296
11306
|
|
|
11297
11307
|
// src/hooks/useAnimatedNavigation.ts
|
|
11298
11308
|
import { useCallback as useCallback16, useState as useState17 } from "react";
|
|
@@ -11537,6 +11547,7 @@ async function evaluateAccountWalletFees({
|
|
|
11537
11547
|
loginType,
|
|
11538
11548
|
apiKey
|
|
11539
11549
|
}) {
|
|
11550
|
+
const relayQuote = baseQuote.metadata?.relayQuote;
|
|
11540
11551
|
const nativeCurrencySymbol = FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO13[selectedSourceAssetInfo.chainId]?.nativeCurrency.symbol || "";
|
|
11541
11552
|
const walletCheckoutFees = {
|
|
11542
11553
|
paymentMethod: "balance" /* ACCOUNT_BALANCE */,
|
|
@@ -11545,7 +11556,8 @@ async function evaluateAccountWalletFees({
|
|
|
11545
11556
|
eoaWalletFeeUsd: 0,
|
|
11546
11557
|
totalFeesUsd: baseQuote.estFeesUsd,
|
|
11547
11558
|
totalFeesTokenWithoutGas: Number(baseQuote.estFeesFromAmount),
|
|
11548
|
-
nativeCurrencySymbol
|
|
11559
|
+
nativeCurrencySymbol,
|
|
11560
|
+
relayQuote
|
|
11549
11561
|
};
|
|
11550
11562
|
if (loginType !== "web3" /* Web3 */ || selectedSourceAssetInfo.chainId === zkSync.id.toString()) {
|
|
11551
11563
|
return { fees: walletCheckoutFees };
|
|
@@ -13613,7 +13625,7 @@ function CheckoutHelp({
|
|
|
13613
13625
|
}
|
|
13614
13626
|
|
|
13615
13627
|
// src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
|
|
13616
|
-
import React132, { useEffect as useEffect25, useMemo as
|
|
13628
|
+
import React132, { useEffect as useEffect25, useMemo as useMemo21, useState as useState32 } from "react";
|
|
13617
13629
|
import { createPortal as createPortal5 } from "react-dom";
|
|
13618
13630
|
|
|
13619
13631
|
// src/providers/UserPresenceContext.tsx
|
|
@@ -13650,7 +13662,7 @@ var UserPresenceProvider = ({ children }) => {
|
|
|
13650
13662
|
var useUserPresence = () => useContext16(UserPresenceContext);
|
|
13651
13663
|
|
|
13652
13664
|
// src/modals/CheckoutModal/ConfirmationStep/ConfirmationStep.tsx
|
|
13653
|
-
import { DirectExecutionType as
|
|
13665
|
+
import { DirectExecutionType as DirectExecutionType2 } from "@funkit/api-base";
|
|
13654
13666
|
import { FlagKey as FlagKey17 } from "@funkit/utils";
|
|
13655
13667
|
|
|
13656
13668
|
// src/components/FunInfoBanner/FunInfoBanner.tsx
|
|
@@ -13945,7 +13957,7 @@ import {
|
|
|
13945
13957
|
} from "@funkit/utils";
|
|
13946
13958
|
import NumberFlow from "@number-flow/react";
|
|
13947
13959
|
import { motion as motion3 } from "motion/react";
|
|
13948
|
-
import React122, { useMemo as
|
|
13960
|
+
import React122, { useMemo as useMemo16 } from "react";
|
|
13949
13961
|
|
|
13950
13962
|
// src/consts/design.ts
|
|
13951
13963
|
var mapFontLineHeightToNumberFlowHeight = {
|
|
@@ -13955,23 +13967,15 @@ var mapFontLineHeightToNumberFlowHeight = {
|
|
|
13955
13967
|
};
|
|
13956
13968
|
|
|
13957
13969
|
// src/hooks/useReceiveAmountLabel.ts
|
|
13958
|
-
|
|
13959
|
-
import { useMemo as useMemo15 } from "react";
|
|
13960
|
-
function useReceiveAmountLabel({
|
|
13961
|
-
directExecutionType,
|
|
13962
|
-
isSameToken
|
|
13963
|
-
}) {
|
|
13970
|
+
function useReceiveAmountLabel(_) {
|
|
13964
13971
|
const { textCustomizations } = useFunkitConfig();
|
|
13965
|
-
return
|
|
13966
|
-
const showAtLeast = directExecutionType === DirectExecutionType2.RELAY && !isSameToken;
|
|
13967
|
-
return `${textCustomizations.confirmationScreen.receiveAmountLabel}${showAtLeast ? " at least" : ""}`;
|
|
13968
|
-
}, [textCustomizations, directExecutionType, isSameToken]);
|
|
13972
|
+
return textCustomizations.confirmationScreen.receiveAmountLabel;
|
|
13969
13973
|
}
|
|
13970
13974
|
|
|
13971
13975
|
// src/components/FunAssetAvatar/FunAssetAvatar.tsx
|
|
13972
13976
|
import { isNotNullish as isNotNullish7 } from "@funkit/utils";
|
|
13973
13977
|
import clsx12 from "clsx";
|
|
13974
|
-
import React121, { useMemo as
|
|
13978
|
+
import React121, { useMemo as useMemo15 } from "react";
|
|
13975
13979
|
|
|
13976
13980
|
// src/components/FunAssetAvatar/FunAssetAvatar.css.ts
|
|
13977
13981
|
var chainContainerStyle = "uwrdc22 _1rsrm2f18 _1rsrm2fa _1rsrm2f4 _1rsrm2f41";
|
|
@@ -13991,7 +13995,7 @@ function FunAssetAvatar({
|
|
|
13991
13995
|
largeChainIcon = false
|
|
13992
13996
|
}) {
|
|
13993
13997
|
const chainMetadata = chainMetadataById[Number.parseInt((chainId || "").toString())] || null;
|
|
13994
|
-
const finalAssetSrc =
|
|
13998
|
+
const finalAssetSrc = useMemo15(() => {
|
|
13995
13999
|
const normalizedTicker = assetTicker?.toUpperCase() || "";
|
|
13996
14000
|
const defaultSrc = ASSET_LOGO_SRCS[normalizedTicker];
|
|
13997
14001
|
if (prioritizeDefaults) {
|
|
@@ -14089,13 +14093,13 @@ function PaymentAmountSummary({
|
|
|
14089
14093
|
})
|
|
14090
14094
|
});
|
|
14091
14095
|
const sourceTokenAmount = quote?.finalPaymentTokenAmount ? Number.parseFloat(quote.finalPaymentTokenAmount) : void 0;
|
|
14092
|
-
const paymentTokenUsdAmount =
|
|
14096
|
+
const paymentTokenUsdAmount = useMemo16(() => {
|
|
14093
14097
|
if (!quote) return void 0;
|
|
14094
14098
|
return formatCurrencyAndStringify3(
|
|
14095
14099
|
quote.baseQuote.estSubtotalUsd + Number.parseFloat(quote.finalPaymentFeeUsd) - Number.parseFloat(quote.finalSpreadUsd)
|
|
14096
14100
|
);
|
|
14097
14101
|
}, [quote]);
|
|
14098
|
-
const receiveTokenUsdAmount =
|
|
14102
|
+
const receiveTokenUsdAmount = useMemo16(() => {
|
|
14099
14103
|
if (!quote) return void 0;
|
|
14100
14104
|
return formatCurrencyAndStringify3(
|
|
14101
14105
|
Number.parseFloat(quote.finalTotalUsd) - Number.parseFloat(quote.finalPaymentFeeUsd) - Number.parseFloat(quote.finalSpreadUsd)
|
|
@@ -14215,9 +14219,10 @@ function PaymentAmountSummaryItem({
|
|
|
14215
14219
|
import {
|
|
14216
14220
|
formatCurrencyAndStringify as formatCurrencyAndStringify4,
|
|
14217
14221
|
formatDynamicFeeUsd,
|
|
14222
|
+
formatPercent,
|
|
14218
14223
|
noop as noop4
|
|
14219
14224
|
} from "@funkit/utils";
|
|
14220
|
-
import React124, { useMemo as
|
|
14225
|
+
import React124, { useMemo as useMemo17, useState as useState23 } from "react";
|
|
14221
14226
|
import clsx13 from "clsx";
|
|
14222
14227
|
import { motion as motion4, useAnimationControls } from "motion/react";
|
|
14223
14228
|
|
|
@@ -14254,6 +14259,106 @@ var NO_DATA = {
|
|
|
14254
14259
|
collapsed: null,
|
|
14255
14260
|
expanded: []
|
|
14256
14261
|
};
|
|
14262
|
+
function renderRelayFee(relayQuote) {
|
|
14263
|
+
const { details, fees } = relayQuote;
|
|
14264
|
+
const gasUsd = Number.parseFloat(fees?.gas?.amountUsd || "0");
|
|
14265
|
+
const totalImpactStr = (details?.totalImpact?.percent || "0").replace("-", "");
|
|
14266
|
+
const totalImpact = Number.parseFloat(totalImpactStr);
|
|
14267
|
+
const swapImpactStr = (details?.swapImpact?.percent || "0").replace("-", "");
|
|
14268
|
+
const swapImpact = Number.parseFloat(swapImpactStr);
|
|
14269
|
+
const relayGas = Number.parseFloat(fees?.relayer?.amountUsd || "0");
|
|
14270
|
+
const totalUsd = Number.parseFloat(details?.currencyIn?.amountUsd || "0");
|
|
14271
|
+
const appFeePercent = Number.parseFloat(fees?.app?.amountUsd || "0") / totalUsd * 100;
|
|
14272
|
+
const maxSlippage = Number.parseFloat(
|
|
14273
|
+
details?.slippageTolerance?.destination?.percent || "0"
|
|
14274
|
+
);
|
|
14275
|
+
return {
|
|
14276
|
+
collapsed: {
|
|
14277
|
+
value: formatCurrencyAndStringify4(gasUsd),
|
|
14278
|
+
valueIcon: /* @__PURE__ */ React124.createElement(GasIcon, null)
|
|
14279
|
+
},
|
|
14280
|
+
expanded: [
|
|
14281
|
+
// {
|
|
14282
|
+
// label: 'Rate',
|
|
14283
|
+
// value: `1.000 ${details?.currencyIn?.currency?.symbol} = ${ratePretty} ${details?.currencyOut?.currency?.symbol}`,
|
|
14284
|
+
// tooltipText:
|
|
14285
|
+
// 'The conversion rate between ETH on Arbitrum and USDCe on Polygon.',
|
|
14286
|
+
// },
|
|
14287
|
+
{
|
|
14288
|
+
label: "Network cost",
|
|
14289
|
+
valueIcon: /* @__PURE__ */ React124.createElement(GasIcon, null),
|
|
14290
|
+
value: formatCurrencyAndStringify4(gasUsd),
|
|
14291
|
+
tooltipText: /* @__PURE__ */ React124.createElement(React124.Fragment, null, "Estimated gas cost for completing your transaction, including the network fee and routing gas fees. The final cost may vary based on network conditions.", /* @__PURE__ */ React124.createElement("br", null), /* @__PURE__ */ React124.createElement(
|
|
14292
|
+
FunLinkButton,
|
|
14293
|
+
{
|
|
14294
|
+
href: "https://docs.polymarket.com/docs/price-impact",
|
|
14295
|
+
text: "Learn more"
|
|
14296
|
+
}
|
|
14297
|
+
))
|
|
14298
|
+
},
|
|
14299
|
+
{
|
|
14300
|
+
label: "Price impact",
|
|
14301
|
+
value: formatPercent(totalImpact),
|
|
14302
|
+
tooltipText: /* @__PURE__ */ React124.createElement(Box, { display: "flex", flexDirection: "column", gap: "4" }, /* @__PURE__ */ React124.createElement(Box, { display: "flex", flexDirection: "column", gap: "2" }, /* @__PURE__ */ React124.createElement(
|
|
14303
|
+
Box,
|
|
14304
|
+
{
|
|
14305
|
+
alignItems: "center",
|
|
14306
|
+
display: "flex",
|
|
14307
|
+
justifyContent: "space-between"
|
|
14308
|
+
},
|
|
14309
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10", weight: "medium" }, "Total impact"),
|
|
14310
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10", weight: "medium" }, formatPercent(totalImpact))
|
|
14311
|
+
), /* @__PURE__ */ React124.createElement(
|
|
14312
|
+
Box,
|
|
14313
|
+
{
|
|
14314
|
+
alignItems: "center",
|
|
14315
|
+
display: "flex",
|
|
14316
|
+
justifyContent: "space-between"
|
|
14317
|
+
},
|
|
14318
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10" }, "Swap impact"),
|
|
14319
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10", weight: "medium" }, formatPercent(swapImpact))
|
|
14320
|
+
), /* @__PURE__ */ React124.createElement(
|
|
14321
|
+
Box,
|
|
14322
|
+
{
|
|
14323
|
+
alignItems: "center",
|
|
14324
|
+
display: "flex",
|
|
14325
|
+
justifyContent: "space-between"
|
|
14326
|
+
},
|
|
14327
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10" }, "Fill gas (Ethereum)"),
|
|
14328
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10", weight: "medium" }, formatCurrencyAndStringify4(relayGas))
|
|
14329
|
+
), /* @__PURE__ */ React124.createElement(
|
|
14330
|
+
Box,
|
|
14331
|
+
{
|
|
14332
|
+
alignItems: "center",
|
|
14333
|
+
display: "flex",
|
|
14334
|
+
justifyContent: "space-between"
|
|
14335
|
+
},
|
|
14336
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10" }, "Fun.xyz fee"),
|
|
14337
|
+
/* @__PURE__ */ React124.createElement(Text, { size: "10", weight: "medium" }, formatPercent(appFeePercent))
|
|
14338
|
+
)), /* @__PURE__ */ React124.createElement(FunDivider, null), /* @__PURE__ */ React124.createElement(Box, null, "Price impact is the difference between the expected and executed price.", /* @__PURE__ */ React124.createElement("br", null), /* @__PURE__ */ React124.createElement("br", null), "Final cost may vary based on network conditions.", " ", /* @__PURE__ */ React124.createElement(
|
|
14339
|
+
FunLinkButton,
|
|
14340
|
+
{
|
|
14341
|
+
inline: true,
|
|
14342
|
+
href: "https://docs.polymarket.com/docs/price-impact",
|
|
14343
|
+
text: "Learn more"
|
|
14344
|
+
}
|
|
14345
|
+
)))
|
|
14346
|
+
},
|
|
14347
|
+
{
|
|
14348
|
+
label: "Max slippage",
|
|
14349
|
+
value: formatPercent(maxSlippage),
|
|
14350
|
+
tooltipText: /* @__PURE__ */ React124.createElement(React124.Fragment, null, "Slippage occurs due to price changes during trade execution. Slippage limits are adjusted based on your asset to ensure a reliable, timely execution.", /* @__PURE__ */ React124.createElement("br", null), /* @__PURE__ */ React124.createElement("br", null), "The slippage is set as low as possible. If it is required to be higher than 1.50% during execution, Fun.xyz will cover the difference.", " ", /* @__PURE__ */ React124.createElement(
|
|
14351
|
+
FunLinkButton,
|
|
14352
|
+
{
|
|
14353
|
+
inline: true,
|
|
14354
|
+
href: "https://docs.polymarket.com/docs/price-impact",
|
|
14355
|
+
text: "Learn more"
|
|
14356
|
+
}
|
|
14357
|
+
))
|
|
14358
|
+
}
|
|
14359
|
+
]
|
|
14360
|
+
};
|
|
14361
|
+
}
|
|
14257
14362
|
var extractFeeItems = (fees, totalUsd, isDydx) => {
|
|
14258
14363
|
const marketMakerFee = {
|
|
14259
14364
|
label: "Market maker gas costs",
|
|
@@ -14268,6 +14373,9 @@ var extractFeeItems = (fees, totalUsd, isDydx) => {
|
|
|
14268
14373
|
}),
|
|
14269
14374
|
tooltipText: "Charged to cover the costs of providing on-chain liquidity."
|
|
14270
14375
|
};
|
|
14376
|
+
if (fees.paymentMethod === "balance" /* ACCOUNT_BALANCE */ && fees.relayQuote) {
|
|
14377
|
+
return renderRelayFee(fees.relayQuote);
|
|
14378
|
+
}
|
|
14271
14379
|
if (fees.paymentMethod === "balance" /* ACCOUNT_BALANCE */) {
|
|
14272
14380
|
const { eoaWalletFeeUsd, marketMakerFeeUsd } = fees;
|
|
14273
14381
|
const fillGasCost = formatDynamicFeeUsd(eoaWalletFeeUsd, totalUsd, {
|
|
@@ -14352,7 +14460,7 @@ function PaymentFeesSummary({
|
|
|
14352
14460
|
}
|
|
14353
14461
|
};
|
|
14354
14462
|
const isDydx = isDydxCustomer(apiKey);
|
|
14355
|
-
const { collapsed: collapsedItem, expanded: expandedItems } =
|
|
14463
|
+
const { collapsed: collapsedItem, expanded: expandedItems } = useMemo17(() => {
|
|
14356
14464
|
if (!quote) return NO_DATA;
|
|
14357
14465
|
const fees = quote.finalFeesBreakdown;
|
|
14358
14466
|
const totalUsd = Number(quote.finalTotalUsd);
|
|
@@ -14570,7 +14678,7 @@ function CheckoutPrimaryInfo({
|
|
|
14570
14678
|
}
|
|
14571
14679
|
|
|
14572
14680
|
// src/modals/CheckoutModal/ConfirmationStep/DisclaimerText.tsx
|
|
14573
|
-
import React128, { useMemo as
|
|
14681
|
+
import React128, { useMemo as useMemo18 } from "react";
|
|
14574
14682
|
|
|
14575
14683
|
// src/utils/customer.ts
|
|
14576
14684
|
function isKatanaEarnFlow({
|
|
@@ -14625,7 +14733,7 @@ var DisclaimerText = ({
|
|
|
14625
14733
|
), ", and the ", /* @__PURE__ */ React128.createElement(FunLinkButton, { href: "https://morpho.org/", inline: true, text: "terms" }), " applicable to third-party Morpho vaults", ".") : /* @__PURE__ */ React128.createElement(React128.Fragment, null, isVertex && vertexText ? `${vertexText} ` : showCardDisclaimer && `${cardDisclaimer} `, "By clicking on ", continueText, ", you agree to our", " ", /* @__PURE__ */ React128.createElement(FunLinkButton, { href: FUN_TERMS_URL, inline: true, text: "terms" }), ".");
|
|
14626
14734
|
};
|
|
14627
14735
|
function useCardDisclaimer(checkoutItem, finalConvertedAssetName) {
|
|
14628
|
-
const cardDisclaimer =
|
|
14736
|
+
const cardDisclaimer = useMemo18(() => {
|
|
14629
14737
|
if (!checkoutItem || !finalConvertedAssetName) {
|
|
14630
14738
|
return null;
|
|
14631
14739
|
}
|
|
@@ -14707,10 +14815,10 @@ function useAutoClearState(initialValue = null) {
|
|
|
14707
14815
|
|
|
14708
14816
|
// src/hooks/useIsBlacklisted.ts
|
|
14709
14817
|
import { FlagKey as FlagKey15 } from "@funkit/utils";
|
|
14710
|
-
import { useMemo as
|
|
14818
|
+
import { useMemo as useMemo19 } from "react";
|
|
14711
14819
|
var useIsBlacklisted = (walletAddress, customRecipient) => {
|
|
14712
14820
|
const flagStr = useFlag(FlagKey15.AddressBlacklist);
|
|
14713
|
-
const blacklist =
|
|
14821
|
+
const blacklist = useMemo19(
|
|
14714
14822
|
() => safeJSONParse(flagStr)?.map((addr) => addr.toLowerCase()) || [],
|
|
14715
14823
|
[flagStr]
|
|
14716
14824
|
);
|
|
@@ -15530,7 +15638,7 @@ function usePostCheckout({
|
|
|
15530
15638
|
}
|
|
15531
15639
|
|
|
15532
15640
|
// src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
|
|
15533
|
-
import { useCallback as useCallback25, useEffect as useEffect24, useMemo as
|
|
15641
|
+
import { useCallback as useCallback25, useEffect as useEffect24, useMemo as useMemo20, useRef as useRef10, useState as useState31 } from "react";
|
|
15534
15642
|
|
|
15535
15643
|
// src/hooks/useCountdown.tsx
|
|
15536
15644
|
import React131 from "react";
|
|
@@ -15799,7 +15907,7 @@ function useQuoteRefresh({
|
|
|
15799
15907
|
},
|
|
15800
15908
|
[isOnHold, restartCountdown, setCheckoutQuote, triggerAssetConfirm]
|
|
15801
15909
|
);
|
|
15802
|
-
const quoteError =
|
|
15910
|
+
const quoteError = useMemo20(() => {
|
|
15803
15911
|
if (quoteErrorMessage && !isQuoting) {
|
|
15804
15912
|
return {
|
|
15805
15913
|
message: quoteErrorMessage,
|
|
@@ -15932,10 +16040,10 @@ function ConfirmationStep({
|
|
|
15932
16040
|
// Block updates to the current quote during confirmation, post-checkout, and if its a direct execution
|
|
15933
16041
|
useQuoteRefresh({
|
|
15934
16042
|
isOnHold: isInitialQuoting || isContinuing || isAway,
|
|
15935
|
-
refreshIntervalSeconds: directExecutionType ===
|
|
16043
|
+
refreshIntervalSeconds: directExecutionType === DirectExecutionType2.RELAY ? RELAY_ESTIMATE_REFRESH_INTERVAL_SEC : DEFAULT_ESTIMATE_REFRESH_INTERVAL_SEC
|
|
15936
16044
|
})
|
|
15937
16045
|
);
|
|
15938
|
-
const error =
|
|
16046
|
+
const error = useMemo21(() => {
|
|
15939
16047
|
if (!isInitialQuoting && moonpayAmountCheck?.isInvalid) {
|
|
15940
16048
|
return {
|
|
15941
16049
|
message: moonpayAmountCheck.message,
|
|
@@ -15950,7 +16058,7 @@ function ConfirmationStep({
|
|
|
15950
16058
|
quoteError,
|
|
15951
16059
|
isInitialQuoting
|
|
15952
16060
|
]);
|
|
15953
|
-
const stepMessage =
|
|
16061
|
+
const stepMessage = useMemo21(() => {
|
|
15954
16062
|
if (initialQuoteStep) return initialQuoteStep;
|
|
15955
16063
|
if (postCheckoutStepMessage) return postCheckoutStepMessage;
|
|
15956
16064
|
if (confirmationStepMessage) return confirmationStepMessage;
|
|
@@ -16388,13 +16496,13 @@ var useMeldDefaultCurrency = (paymentMethod) => {
|
|
|
16388
16496
|
|
|
16389
16497
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoaded.tsx
|
|
16390
16498
|
import {
|
|
16391
|
-
FlagKey as
|
|
16499
|
+
FlagKey as FlagKey21,
|
|
16392
16500
|
formatCryptoAndStringify as formatCryptoAndStringify4,
|
|
16393
16501
|
formatCurrencyAndStringify as formatCurrencyAndStringify9,
|
|
16394
16502
|
isTokenEquivalent as isTokenEquivalent6,
|
|
16395
16503
|
round as round3
|
|
16396
16504
|
} from "@funkit/utils";
|
|
16397
|
-
import React150, { useMemo as
|
|
16505
|
+
import React150, { useMemo as useMemo24 } from "react";
|
|
16398
16506
|
|
|
16399
16507
|
// src/components/CurrencySelector/CurrencySelector.tsx
|
|
16400
16508
|
import React139 from "react";
|
|
@@ -16647,6 +16755,7 @@ var MeldProviderLabel = ({
|
|
|
16647
16755
|
};
|
|
16648
16756
|
|
|
16649
16757
|
// src/components/SourcePaymentMethodItem/SourcePaymentMethodItem.tsx
|
|
16758
|
+
import { FlagKey as FlagKey19 } from "@funkit/utils";
|
|
16650
16759
|
import clsx14 from "clsx";
|
|
16651
16760
|
import { useAnimate } from "motion/react";
|
|
16652
16761
|
import React144 from "react";
|
|
@@ -17225,6 +17334,40 @@ var SourcePaymentMethodItem = ({
|
|
|
17225
17334
|
);
|
|
17226
17335
|
};
|
|
17227
17336
|
const backdropColor = themeVars.colors.offBackground;
|
|
17337
|
+
const icons = [
|
|
17338
|
+
{
|
|
17339
|
+
paymentMethod: "balance" /* ACCOUNT_BALANCE */,
|
|
17340
|
+
icon: /* @__PURE__ */ React144.createElement(MetamaskPillIcon, { key: "metamask", backdropColor })
|
|
17341
|
+
},
|
|
17342
|
+
{
|
|
17343
|
+
paymentMethod: "brokerage" /* BROKERAGE */,
|
|
17344
|
+
icon: /* @__PURE__ */ React144.createElement(BinancePillIcon, { key: "binance", backdropColor })
|
|
17345
|
+
},
|
|
17346
|
+
{
|
|
17347
|
+
paymentMethod: "card" /* CARD */,
|
|
17348
|
+
icon: /* @__PURE__ */ React144.createElement(VisaPillIcon, { key: "visa", backdropColor })
|
|
17349
|
+
},
|
|
17350
|
+
{
|
|
17351
|
+
paymentMethod: "brokerage" /* BROKERAGE */,
|
|
17352
|
+
icon: /* @__PURE__ */ React144.createElement(CoinbasePillIcon, { key: "coinbase", backdropColor })
|
|
17353
|
+
},
|
|
17354
|
+
{
|
|
17355
|
+
paymentMethod: "balance" /* ACCOUNT_BALANCE */,
|
|
17356
|
+
icon: /* @__PURE__ */ React144.createElement(RainbowPillIcon, { key: "rainbow", backdropColor })
|
|
17357
|
+
},
|
|
17358
|
+
{
|
|
17359
|
+
paymentMethod: "card" /* CARD */,
|
|
17360
|
+
icon: /* @__PURE__ */ React144.createElement(MasterCardPillIcon, { key: "mastercard", backdropColor })
|
|
17361
|
+
}
|
|
17362
|
+
];
|
|
17363
|
+
const isCardEnabled = useFlag(FlagKey19.EnableCard);
|
|
17364
|
+
const isBrokerageEnabled = useFlag(FlagKey19.EnableBrokerage);
|
|
17365
|
+
const usableAlternativeIcons = icons.filter(({ paymentMethod }) => {
|
|
17366
|
+
if (paymentMethod === type || paymentMethod === "card" /* CARD */ && !isCardEnabled || paymentMethod === "brokerage" /* BROKERAGE */ && !isBrokerageEnabled) {
|
|
17367
|
+
return false;
|
|
17368
|
+
}
|
|
17369
|
+
return true;
|
|
17370
|
+
});
|
|
17228
17371
|
return /* @__PURE__ */ React144.createElement(
|
|
17229
17372
|
Box,
|
|
17230
17373
|
{
|
|
@@ -17279,7 +17422,7 @@ var SourcePaymentMethodItem = ({
|
|
|
17279
17422
|
className: "framer-spmi-animated-logos",
|
|
17280
17423
|
color: "primaryText"
|
|
17281
17424
|
},
|
|
17282
|
-
|
|
17425
|
+
usableAlternativeIcons.slice(0, 3).map(({ icon }) => icon)
|
|
17283
17426
|
)
|
|
17284
17427
|
), /* @__PURE__ */ React144.createElement(ArrowIcon, { direction: "right", size: 20 }))
|
|
17285
17428
|
)
|
|
@@ -17411,7 +17554,7 @@ var YouPayYouReceiveBottomBarLayoutWrapper = ({
|
|
|
17411
17554
|
import { getMeldFiatLimits } from "@funkit/api-base";
|
|
17412
17555
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify6 } from "@funkit/utils";
|
|
17413
17556
|
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
17414
|
-
import { useMemo as
|
|
17557
|
+
import { useMemo as useMemo22 } from "react";
|
|
17415
17558
|
|
|
17416
17559
|
// src/hooks/queries/useMeldCryptoCurrencyCode.ts
|
|
17417
17560
|
function useMeldCryptoCurrencyCode() {
|
|
@@ -17453,7 +17596,7 @@ var useMeldLimits = (fiatCurrency) => {
|
|
|
17453
17596
|
};
|
|
17454
17597
|
var useMeldLimitError = (amount, fiatCurrency) => {
|
|
17455
17598
|
const { data } = useMeldLimits(fiatCurrency);
|
|
17456
|
-
const meldLimit =
|
|
17599
|
+
const meldLimit = useMemo22(
|
|
17457
17600
|
() => data?.find((lim) => lim.currencyCode === fiatCurrency),
|
|
17458
17601
|
[data, fiatCurrency]
|
|
17459
17602
|
);
|
|
@@ -17742,20 +17885,20 @@ function InputAmountLayout({
|
|
|
17742
17885
|
}
|
|
17743
17886
|
|
|
17744
17887
|
// src/modals/CheckoutModal/InputAmount/QuickOptions.tsx
|
|
17745
|
-
import { FlagKey as
|
|
17746
|
-
import React149, { useMemo as
|
|
17888
|
+
import { FlagKey as FlagKey20, clamp, formatCurrencyAndStringify as formatCurrencyAndStringify7 } from "@funkit/utils";
|
|
17889
|
+
import React149, { useMemo as useMemo23 } from "react";
|
|
17747
17890
|
var USD_AMOUNT_OPTIONS_PCT = [25, 50, 75, 100];
|
|
17748
17891
|
var USD_AMOUNT_OPTIONS = [100, 500, 1e3];
|
|
17749
17892
|
function deduplicateArray(arr) {
|
|
17750
17893
|
return Array.from(new Set(arr));
|
|
17751
17894
|
}
|
|
17752
17895
|
function useFiatAmountOptions(percentMode, currency) {
|
|
17753
|
-
const currencyQuickOptionStr = useFlag(
|
|
17896
|
+
const currencyQuickOptionStr = useFlag(FlagKey20.MeldQuickOptions);
|
|
17754
17897
|
const currencyQuickOption = safeJSONParse(
|
|
17755
17898
|
currencyQuickOptionStr
|
|
17756
17899
|
);
|
|
17757
17900
|
const { data: limits, isPending } = useMeldLimits(currency);
|
|
17758
|
-
const meldLimit =
|
|
17901
|
+
const meldLimit = useMemo23(
|
|
17759
17902
|
() => limits?.find((lim) => lim.currencyCode === currency),
|
|
17760
17903
|
[limits, currency]
|
|
17761
17904
|
);
|
|
@@ -18083,12 +18226,12 @@ function InputAmountLoaded({
|
|
|
18083
18226
|
defaultFiatCurrency,
|
|
18084
18227
|
textCustomizations
|
|
18085
18228
|
}) {
|
|
18086
|
-
const maxCheckoutUsdString = useFlag(
|
|
18229
|
+
const maxCheckoutUsdString = useFlag(FlagKey21.MaxCheckoutUsd);
|
|
18087
18230
|
const { apiKey } = useFunkitConfig();
|
|
18088
18231
|
const { paymentMethod } = modalState.paymentMethodInfo;
|
|
18089
18232
|
const { quote: manuallySelectedQuote } = modalState;
|
|
18090
18233
|
const isCardCheckout = paymentMethod === "card" /* CARD */;
|
|
18091
|
-
const meldEnabled = useFlag(
|
|
18234
|
+
const meldEnabled = useFlag(FlagKey21.EnableMeldPayment) && isCardCheckout;
|
|
18092
18235
|
const { targetAssetTicker, targetAssetMinAmount } = checkoutConfig;
|
|
18093
18236
|
const { updateTargetAssetAmount } = useCheckoutContext();
|
|
18094
18237
|
const minUsd = targetAssetMinAmount && unitPrice ? Math.ceil(targetAssetMinAmount * unitPrice * 100) / 100 : void 0;
|
|
@@ -18126,7 +18269,7 @@ function InputAmountLoaded({
|
|
|
18126
18269
|
selectedQuote,
|
|
18127
18270
|
isSelectedQuoteUnavailable
|
|
18128
18271
|
} = useMeld(manuallySelectedQuote, usdAmount, fiatCurrency);
|
|
18129
|
-
const error =
|
|
18272
|
+
const error = useMemo24(() => {
|
|
18130
18273
|
if (isCardCheckout) {
|
|
18131
18274
|
if (isSelectedQuoteUnavailable) {
|
|
18132
18275
|
return {
|
|
@@ -18369,8 +18512,8 @@ function YouPayYouReceiveWrapper({
|
|
|
18369
18512
|
}
|
|
18370
18513
|
|
|
18371
18514
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoading.tsx
|
|
18372
|
-
import { FlagKey as
|
|
18373
|
-
import React151, { useMemo as
|
|
18515
|
+
import { FlagKey as FlagKey22, formatCryptoAndStringify as formatCryptoAndStringify5 } from "@funkit/utils";
|
|
18516
|
+
import React151, { useMemo as useMemo25 } from "react";
|
|
18374
18517
|
function InputAmountLoading({
|
|
18375
18518
|
modalState,
|
|
18376
18519
|
onBack,
|
|
@@ -18380,10 +18523,10 @@ function InputAmountLoading({
|
|
|
18380
18523
|
const { paymentMethodInfo } = modalState;
|
|
18381
18524
|
const { checkoutItem } = useCheckoutContext();
|
|
18382
18525
|
const { unlinkBrokerage } = useFunkitMesh();
|
|
18383
|
-
const meldEnabled = useFlag(
|
|
18526
|
+
const meldEnabled = useFlag(FlagKey22.EnableMeldPayment);
|
|
18384
18527
|
const targetAssetAmount = checkoutItem?.initSettings.config.targetAssetAmount;
|
|
18385
18528
|
const targetAssetTicker = checkoutItem?.initSettings.config.targetAssetTicker;
|
|
18386
|
-
const error =
|
|
18529
|
+
const error = useMemo25(() => {
|
|
18387
18530
|
if (sourceHoldingError) {
|
|
18388
18531
|
return {
|
|
18389
18532
|
message: /* @__PURE__ */ React151.createElement("div", null, "Unable to retrieve your account balance. Please try re-linking your account.", " ", paymentMethodInfo.paymentMethod === "brokerage" /* BROKERAGE */ && /* @__PURE__ */ React151.createElement(
|
|
@@ -18551,7 +18694,7 @@ function useAssetPrice({
|
|
|
18551
18694
|
}
|
|
18552
18695
|
|
|
18553
18696
|
// src/modals/CheckoutModal/InputAmount/useAvailableBalanceForCheckout.ts
|
|
18554
|
-
import { useMemo as
|
|
18697
|
+
import { useMemo as useMemo26 } from "react";
|
|
18555
18698
|
function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetChainId, assetSymbol) {
|
|
18556
18699
|
const {
|
|
18557
18700
|
data: meshAssetHoldings,
|
|
@@ -18569,7 +18712,7 @@ function useAvailableBalanceForCheckout(paymentMethodInfo, targetChainId, assetC
|
|
|
18569
18712
|
["token_transfer" /* TOKEN_TRANSFER */]: null,
|
|
18570
18713
|
["virtual_bank" /* VIRTUAL_BANK */]: null
|
|
18571
18714
|
}[paymentMethodInfo.paymentMethod];
|
|
18572
|
-
const holdingItem =
|
|
18715
|
+
const holdingItem = useMemo26(() => {
|
|
18573
18716
|
if (!assetSymbol || !holdings) {
|
|
18574
18717
|
return;
|
|
18575
18718
|
}
|
|
@@ -18679,7 +18822,7 @@ function InputAmount(props) {
|
|
|
18679
18822
|
import React155, { useEffect as useEffect29 } from "react";
|
|
18680
18823
|
|
|
18681
18824
|
// src/hooks/usePaymentSources.ts
|
|
18682
|
-
import { FlagKey as
|
|
18825
|
+
import { FlagKey as FlagKey23, isNotNullish as isNotNullish8 } from "@funkit/utils";
|
|
18683
18826
|
function useRemainingMeshExchangeConnections(selected) {
|
|
18684
18827
|
const { getActiveConnection } = useFunkitMesh();
|
|
18685
18828
|
const supportedExchanges = useSupportedExchanges();
|
|
@@ -18708,10 +18851,10 @@ function usePaymentMethodEnablement({
|
|
|
18708
18851
|
checkoutConfig
|
|
18709
18852
|
}) {
|
|
18710
18853
|
const { apiKey, uiCustomizations } = useFunkitConfig();
|
|
18711
|
-
const isTokenTransferFlagEnabled = useFlag(
|
|
18854
|
+
const isTokenTransferFlagEnabled = useFlag(FlagKey23.EnableTokenTransfer);
|
|
18712
18855
|
const isFiatFlagEnabled = useFiatEnabled();
|
|
18713
|
-
const isCardFlagEnabled = useFlag(
|
|
18714
|
-
const isBrokerageFlagEnabled = useFlag(
|
|
18856
|
+
const isCardFlagEnabled = useFlag(FlagKey23.EnableCard);
|
|
18857
|
+
const isBrokerageFlagEnabled = useFlag(FlagKey23.EnableBrokerage);
|
|
18715
18858
|
const isKatanaEarnFlowAction = isKatanaEarnFlow({ apiKey, checkoutConfig });
|
|
18716
18859
|
const isUsKatanaUser = useIsUsKatanaUser();
|
|
18717
18860
|
const isFiatEnabled = isFiatFlagEnabled && !isKatanaEarnFlowAction;
|
|
@@ -19070,7 +19213,7 @@ function LoadingAccount({
|
|
|
19070
19213
|
// src/modals/CheckoutModal/MeldCurrencySelect/MeldCurrencySelect.tsx
|
|
19071
19214
|
import { clamp as clamp2 } from "@funkit/utils";
|
|
19072
19215
|
import clsx15 from "clsx";
|
|
19073
|
-
import React159, { useMemo as
|
|
19216
|
+
import React159, { useMemo as useMemo27, useState as useState35 } from "react";
|
|
19074
19217
|
|
|
19075
19218
|
// src/components/FunNoResults/FunNoResults.tsx
|
|
19076
19219
|
import React158 from "react";
|
|
@@ -19260,7 +19403,7 @@ function MeldCurrencySelect({
|
|
|
19260
19403
|
const [selectedCurrency, setSelectedCurrency] = useState35(
|
|
19261
19404
|
defaultCurrency
|
|
19262
19405
|
);
|
|
19263
|
-
const filteredOptions =
|
|
19406
|
+
const filteredOptions = useMemo27(() => {
|
|
19264
19407
|
const newOptions = data?.filter(
|
|
19265
19408
|
({ name, currencyCode }) => currencyCode.toLowerCase().includes(query.toLowerCase()) || name.toLowerCase().includes(query.toLowerCase())
|
|
19266
19409
|
) ?? [];
|
|
@@ -19380,8 +19523,8 @@ import {
|
|
|
19380
19523
|
meshExecuteTransfer,
|
|
19381
19524
|
meshExecuteTransferProxy
|
|
19382
19525
|
} from "@funkit/api-base";
|
|
19383
|
-
import { ClientError as ClientError4, FlagKey as
|
|
19384
|
-
import React172, { useMemo as
|
|
19526
|
+
import { ClientError as ClientError4, FlagKey as FlagKey24, formatAddress as formatAddress4 } from "@funkit/utils";
|
|
19527
|
+
import React172, { useMemo as useMemo28, useState as useState38 } from "react";
|
|
19385
19528
|
import { createPortal as createPortal9 } from "react-dom";
|
|
19386
19529
|
|
|
19387
19530
|
// src/components/CopyAddress/CopyAddressButton.tsx
|
|
@@ -19878,7 +20021,7 @@ function MeshVerification({
|
|
|
19878
20021
|
const executionStatus = executionContent?.status;
|
|
19879
20022
|
const { checkoutItem } = useCheckoutContext();
|
|
19880
20023
|
const bottomSectionRef = useBottomSectionRef();
|
|
19881
|
-
const enableFrogProxyServer = useFlag(
|
|
20024
|
+
const enableFrogProxyServer = useFlag(FlagKey24.EnableFrogProxyServer);
|
|
19882
20025
|
const handleCompletion = useEffectEvent(async (finalOtpInput) => {
|
|
19883
20026
|
try {
|
|
19884
20027
|
setIsExecuting(true);
|
|
@@ -19961,7 +20104,7 @@ function MeshVerification({
|
|
|
19961
20104
|
return () => setScreen(0 /* INITIAL */);
|
|
19962
20105
|
});
|
|
19963
20106
|
const brokerName = getExchangeName(brokerType);
|
|
19964
|
-
const verificationTitle =
|
|
20107
|
+
const verificationTitle = useMemo28(() => {
|
|
19965
20108
|
switch (executionStatus) {
|
|
19966
20109
|
case MeshExecuteTransferStatus.secondMfaRequired:
|
|
19967
20110
|
return `Additional ${brokerName} 2FA required`;
|
|
@@ -19988,7 +20131,7 @@ function MeshVerification({
|
|
|
19988
20131
|
executionContent?.verificationSteps?.length,
|
|
19989
20132
|
isSecond2fa
|
|
19990
20133
|
]);
|
|
19991
|
-
const verificationDescription =
|
|
20134
|
+
const verificationDescription = useMemo28(() => {
|
|
19992
20135
|
switch (executionStatus) {
|
|
19993
20136
|
case MeshExecuteTransferStatus.secondMfaRequired:
|
|
19994
20137
|
return `Please enable at least two 2FA methods on your ${brokerName} account. Once enabled, you will have to reconnect your account.`;
|
|
@@ -20133,7 +20276,7 @@ var VerificationPopup = ({
|
|
|
20133
20276
|
};
|
|
20134
20277
|
|
|
20135
20278
|
// src/modals/CheckoutModal/MoonpaySetup.tsx
|
|
20136
|
-
import React174, { useCallback as useCallback31, useMemo as
|
|
20279
|
+
import React174, { useCallback as useCallback31, useMemo as useMemo30, useState as useState40 } from "react";
|
|
20137
20280
|
|
|
20138
20281
|
// src/components/FunPayments/FunPaymentMoonpayType.css.ts
|
|
20139
20282
|
var mpClass = "_1kmpeyf0";
|
|
@@ -20142,7 +20285,7 @@ var stretchStyle = "_1kmpeyf1";
|
|
|
20142
20285
|
// src/components/FunPayments/FunPaymentMoonpayType.tsx
|
|
20143
20286
|
import { getMoonpayUrlSignature } from "@funkit/api-base";
|
|
20144
20287
|
import { colorToHex } from "@funkit/utils";
|
|
20145
|
-
import React173, { Fragment as Fragment2, useEffect as useEffect33, useMemo as
|
|
20288
|
+
import React173, { Fragment as Fragment2, useEffect as useEffect33, useMemo as useMemo29, useState as useState39 } from "react";
|
|
20146
20289
|
var LazyMoonPayBuyWidget = (props) => {
|
|
20147
20290
|
const [MoonPayBuyWidget, setMoonPayBuyWidget] = useState39(null);
|
|
20148
20291
|
useEffect33(() => {
|
|
@@ -20173,7 +20316,7 @@ function FunPaymentMoonpayType({
|
|
|
20173
20316
|
const isSandboxMode = useIsFunkitSandboxMode();
|
|
20174
20317
|
const funkitConfig = useFunkitConfig();
|
|
20175
20318
|
const { userInfo } = useGeneralWallet();
|
|
20176
|
-
const currencyCode =
|
|
20319
|
+
const currencyCode = useMemo29(() => {
|
|
20177
20320
|
return generateMoonpayCurrencyCode(depositToken, depositTokenChainId);
|
|
20178
20321
|
}, [depositToken, depositTokenChainId]);
|
|
20179
20322
|
const depositTokenAmountStringFormatted = formatTokenAmountForMoonpay(
|
|
@@ -20196,7 +20339,7 @@ function FunPaymentMoonpayType({
|
|
|
20196
20339
|
});
|
|
20197
20340
|
return signature || "";
|
|
20198
20341
|
};
|
|
20199
|
-
const moonpayButtonColor =
|
|
20342
|
+
const moonpayButtonColor = useMemo29(() => {
|
|
20200
20343
|
const primaryButtonHex = colorToHex(activeTheme.colors.buttonPrimary);
|
|
20201
20344
|
if (["#FFF", "#FFFF", "#FFFFFF", "#FFFFFFFF"].includes(primaryButtonHex)) {
|
|
20202
20345
|
return void 0;
|
|
@@ -20251,7 +20394,7 @@ function MoonpaySetup({
|
|
|
20251
20394
|
depositAddress: paymentAddress
|
|
20252
20395
|
});
|
|
20253
20396
|
}, [onNext, paymentAddress]);
|
|
20254
|
-
const MoonpayWidget =
|
|
20397
|
+
const MoonpayWidget = useMemo30(() => {
|
|
20255
20398
|
return /* @__PURE__ */ React174.createElement(
|
|
20256
20399
|
FunPaymentMoonpayType,
|
|
20257
20400
|
{
|
|
@@ -20282,7 +20425,7 @@ function MoonpaySetup({
|
|
|
20282
20425
|
// src/modals/CheckoutModal/SelectAsset.tsx
|
|
20283
20426
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST2 } from "@funkit/chains";
|
|
20284
20427
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent7 } from "@funkit/utils";
|
|
20285
|
-
import React183, { useEffect as useEffect35, useMemo as
|
|
20428
|
+
import React183, { useEffect as useEffect35, useMemo as useMemo32, useState as useState42 } from "react";
|
|
20286
20429
|
import { createPortal as createPortal10 } from "react-dom";
|
|
20287
20430
|
|
|
20288
20431
|
// src/components/Dropdown/ChainDropdown.tsx
|
|
@@ -20291,7 +20434,7 @@ import React180 from "react";
|
|
|
20291
20434
|
// src/components/Dropdown/BaseDropdown.tsx
|
|
20292
20435
|
import { isMobile as isMobile6, noop as noop6 } from "@funkit/utils";
|
|
20293
20436
|
import { AnimatePresence as AnimatePresence4, motion as motion6 } from "motion/react";
|
|
20294
|
-
import React178, { useCallback as useCallback32, useMemo as
|
|
20437
|
+
import React178, { useCallback as useCallback32, useMemo as useMemo31, useState as useState41 } from "react";
|
|
20295
20438
|
|
|
20296
20439
|
// src/components/FunSelect/FunClickOutside.tsx
|
|
20297
20440
|
import React175 from "react";
|
|
@@ -20497,7 +20640,7 @@ function BaseDropdown({
|
|
|
20497
20640
|
const handleSearch = (event) => {
|
|
20498
20641
|
setSearchInput(event.target.value);
|
|
20499
20642
|
};
|
|
20500
|
-
const filteredOptions =
|
|
20643
|
+
const filteredOptions = useMemo31(
|
|
20501
20644
|
() => options.filter(
|
|
20502
20645
|
(singleOption) => singleOption.label.toLowerCase().includes(searchInput?.toLowerCase())
|
|
20503
20646
|
),
|
|
@@ -20906,13 +21049,13 @@ var ReceiveTokenDropdown = ({
|
|
|
20906
21049
|
|
|
20907
21050
|
// src/components/NewTokenDepositAlert/NewTokenDepositAlert.tsx
|
|
20908
21051
|
import React182 from "react";
|
|
20909
|
-
import { FlagKey as
|
|
21052
|
+
import { FlagKey as FlagKey25, safeParseJson as safeParseJson4 } from "@funkit/utils";
|
|
20910
21053
|
var NewTokenDepositAlert = ({
|
|
20911
21054
|
onClick
|
|
20912
21055
|
}) => {
|
|
20913
|
-
const alertJson = useFlag(
|
|
21056
|
+
const alertJson = useFlag(FlagKey25.NewTokenAssetSelectionBanner);
|
|
20914
21057
|
const alertData = safeParseJson4(alertJson);
|
|
20915
|
-
const isTokenTransferEnabled = useFlag(
|
|
21058
|
+
const isTokenTransferEnabled = useFlag(FlagKey25.EnableTokenTransfer);
|
|
20916
21059
|
if (!alertData || !isTokenTransferEnabled) return null;
|
|
20917
21060
|
return /* @__PURE__ */ React182.createElement(
|
|
20918
21061
|
FunAlert,
|
|
@@ -20980,7 +21123,7 @@ function useEnrichedAccountHoldings({
|
|
|
20980
21123
|
const { apiKey } = useFunkitConfig();
|
|
20981
21124
|
const { isAllowed, isLoading } = useAllowedAssets();
|
|
20982
21125
|
const { loginType, walletAddress } = useGeneralWallet();
|
|
20983
|
-
const enrichedAccountHoldings =
|
|
21126
|
+
const enrichedAccountHoldings = useMemo32(() => {
|
|
20984
21127
|
if (!checkoutConfig) return [];
|
|
20985
21128
|
return Object.values(accountHoldings).map((asset) => {
|
|
20986
21129
|
const usableForCheckout = isAssetUsableToPayForCheckout({
|
|
@@ -21022,7 +21165,7 @@ function useAssetOptions({
|
|
|
21022
21165
|
userSelectedTargetAsset,
|
|
21023
21166
|
chainId
|
|
21024
21167
|
}) {
|
|
21025
|
-
const assetOptions =
|
|
21168
|
+
const assetOptions = useMemo32(() => {
|
|
21026
21169
|
return enrichedAccountHoldings.filter(
|
|
21027
21170
|
({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
|
|
21028
21171
|
).map(({ asset, usableForCheckout }) => {
|
|
@@ -21093,7 +21236,7 @@ function MeshOrAccountSelectAsset({
|
|
|
21093
21236
|
targetAssetMinAmount: 0
|
|
21094
21237
|
};
|
|
21095
21238
|
const [selectedTargetAsset, setSelectedTargetAsset] = useState42(defaultTargetAsset);
|
|
21096
|
-
const defaultTokenSymbols =
|
|
21239
|
+
const defaultTokenSymbols = useMemo32(() => {
|
|
21097
21240
|
if (!checkoutConfig) {
|
|
21098
21241
|
return [];
|
|
21099
21242
|
}
|
|
@@ -21157,7 +21300,7 @@ function MeshOrAccountSelectAsset({
|
|
|
21157
21300
|
handleTargetAssetUpdate(tokenItem);
|
|
21158
21301
|
onFinish();
|
|
21159
21302
|
});
|
|
21160
|
-
const selectedChainTokenSymbol =
|
|
21303
|
+
const selectedChainTokenSymbol = useMemo32(() => {
|
|
21161
21304
|
if (explicitlySelectedChainTokenSymbol) {
|
|
21162
21305
|
const assetExists = assetOptions.find(
|
|
21163
21306
|
({ asset }) => asset.chainSymbolKey === explicitlySelectedChainTokenSymbol
|
|
@@ -21569,7 +21712,7 @@ function SelectBrokerage({
|
|
|
21569
21712
|
|
|
21570
21713
|
// src/modals/CheckoutModal/SourceChange/SourceChange.tsx
|
|
21571
21714
|
import { BridgeCustomerStatus as BridgeCustomerStatus6 } from "@funkit/api-base";
|
|
21572
|
-
import { FlagKey as
|
|
21715
|
+
import { FlagKey as FlagKey26 } from "@funkit/utils";
|
|
21573
21716
|
import React186, { useEffect as useEffect36, useState as useState45 } from "react";
|
|
21574
21717
|
import { createPortal as createPortal12 } from "react-dom";
|
|
21575
21718
|
|
|
@@ -21786,7 +21929,7 @@ function SourceChange({
|
|
|
21786
21929
|
const { data: fiatAccounts } = useVirtualFiatAccounts();
|
|
21787
21930
|
const matchingFiatAccount = useMatchingVirtualFiatAccount(fiatAccounts);
|
|
21788
21931
|
const { apiKey, textCustomizations } = useFunkitConfig();
|
|
21789
|
-
const enableMeldPayment = useFlag(
|
|
21932
|
+
const enableMeldPayment = useFlag(FlagKey26.EnableMeldPayment);
|
|
21790
21933
|
const hasAutoContinue = !isOstiumCustomer(apiKey);
|
|
21791
21934
|
useEffect36(() => {
|
|
21792
21935
|
if (!paymentMethodInfo) return;
|
|
@@ -21957,7 +22100,7 @@ function SourceChange({
|
|
|
21957
22100
|
}
|
|
21958
22101
|
|
|
21959
22102
|
// src/modals/CheckoutModal/TransferToken/TransferToken.tsx
|
|
21960
|
-
import { FlagKey as
|
|
22103
|
+
import { FlagKey as FlagKey29 } from "@funkit/utils";
|
|
21961
22104
|
import { motion as motion8, useAnimationControls as useAnimationControls3 } from "motion/react";
|
|
21962
22105
|
import React200, { useEffect as useEffect37, useRef as useRef15, useState as useState48 } from "react";
|
|
21963
22106
|
import { createPortal as createPortal13 } from "react-dom";
|
|
@@ -22019,13 +22162,13 @@ function CopyInputDisplayedAddress({
|
|
|
22019
22162
|
}
|
|
22020
22163
|
|
|
22021
22164
|
// src/components/Dropdown/TokenDropdown.tsx
|
|
22022
|
-
import { FlagKey as
|
|
22165
|
+
import { FlagKey as FlagKey27, safeParseJson as safeParseJson5 } from "@funkit/utils";
|
|
22023
22166
|
import React189, { useState as useState46 } from "react";
|
|
22024
22167
|
var TOKEN_ICON_SIZE2 = 16;
|
|
22025
22168
|
var useNewTokens = () => {
|
|
22026
|
-
const bannerJson = useFlag(
|
|
22169
|
+
const bannerJson = useFlag(FlagKey27.NewTokenAssetSelectionBanner);
|
|
22027
22170
|
const bannerData = safeParseJson5(bannerJson);
|
|
22028
|
-
const newBadgeTokensJson = useFlag(
|
|
22171
|
+
const newBadgeTokensJson = useFlag(FlagKey27.TokenTransferNewTokens);
|
|
22029
22172
|
const newBadgeData = safeParseJson5(newBadgeTokensJson);
|
|
22030
22173
|
const newTokens = newBadgeData && Object.values(newBadgeData).flat();
|
|
22031
22174
|
const newUniqueTokens = new Set(newTokens);
|
|
@@ -22141,7 +22284,7 @@ var LightningBoltIcon = ({ size = 16 }) => /* @__PURE__ */ React190.createElemen
|
|
|
22141
22284
|
|
|
22142
22285
|
// src/components/QRCode/QRCode.tsx
|
|
22143
22286
|
import QRCodeUtil from "qrcode";
|
|
22144
|
-
import React191, { useMemo as
|
|
22287
|
+
import React191, { useMemo as useMemo33 } from "react";
|
|
22145
22288
|
var generateMatrix = (value, errorCorrectionLevel) => {
|
|
22146
22289
|
const { data } = QRCodeUtil.create(value, { errorCorrectionLevel }).modules;
|
|
22147
22290
|
const sqrt = Math.sqrt(data.length);
|
|
@@ -22169,7 +22312,7 @@ function QRCode({
|
|
|
22169
22312
|
}) {
|
|
22170
22313
|
const { activeTheme } = useActiveTheme();
|
|
22171
22314
|
const size = sizeProp - Number.parseInt(outsidePadding, 10) * 2;
|
|
22172
|
-
const dots =
|
|
22315
|
+
const dots = useMemo33(() => {
|
|
22173
22316
|
const dots2 = [];
|
|
22174
22317
|
const matrix = generateMatrix(uri, ecl);
|
|
22175
22318
|
const cellSize = size / matrix.length;
|
|
@@ -22716,12 +22859,12 @@ var TransferTokenDetails = ({
|
|
|
22716
22859
|
|
|
22717
22860
|
// src/hooks/useTokenTransfer.ts
|
|
22718
22861
|
import { solanaChain as solanaChain2 } from "@funkit/chains";
|
|
22719
|
-
import { FlagKey as
|
|
22862
|
+
import { FlagKey as FlagKey28 } from "@funkit/utils";
|
|
22720
22863
|
import { mainnet as mainnet8, polygon as polygon5 } from "viem/chains";
|
|
22721
22864
|
var useTokenTransfer = (selectedChainId, selectedToken) => {
|
|
22722
22865
|
const { checkoutItem } = useCheckoutContext();
|
|
22723
22866
|
const enableUniversal = useFlag(
|
|
22724
|
-
|
|
22867
|
+
FlagKey28.EnableTokenTransferUniversalDepositAddress,
|
|
22725
22868
|
false
|
|
22726
22869
|
);
|
|
22727
22870
|
const estPriceImpact = usePriceImpactEstimation(selectedToken);
|
|
@@ -22807,7 +22950,7 @@ function TransferToken({
|
|
|
22807
22950
|
const filteredAssets = useEnabledTokenTransferChainTokens(
|
|
22808
22951
|
transferInit ?? null
|
|
22809
22952
|
);
|
|
22810
|
-
const defaultChainIdFlag = useFlag(
|
|
22953
|
+
const defaultChainIdFlag = useFlag(FlagKey29.TokenTransferDefaultChainId);
|
|
22811
22954
|
const defaultChainId = defaultValues?.chainId ?? Number(defaultChainIdFlag);
|
|
22812
22955
|
const validDefaultChainId = filteredAssets[defaultChainId] !== void 0 ? defaultChainId : polygon6.id;
|
|
22813
22956
|
const [selectedChainId, setSelectedChainId] = useState48(validDefaultChainId);
|
|
@@ -23340,7 +23483,7 @@ var FiatAccountDetail = {
|
|
|
23340
23483
|
|
|
23341
23484
|
// src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
|
|
23342
23485
|
import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
|
|
23343
|
-
import React205, { useCallback as useCallback34, useEffect as useEffect38, useMemo as
|
|
23486
|
+
import React205, { useCallback as useCallback34, useEffect as useEffect38, useMemo as useMemo34, useState as useState50 } from "react";
|
|
23344
23487
|
function useIframeListener(listeners) {
|
|
23345
23488
|
const handleMessage = useCallback34(
|
|
23346
23489
|
(event) => {
|
|
@@ -23393,7 +23536,7 @@ function KycIframe({
|
|
|
23393
23536
|
const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
|
|
23394
23537
|
const { data: kycLink, isLoading: isLinkLoading } = useLoadKycLink(modalState);
|
|
23395
23538
|
const [iframeLoading, setIframeLoading] = useState50(true);
|
|
23396
|
-
const listeners =
|
|
23539
|
+
const listeners = useMemo34(
|
|
23397
23540
|
() => ({
|
|
23398
23541
|
load: () => {
|
|
23399
23542
|
logger.info("KYC iframe loaded");
|
|
@@ -24113,7 +24256,7 @@ function FunConnectOptions({
|
|
|
24113
24256
|
}
|
|
24114
24257
|
}
|
|
24115
24258
|
};
|
|
24116
|
-
const stepComponent =
|
|
24259
|
+
const stepComponent = useMemo35(() => {
|
|
24117
24260
|
switch (step) {
|
|
24118
24261
|
case 0 /* SIGNIN_PRIMARY */:
|
|
24119
24262
|
case 1 /* SIGNIN_SECONDARY */:
|
|
@@ -24222,7 +24365,7 @@ var FULL_SOCIAL_LOGIN_OPTIONS = [
|
|
|
24222
24365
|
function useEnabledSocialLogins() {
|
|
24223
24366
|
const funkitConfig = useFunkitConfig();
|
|
24224
24367
|
const { web2SocialLogins } = funkitConfig.loginConfig;
|
|
24225
|
-
const enabledSocialItems =
|
|
24368
|
+
const enabledSocialItems = useMemo36(() => {
|
|
24226
24369
|
return FULL_SOCIAL_LOGIN_OPTIONS.filter(
|
|
24227
24370
|
(oAuthItem) => !!web2SocialLogins[oAuthItem.funkitKey]
|
|
24228
24371
|
);
|
|
@@ -24251,7 +24394,7 @@ function FunSignInStep({
|
|
|
24251
24394
|
handleOauthRedirect,
|
|
24252
24395
|
handleGenerateFcUri
|
|
24253
24396
|
} = useFunkitWeb2Login();
|
|
24254
|
-
const isEmailInputValid =
|
|
24397
|
+
const isEmailInputValid = useMemo36(() => {
|
|
24255
24398
|
return validateEmailString(emailInput);
|
|
24256
24399
|
}, [emailInput]);
|
|
24257
24400
|
const [emailError, setEmailError] = useState55();
|
|
@@ -24790,7 +24933,7 @@ var getTimestamp = (timestampMs) => formatTimestamp(new Date(timestampMs), {
|
|
|
24790
24933
|
// src/components/FunCheckoutHistory/FunCheckoutStatus.tsx
|
|
24791
24934
|
import { formatSecondsToCountdownForm } from "@funkit/utils";
|
|
24792
24935
|
import { motion as motion11 } from "motion/react";
|
|
24793
|
-
import React220, { useMemo as
|
|
24936
|
+
import React220, { useMemo as useMemo37 } from "react";
|
|
24794
24937
|
|
|
24795
24938
|
// src/components/FunCheckoutHistory/FunCheckoutStatus.css.ts
|
|
24796
24939
|
var GradientLoadingBox = "_101aujm0";
|
|
@@ -24851,7 +24994,7 @@ function PendingCheckoutStatus({
|
|
|
24851
24994
|
checkoutItem.latestQuote?.finalTimeEstimationMs,
|
|
24852
24995
|
checkoutItem.selectedPaymentMethodInfo?.paymentMethod
|
|
24853
24996
|
);
|
|
24854
|
-
const estimatedRemainingSeconds =
|
|
24997
|
+
const estimatedRemainingSeconds = useMemo37(() => {
|
|
24855
24998
|
const startTimeMs = extractStartTimeMs(
|
|
24856
24999
|
checkoutItem.id,
|
|
24857
25000
|
activeCheckoutItem,
|
|
@@ -24977,7 +25120,7 @@ function FunCheckoutHistoryDetail({
|
|
|
24977
25120
|
includeGenerateActionsParams
|
|
24978
25121
|
]
|
|
24979
25122
|
);
|
|
24980
|
-
const buttonProps =
|
|
25123
|
+
const buttonProps = useMemo38(() => {
|
|
24981
25124
|
if (!isCheckoutLoaded) {
|
|
24982
25125
|
return { title: "", isDisabled: true, isLoading: true };
|
|
24983
25126
|
}
|
|
@@ -25059,7 +25202,7 @@ var CheckoutAlert = ({ state, refundState, onHelp }) => {
|
|
|
25059
25202
|
|
|
25060
25203
|
// src/components/FunCheckoutHistory/FunCheckoutHistoryHelp.tsx
|
|
25061
25204
|
import { sendSupportMessage } from "@funkit/api-base";
|
|
25062
|
-
import React224, { useEffect as useEffect43, useMemo as
|
|
25205
|
+
import React224, { useEffect as useEffect43, useMemo as useMemo39, useRef as useRef19, useState as useState58 } from "react";
|
|
25063
25206
|
import { createPortal as createPortal15 } from "react-dom";
|
|
25064
25207
|
|
|
25065
25208
|
// src/components/FunInput/FunTextAreaInput.tsx
|
|
@@ -25206,7 +25349,7 @@ function FunCheckoutHistoryHelp({
|
|
|
25206
25349
|
);
|
|
25207
25350
|
const [descriptionInput, setDescriptionInput] = useState58("");
|
|
25208
25351
|
const [errorMessage, setErrorMessage] = useState58();
|
|
25209
|
-
const isEmailInputValid =
|
|
25352
|
+
const isEmailInputValid = useMemo39(() => {
|
|
25210
25353
|
return validateEmailString(emailInput);
|
|
25211
25354
|
}, [emailInput]);
|
|
25212
25355
|
const [processStage, setProcessStage] = useState58(
|
|
@@ -25395,11 +25538,11 @@ import {
|
|
|
25395
25538
|
formatTimestamp as formatTimestamp2,
|
|
25396
25539
|
isTokenEquivalent as isTokenEquivalent8
|
|
25397
25540
|
} from "@funkit/utils";
|
|
25398
|
-
import React226, { useCallback as useCallback41, useMemo as
|
|
25541
|
+
import React226, { useCallback as useCallback41, useMemo as useMemo41, useRef as useRef20, useState as useState59 } from "react";
|
|
25399
25542
|
import { createPortal as createPortal16 } from "react-dom";
|
|
25400
25543
|
|
|
25401
25544
|
// src/components/FunCheckoutHistory/FunDirectExecutionStatus.tsx
|
|
25402
|
-
import React225, { useMemo as
|
|
25545
|
+
import React225, { useMemo as useMemo40 } from "react";
|
|
25403
25546
|
function FunDirectExecutionStatus({
|
|
25404
25547
|
directExecution
|
|
25405
25548
|
}) {
|
|
@@ -25421,11 +25564,11 @@ function FunDirectExecutionStatus({
|
|
|
25421
25564
|
function PendingDirectExecutionStatus({
|
|
25422
25565
|
directExecution
|
|
25423
25566
|
}) {
|
|
25424
|
-
const totalSeconds =
|
|
25567
|
+
const totalSeconds = useMemo40(() => {
|
|
25425
25568
|
const timeEstimation = directExecution.clientMetadata.latestQuote?.finalTimeEstimationMs || 0;
|
|
25426
25569
|
return Math.ceil(timeEstimation / 1e3);
|
|
25427
25570
|
}, [directExecution]);
|
|
25428
|
-
const estimatedRemainingSeconds =
|
|
25571
|
+
const estimatedRemainingSeconds = useMemo40(() => {
|
|
25429
25572
|
const startTimeMs = directExecution.createdTimeMs;
|
|
25430
25573
|
return getTimeFromNowSeconds(startTimeMs, totalSeconds * 1e3);
|
|
25431
25574
|
}, [totalSeconds, directExecution]);
|
|
@@ -25477,7 +25620,7 @@ function FunDirectExecutionHistoryDetail({
|
|
|
25477
25620
|
includeGenerateActionsParams
|
|
25478
25621
|
]
|
|
25479
25622
|
);
|
|
25480
|
-
const buttonProps =
|
|
25623
|
+
const buttonProps = useMemo41(() => {
|
|
25481
25624
|
if (!isLoaded) {
|
|
25482
25625
|
return void 0;
|
|
25483
25626
|
}
|
|
@@ -25773,7 +25916,7 @@ function useCheckoutModalTitle(depositAddress, defaultTitle) {
|
|
|
25773
25916
|
import { IN_PROGRESS_CHECKOUT_STATES as IN_PROGRESS_CHECKOUT_STATES2 } from "@funkit/api-base";
|
|
25774
25917
|
import { formatTimestampToDate, fullMonthNames } from "@funkit/utils";
|
|
25775
25918
|
import clsx20 from "clsx";
|
|
25776
|
-
import React237, { useEffect as useEffect44, useMemo as
|
|
25919
|
+
import React237, { useEffect as useEffect44, useMemo as useMemo42, useRef as useRef22, useState as useState62 } from "react";
|
|
25777
25920
|
import { Virtuoso } from "react-virtuoso";
|
|
25778
25921
|
import { useAccount as useAccount6 } from "wagmi";
|
|
25779
25922
|
|
|
@@ -26321,7 +26464,7 @@ function Home({
|
|
|
26321
26464
|
const virtuosoDiv = virtuosoParentRef.current?.firstChild;
|
|
26322
26465
|
virtuosoDiv?.classList.add(animateVirtuosoInClass);
|
|
26323
26466
|
}, []);
|
|
26324
|
-
const AssetsList =
|
|
26467
|
+
const AssetsList = useMemo42(() => {
|
|
26325
26468
|
if (walletAssets && !Object.keys(walletAssets).length) {
|
|
26326
26469
|
return /* @__PURE__ */ React237.createElement(EmptyTabAlert, null);
|
|
26327
26470
|
}
|
|
@@ -26348,7 +26491,7 @@ function Home({
|
|
|
26348
26491
|
}
|
|
26349
26492
|
));
|
|
26350
26493
|
}, [walletAssets]);
|
|
26351
|
-
const CheckoutsList =
|
|
26494
|
+
const CheckoutsList = useMemo42(() => {
|
|
26352
26495
|
if (checkoutHistoryList.length === 0 && isCheckoutHistoryInited) {
|
|
26353
26496
|
return /* @__PURE__ */ React237.createElement(EmptyTabAlert, null);
|
|
26354
26497
|
}
|
|
@@ -26952,16 +27095,16 @@ function ChainModal({ onClose, open }) {
|
|
|
26952
27095
|
// src/modals/CheckoutModal/FunCheckoutModal.tsx
|
|
26953
27096
|
import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST3 } from "@funkit/chains";
|
|
26954
27097
|
import { LogLevel, initializeRelayClient } from "@funkit/fun-relay";
|
|
26955
|
-
import { FlagKey as
|
|
27098
|
+
import { FlagKey as FlagKey32 } from "@funkit/utils";
|
|
26956
27099
|
import React253, { useRef as useRef24 } from "react";
|
|
26957
27100
|
|
|
26958
27101
|
// src/components/DydxSwitchModalTab/DydxSwitchModalTab.tsx
|
|
26959
27102
|
import React245, { useCallback as useCallback44 } from "react";
|
|
26960
27103
|
|
|
26961
27104
|
// src/hooks/useFunkitMaxCheckoutUsdInfo.ts
|
|
26962
|
-
import { FlagKey as
|
|
27105
|
+
import { FlagKey as FlagKey30, formatCurrencyAndStringify as formatCurrencyAndStringify15 } from "@funkit/utils";
|
|
26963
27106
|
var useFunkitMaxCheckoutUsdInfo = () => {
|
|
26964
|
-
const maxCheckoutUsd = Number(useFlag(
|
|
27107
|
+
const maxCheckoutUsd = Number(useFlag(FlagKey30.MaxCheckoutUsd));
|
|
26965
27108
|
const limitText = maxCheckoutUsd === Number.MAX_VALUE ? "no" : formatCurrencyAndStringify15(maxCheckoutUsd, {
|
|
26966
27109
|
decimalPrecisionForSuffix: 0,
|
|
26967
27110
|
minimumSignificantDigits: 0,
|
|
@@ -27101,7 +27244,7 @@ var FunCheckoutBlocked = ({ reason }) => {
|
|
|
27101
27244
|
|
|
27102
27245
|
// src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
|
|
27103
27246
|
import clsx23 from "clsx";
|
|
27104
|
-
import React252, { useEffect as useEffect46, useMemo as
|
|
27247
|
+
import React252, { useEffect as useEffect46, useMemo as useMemo43, useState as useState65 } from "react";
|
|
27105
27248
|
|
|
27106
27249
|
// src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
|
|
27107
27250
|
import React247 from "react";
|
|
@@ -27149,13 +27292,13 @@ var FunNotificationShowMoreButton = ({
|
|
|
27149
27292
|
import {
|
|
27150
27293
|
getCheckoutsByUserId as getCheckoutsByUserId2
|
|
27151
27294
|
} from "@funkit/api-base";
|
|
27152
|
-
import { FlagKey as
|
|
27295
|
+
import { FlagKey as FlagKey31 } from "@funkit/utils";
|
|
27153
27296
|
import { useQuery as useQuery16 } from "@tanstack/react-query";
|
|
27154
27297
|
var hasCorrectPaymentMethod = (checkout, paymentMethod) => !paymentMethod || checkout.clientMetadata.selectedPaymentMethodInfo?.paymentMethod === paymentMethod;
|
|
27155
27298
|
var isRecent = (checkout, timestampCutoff) => checkout.createdTimeMs > timestampCutoff;
|
|
27156
27299
|
var DEFAULT_NOTIF_CUTOFF = 7 * 24 * 60 * 60 * 1e3;
|
|
27157
27300
|
function useCheckoutRefreshInterval() {
|
|
27158
|
-
const str = useFlag(
|
|
27301
|
+
const str = useFlag(FlagKey31.CheckoutNotificationsRefreshInterval);
|
|
27159
27302
|
return safeJSONParse(str) || { listRefresh: 50 * 1e3, itemRefresh: 5 * 1e3 };
|
|
27160
27303
|
}
|
|
27161
27304
|
var useRecentCheckouts = ({
|
|
@@ -28142,15 +28285,15 @@ var CheckoutNotifications = ({
|
|
|
28142
28285
|
if (initialDirectExecutions || !directExecutions) return;
|
|
28143
28286
|
setInitialDirectExecutions(directExecutions);
|
|
28144
28287
|
}, [initialDirectExecutions, directExecutions]);
|
|
28145
|
-
const displayedDirectExecutions =
|
|
28288
|
+
const displayedDirectExecutions = useMemo43(() => {
|
|
28146
28289
|
if (!directExecutions) return [];
|
|
28147
28290
|
return getUpdatedDirectExecutions(directExecutions, initialDirectExecutions).filter(({ txHash }) => !closedNotifications.includes(txHash)).slice(0, MAX_COUNT);
|
|
28148
28291
|
}, [initialDirectExecutions, directExecutions, closedNotifications]);
|
|
28149
|
-
const displayedCheckouts =
|
|
28292
|
+
const displayedCheckouts = useMemo43(() => {
|
|
28150
28293
|
if (!checkouts) return [];
|
|
28151
28294
|
return getUpdatedCheckouts(checkouts, initialCheckouts).filter(({ depositAddr }) => !closedNotifications.includes(depositAddr)).slice(0, MAX_COUNT);
|
|
28152
28295
|
}, [initialCheckouts, checkouts, closedNotifications]);
|
|
28153
|
-
const combinedNotifications =
|
|
28296
|
+
const combinedNotifications = useMemo43(() => {
|
|
28154
28297
|
return [
|
|
28155
28298
|
...displayedDirectExecutions.map(
|
|
28156
28299
|
(item) => ({ ...item, isDirectExecution: true })
|
|
@@ -28160,7 +28303,7 @@ var CheckoutNotifications = ({
|
|
|
28160
28303
|
)
|
|
28161
28304
|
].sort((a, b) => b.createdTimeMs - a.createdTimeMs);
|
|
28162
28305
|
}, [displayedDirectExecutions, displayedCheckouts]);
|
|
28163
|
-
const displayedNotifications =
|
|
28306
|
+
const displayedNotifications = useMemo43(() => {
|
|
28164
28307
|
return isExpanded ? combinedNotifications : combinedNotifications.slice(0, COLLAPSED_COUNT);
|
|
28165
28308
|
}, [isExpanded, combinedNotifications]);
|
|
28166
28309
|
const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
|
|
@@ -28286,7 +28429,7 @@ function FunCheckoutModalInner({
|
|
|
28286
28429
|
const hasBack = hasHistoryEntry && !disableBack;
|
|
28287
28430
|
const checkoutConfig = checkoutItem.initSettings.config;
|
|
28288
28431
|
const showDydxSwitch = !hasBack && modalState.step !== "checkout_complete" /* CHECKOUT_COMPLETE */;
|
|
28289
|
-
const helpButtonUrl = useFlag(
|
|
28432
|
+
const helpButtonUrl = useFlag(FlagKey32.HelpTutorialUrl);
|
|
28290
28433
|
const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
|
|
28291
28434
|
depositAddress: checkoutItem.depositAddress ?? void 0,
|
|
28292
28435
|
isCheckoutDetailView: modalState.step === "checkout_complete" /* CHECKOUT_COMPLETE */,
|
|
@@ -28485,7 +28628,7 @@ function ModalProvider({ children }) {
|
|
|
28485
28628
|
return /* @__PURE__ */ React255.createElement(
|
|
28486
28629
|
ModalContext.Provider,
|
|
28487
28630
|
{
|
|
28488
|
-
value:
|
|
28631
|
+
value: useMemo44(
|
|
28489
28632
|
() => ({
|
|
28490
28633
|
accountModalOpen,
|
|
28491
28634
|
accountModalTab,
|
|
@@ -29211,7 +29354,7 @@ var FunkitWeb2Provider = ({
|
|
|
29211
29354
|
},
|
|
29212
29355
|
[privy]
|
|
29213
29356
|
);
|
|
29214
|
-
const web2UserInfo =
|
|
29357
|
+
const web2UserInfo = useMemo45(() => {
|
|
29215
29358
|
if (!loggedInUser || !loggedInUser?.linked_accounts || !loggedInUser?.linked_accounts?.length) {
|
|
29216
29359
|
return PLACEHOLDER_FUNKIT_USER_INFO;
|
|
29217
29360
|
}
|
|
@@ -30119,9 +30262,9 @@ function cssStringFromTheme(theme, options = {}) {
|
|
|
30119
30262
|
}
|
|
30120
30263
|
|
|
30121
30264
|
// src/hooks/useIsFunkitCheckoutActivated.ts
|
|
30122
|
-
import { FlagKey as
|
|
30265
|
+
import { FlagKey as FlagKey33 } from "@funkit/utils";
|
|
30123
30266
|
var useIsFunkitCheckoutActivated = () => {
|
|
30124
|
-
const isCheckoutActivated = useFlag(
|
|
30267
|
+
const isCheckoutActivated = useFlag(FlagKey33.IsCheckoutActivated);
|
|
30125
30268
|
return {
|
|
30126
30269
|
isActivated: isCheckoutActivated
|
|
30127
30270
|
};
|
|
@@ -30226,7 +30369,7 @@ function setFunkitConnectVersion({ version }) {
|
|
|
30226
30369
|
localStorage.setItem(storageKey5, version);
|
|
30227
30370
|
}
|
|
30228
30371
|
function getCurrentSdkVersion() {
|
|
30229
|
-
return "5.5.
|
|
30372
|
+
return "5.5.7";
|
|
30230
30373
|
}
|
|
30231
30374
|
function useFingerprint() {
|
|
30232
30375
|
const fingerprint = useCallback49(() => {
|