51 lines
1.2 KiB
Solidity
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;
|
|
}
|
|
|
|
}
|