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