refactor: move wrap operation and receiver check to _executeSwap

This commit is contained in:
royvardhan
2025-02-26 20:44:29 +05:30
parent d1f7f6dde1
commit ff83693b28

View File

@@ -141,21 +141,12 @@ contract TychoRouter is AccessControl, Dispatcher, Pausable, ReentrancyGuard {
address receiver, address receiver,
bytes calldata swaps bytes calldata swaps
) external payable whenNotPaused nonReentrant returns (uint256 amountOut) { ) external payable whenNotPaused nonReentrant returns (uint256 amountOut) {
if (receiver == address(0)) {
revert TychoRouter__AddressZero();
}
// Assume funds already in our router.
if (wrapEth) {
_wrapETH(amountIn);
tokenIn = address(_weth);
}
return _executeSwap( return _executeSwap(
amountIn, amountIn,
tokenIn, tokenIn,
tokenOut, tokenOut,
minAmountOut, minAmountOut,
wrapEth,
unwrapEth, unwrapEth,
nTokens, nTokens,
receiver, receiver,
@@ -203,15 +194,8 @@ contract TychoRouter is AccessControl, Dispatcher, Pausable, ReentrancyGuard {
bytes calldata signature, bytes calldata signature,
bytes calldata swaps bytes calldata swaps
) external payable whenNotPaused nonReentrant returns (uint256 amountOut) { ) external payable whenNotPaused nonReentrant returns (uint256 amountOut) {
if (receiver == address(0)) { // For non native ETH, transfer and handle approval.
revert TychoRouter__AddressZero(); if (tokenIn != address(0)) {
}
// For native ETH, assume funds already in our router. Else, transfer and handle approval.
if (wrapEth) {
_wrapETH(amountIn);
tokenIn = address(_weth);
} else if (tokenIn != address(0)) {
permit2.permit(msg.sender, permitSingle, signature); permit2.permit(msg.sender, permitSingle, signature);
permit2.transferFrom( permit2.transferFrom(
msg.sender, msg.sender,
@@ -226,6 +210,7 @@ contract TychoRouter is AccessControl, Dispatcher, Pausable, ReentrancyGuard {
tokenIn, tokenIn,
tokenOut, tokenOut,
minAmountOut, minAmountOut,
wrapEth,
unwrapEth, unwrapEth,
nTokens, nTokens,
receiver, receiver,
@@ -246,11 +231,21 @@ contract TychoRouter is AccessControl, Dispatcher, Pausable, ReentrancyGuard {
address tokenIn, address tokenIn,
address tokenOut, address tokenOut,
uint256 minAmountOut, uint256 minAmountOut,
bool wrapEth,
bool unwrapEth, bool unwrapEth,
uint256 nTokens, uint256 nTokens,
address receiver, address receiver,
bytes calldata swaps bytes calldata swaps
) internal returns (uint256 amountOut) { ) internal returns (uint256 amountOut) {
if (receiver == address(0)) {
revert TychoRouter__AddressZero();
}
// For native ETH, assume funds are already in the router.
if (wrapEth) {
_wrapETH(amountIn);
tokenIn = address(_weth);
}
amountOut = _swap(amountIn, nTokens, swaps); amountOut = _swap(amountIn, nTokens, swaps);
if (fee > 0) { if (fee > 0) {