feat: complete ERC721's safeTransferFrom

This commit is contained in:
Ting-Jun Wang 2024-03-22 15:15:53 +08:00
parent d178a24104
commit fff8b11932
Signed by: snsd0805
GPG Key ID: D175E969960C4B16

View File

@ -126,15 +126,31 @@ contract NFinTech is IERC721 {
} else {
revert();
}
}
function _safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) internal {
if (to.code.length != 0 ) {
try IERC721TokenReceiver(to).onERC721Received(msg.sender, from, tokenId, data) returns (bytes4 retval) {
if (retval == IERC721TokenReceiver.onERC721Received.selector) {
transferFrom(from, to, tokenId);
} else {
revert();
}
} catch {
revert();
}
} else {
transferFrom(from, to, tokenId);
}
}
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) public {
// TODO: please add your implementaiton here
_safeTransferFrom(from, to, tokenId, data);
}
function safeTransferFrom(address from, address to, uint256 tokenId) public {
// TODO: please add your implementaiton here
_safeTransferFrom(from, to, tokenId, "");
}
}