@@ -140,9 +140,9 @@ contract UniversalBridgeV1 is Initializable, UUPSUpgradeable, Ownable, Reentranc
140
140
address tokenAddress ,
141
141
uint256 tokenAmount ,
142
142
address payable forwardAddress ,
143
+ address payable spenderAddress ,
143
144
address payable developerFeeRecipient ,
144
145
uint256 developerFeeBps ,
145
- bool directTransfer ,
146
146
bytes calldata callData ,
147
147
bytes calldata extraData
148
148
) external payable nonReentrant onlyProxy {
@@ -161,40 +161,33 @@ contract UniversalBridgeV1 is Initializable, UUPSUpgradeable, Ownable, Reentranc
161
161
if (tokenAmount == 0 ) {
162
162
revert UniversalBridgeInvalidAmount (tokenAmount);
163
163
}
164
- uint256 sendValue = msg .value ; // includes bridge fee etc. (if any)
165
164
166
165
// mark the pay request as processed
167
166
_universalBridgeStorage ().processed[transactionId] = true ;
168
167
168
+ uint256 sendValue = msg .value ; // includes bridge fee etc. (if any)
169
+
169
170
// distribute fees
170
171
uint256 totalFeeAmount = _distributeFees (tokenAddress, tokenAmount, developerFeeRecipient, developerFeeBps);
171
172
172
- // determine native value to send
173
173
if (_isNativeToken (tokenAddress)) {
174
174
sendValue = msg .value - totalFeeAmount;
175
175
176
176
if (sendValue < tokenAmount) {
177
177
revert UniversalBridgeMismatchedValue (tokenAmount, sendValue);
178
178
}
179
- }
180
-
181
- if (directTransfer) {
182
- if (_isNativeToken (tokenAddress)) {
183
- _call (forwardAddress, sendValue, "" );
184
- } else {
185
- if (msg .value != 0 ) {
186
- revert UniversalBridgeMsgValueNotZero ();
187
- }
188
-
189
- SafeTransferLib.safeTransferFrom (tokenAddress, msg .sender , forwardAddress, tokenAmount);
179
+ _call (forwardAddress, sendValue, callData); // calldata empty for direct transfer
180
+ } else if (callData.length == 0 ) {
181
+ if (msg .value != 0 ) {
182
+ revert UniversalBridgeMsgValueNotZero ();
190
183
}
184
+ SafeTransferLib.safeTransferFrom (tokenAddress, msg .sender , forwardAddress, tokenAmount);
191
185
} else {
192
- if (! _isNativeToken (tokenAddress)) {
193
- // pull user funds
194
- SafeTransferLib.safeTransferFrom (tokenAddress, msg .sender , address (this ), tokenAmount);
195
- SafeTransferLib.safeApprove (tokenAddress, forwardAddress, tokenAmount);
196
- }
186
+ // pull user funds
187
+ SafeTransferLib.safeTransferFrom (tokenAddress, msg .sender , address (this ), tokenAmount);
197
188
189
+ // approve to spender address and call forward address -- both will be same in most cases
190
+ SafeTransferLib.safeApprove (tokenAddress, spenderAddress, tokenAmount);
198
191
_call (forwardAddress, sendValue, callData);
199
192
}
200
193
0 commit comments