增加1155芯片批量查询锁定状态的接口, _beforeTokenTransfer里增加锁定状态的判断
This commit is contained in:
parent
c756583f39
commit
3891abf082
@ -172,6 +172,16 @@ contract BEChip1155 is ERC1155, AccessControl {
|
||||
return lockedTokens[id];
|
||||
}
|
||||
|
||||
function isLockedBatch(uint256[] memory ids) external view
|
||||
returns (bool[] memory) {
|
||||
uint256 len = ids.length;
|
||||
bool[] memory results = new bool[](len);
|
||||
for (uint256 i = 0; i < len; ++i) {
|
||||
results[i] = lockedTokens[ids[i]];
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev See {ERC1155-_beforeTokenTransfer}.
|
||||
*/
|
||||
@ -185,6 +195,9 @@ contract BEChip1155 is ERC1155, AccessControl {
|
||||
) internal virtual override {
|
||||
super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
|
||||
uint256 len = ids.length;
|
||||
for (uint256 i = 0; i < len; ++i) {
|
||||
require(!lockedTokens[ids[i]], "Can not transfer locked token");
|
||||
}
|
||||
if (from == address(0)) {
|
||||
// mint nft
|
||||
for (uint256 i = 0; i < len; ++i) {
|
||||
@ -246,12 +259,18 @@ contract BEChip1155 is ERC1155, AccessControl {
|
||||
uint256 page
|
||||
) external view returns (TokenStruct[] memory) {
|
||||
uint256 size = _ownedTokens[user].length;
|
||||
TokenStruct[] memory results = new TokenStruct[](page);
|
||||
uint256 max = size;
|
||||
uint256 pageSize = 0;
|
||||
if (start < size) {
|
||||
uint256 max = size;
|
||||
if (start + page < size) {
|
||||
max = start + page;
|
||||
}
|
||||
if (start + page < size) {
|
||||
pageSize = page;
|
||||
max = start + page;
|
||||
} else {
|
||||
pageSize = size - start;
|
||||
}
|
||||
}
|
||||
TokenStruct[] memory results = new TokenStruct[](pageSize);
|
||||
if (pageSize > 0) {
|
||||
for (uint256 i = start; i < max; ++i) {
|
||||
TokenStruct memory dataObj;
|
||||
uint256 tokenId = _ownedTokens[user][i];
|
||||
|
Loading…
x
Reference in New Issue
Block a user