π©Message Passing
The requirements and interface for your contract to receive messages along with tokens when bridging.
Last updated
...
if (_token == LibSwapper.ETH) {
LibSwapper._sendNative(immediateReceiver, _amount);
} else {
SafeERC20.safeTransfer(IERC20(_token), immediateReceiver, _amount);
}
if (thereIsAMessage) {
require(
messagingStorage.whitelistMessagingContracts[_dAppReceiverContract],
"3rd-party contract not whitelisted"
);
try IRangoMessageReceiver(_dAppReceiverContract)
.handleRangoMessage(_token, _amount, processStatus, _dAppMessage)
{
emit CrossChainMessageCalled(_dAppReceiverContract, _token, _amount, processStatus, _dAppMessage, true, "");
} catch Error(string memory reason) {
emit CrossChainMessageCalled(_dAppReceiverContract, _token, _amount, processStatus, _dAppMessage, false, reason);
} catch (bytes memory lowLevelData) {
emit CrossChainMessageCalled(_dAppReceiverContract, _token, _amount, processStatus, _dAppMessage, false, LibSwapper._getRevertMsg(lowLevelData));
}
}