Files
dodo-contractV2/contracts/external/ERC1155/InitializableERC1155.sol
2021-07-02 17:24:22 +08:00

51 lines
1.2 KiB
Solidity

/*
Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
import {ERC1155} from "./ERC1155.sol";
import {Strings} from "../utils/Strings.sol";
contract InitializableERC1155 is ERC1155 {
using Strings for uint256;
mapping (uint256 => string) private _tokenURIs;
string internal _baseUri = "";
bool internal _INITIALIZED_;
function init(
address creator,
uint256 amount,
string memory uri
) public {
require(!_INITIALIZED_, "INITIALIZED");
_INITIALIZED_ = true;
_mint(creator, 0, amount ,"");
_setTokenURI(0, uri);
}
function uri(uint256 tokenId) public view override returns (string memory) {
string memory _tokenURI = _tokenURIs[tokenId];
string memory base = _baseUri;
if (bytes(base).length == 0) {
return _tokenURI;
}
if (bytes(_tokenURI).length > 0) {
return string(abi.encodePacked(base, _tokenURI));
}
return super.uri(tokenId);
}
function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal {
_tokenURIs[tokenId] = _tokenURI;
}
}