diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-07-18 22:38:16 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-18 22:38:16 +0800 |
commit | 00d1622b3f087943e750f1b3f6ee6ceab7e80285 (patch) | |
tree | 44789fff181ec24846728d885ba541c23f682321 /packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts | |
parent | e2fb49a8f871fd4b631bb01bb641c632b7c19435 (diff) | |
parent | a1acf19ff3c1948214dde05a91eb3fbeac728d2c (diff) | |
download | dexon-sol-tools-00d1622b3f087943e750f1b3f6ee6ceab7e80285.tar dexon-sol-tools-00d1622b3f087943e750f1b3f6ee6ceab7e80285.tar.gz dexon-sol-tools-00d1622b3f087943e750f1b3f6ee6ceab7e80285.tar.bz2 dexon-sol-tools-00d1622b3f087943e750f1b3f6ee6ceab7e80285.tar.lz dexon-sol-tools-00d1622b3f087943e750f1b3f6ee6ceab7e80285.tar.xz dexon-sol-tools-00d1622b3f087943e750f1b3f6ee6ceab7e80285.tar.zst dexon-sol-tools-00d1622b3f087943e750f1b3f6ee6ceab7e80285.zip |
Merge pull request #887 from 0xProject/feature/order-watcher-v2
Order watcher v2
Diffstat (limited to 'packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts')
-rw-r--r-- | packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts index 3d24702b3..7c2b41c62 100644 --- a/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts @@ -342,15 +342,17 @@ export class ERC721TokenWrapper extends ContractWrapper { const normalizedSenderAddress = senderAddress.toLowerCase(); const tokenContract = await this._getTokenContractAsync(normalizedTokenAddress); const ownerAddress = await this.getOwnerOfAsync(tokenAddress, tokenId); - const isApprovedForAll = await this.isApprovedForAllAsync( - normalizedTokenAddress, - ownerAddress, - normalizedSenderAddress, - ); - if (!isApprovedForAll) { - const approvedAddress = await this.getApprovedIfExistsAsync(normalizedTokenAddress, tokenId); - if (approvedAddress !== senderAddress) { - throw new Error(ContractWrappersError.ERC721NoApproval); + if (normalizedSenderAddress !== ownerAddress) { + const isApprovedForAll = await this.isApprovedForAllAsync( + normalizedTokenAddress, + ownerAddress, + normalizedSenderAddress, + ); + if (!isApprovedForAll) { + const approvedAddress = await this.getApprovedIfExistsAsync(normalizedTokenAddress, tokenId); + if (approvedAddress !== normalizedSenderAddress) { + throw new Error(ContractWrappersError.ERC721NoApproval); + } } } const txHash = await tokenContract.transferFrom.sendTransactionAsync( |