Check if the token doesn't exist before minting in fill scenarios
This commit is contained in:
@@ -238,9 +238,16 @@ export class FillScenarios {
|
|||||||
this._web3Wrapper.getProvider(),
|
this._web3Wrapper.getProvider(),
|
||||||
this._web3Wrapper.getContractDefaults(),
|
this._web3Wrapper.getContractDefaults(),
|
||||||
);
|
);
|
||||||
|
try {
|
||||||
|
const currentOwner = await erc721Token.ownerOf.callAsync(tokenId);
|
||||||
|
if (currentOwner !== address) {
|
||||||
|
throw new Error(`Token ${tokenAddress}:${tokenId} is already owner by ${currentOwner}`);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
const txHash = await erc721Token.mint.sendTransactionAsync(address, tokenId, { from: this._coinbase });
|
const txHash = await erc721Token.mint.sendTransactionAsync(address, tokenId, { from: this._coinbase });
|
||||||
await this._web3Wrapper.awaitTransactionSuccessAsync(txHash, constants.AWAIT_TRANSACTION_MINED_MS);
|
await this._web3Wrapper.awaitTransactionSuccessAsync(txHash, constants.AWAIT_TRANSACTION_MINED_MS);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private async _increaseERC20BalanceAndAllowanceAsync(
|
private async _increaseERC20BalanceAndAllowanceAsync(
|
||||||
tokenAddress: string,
|
tokenAddress: string,
|
||||||
address: string,
|
address: string,
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ export class OrderWatcher {
|
|||||||
|
|
||||||
const orderAssetDatas = [signedOrder.makerAssetData, signedOrder.takerAssetData];
|
const orderAssetDatas = [signedOrder.makerAssetData, signedOrder.takerAssetData];
|
||||||
_.each(orderAssetDatas, assetData => {
|
_.each(orderAssetDatas, assetData => {
|
||||||
const decodedAssetData = assetProxyUtils.decodeAssetData(assetData);
|
const decodedAssetData = assetProxyUtils.decodeAssetDataOrThrow(assetData);
|
||||||
if (decodedAssetData.assetProxyId === AssetProxyId.ERC20) {
|
if (decodedAssetData.assetProxyId === AssetProxyId.ERC20) {
|
||||||
this._collisionResistantAbiDecoder.addERC20Token(decodedAssetData.tokenAddress);
|
this._collisionResistantAbiDecoder.addERC20Token(decodedAssetData.tokenAddress);
|
||||||
} else if (decodedAssetData.assetProxyId === AssetProxyId.ERC721) {
|
} else if (decodedAssetData.assetProxyId === AssetProxyId.ERC721) {
|
||||||
|
|||||||
Reference in New Issue
Block a user