@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
76 lines • 2.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSwapButtonCta = void 0;
const react_1 = require("react");
const useSwapButtonCta = ({ fromToken, toToken, multiWalletSupportEnabled, isValidFromAddress, fromChainWalletVMSupported, isValidToAddress, toChainWalletVMSupported, fromChain, toChain, isSameCurrencySameRecipientSwap, debouncedInputAmountValue, debouncedOutputAmountValue, hasInsufficientBalance, isInsufficientLiquidityError, quote, operation }) => {
const firstStep = quote?.steps?.[0];
const firstStepItem = firstStep?.items?.[0];
return (0, react_1.useMemo)(() => {
if (!fromToken || !toToken) {
return 'Select a token';
}
if (multiWalletSupportEnabled &&
!isValidFromAddress &&
fromChainWalletVMSupported) {
return `Select ${fromChain?.displayName} Wallet`;
}
if (multiWalletSupportEnabled && !isValidToAddress) {
return toChainWalletVMSupported
? `Select ${toChain?.displayName} Wallet`
: `Enter ${toChain?.displayName} Address`;
}
if (toChain?.vmType !== 'evm' && !isValidToAddress) {
return `Enter ${toChain?.displayName} Address`;
}
if (isSameCurrencySameRecipientSwap) {
return 'Invalid recipient';
}
if (!debouncedInputAmountValue || !debouncedOutputAmountValue) {
return 'Enter an amount';
}
if (hasInsufficientBalance) {
return 'Insufficient Balance';
}
if (isInsufficientLiquidityError) {
return 'Insufficient Liquidity';
}
if (!toChainWalletVMSupported && !isValidToAddress) {
return `Enter ${toChain?.displayName} Address`;
}
if (firstStep?.id === 'approve' && firstStepItem?.status === 'incomplete') {
return 'Approve & Swap';
}
switch (operation) {
case 'wrap':
return 'Wrap';
case 'unwrap':
return 'Unwrap';
case 'send':
return 'Send';
case 'swap':
return 'Swap';
case 'bridge':
return 'Bridge';
default:
return 'Confirm';
}
}, [
fromToken,
toToken,
multiWalletSupportEnabled,
isValidFromAddress,
fromChainWalletVMSupported,
isValidToAddress,
toChainWalletVMSupported,
toChain,
isSameCurrencySameRecipientSwap,
debouncedInputAmountValue,
debouncedOutputAmountValue,
hasInsufficientBalance,
isInsufficientLiquidityError,
firstStep,
operation
]);
};
exports.useSwapButtonCta = useSwapButtonCta;
//# sourceMappingURL=useSwapButtonCta.js.map