aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/utils/erc721_wrapper.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-06-02 08:13:02 +0800
committerFabio Berger <me@fabioberger.com>2018-06-02 08:13:02 +0800
commitd3c64bd5b493dc1779a24c7c051c255106a4292a (patch)
treed1c818e64b75c1f4fed1c7d797892fb0d35dd779 /packages/contracts/src/utils/erc721_wrapper.ts
parent7024a7468a549a96cf120e6b7e287e79d7ad2d61 (diff)
parent62e60e2ba6d07b9b892b4f2e92a5421c54f5fa20 (diff)
downloaddexon-sol-tools-d3c64bd5b493dc1779a24c7c051c255106a4292a.tar.gz
dexon-sol-tools-d3c64bd5b493dc1779a24c7c051c255106a4292a.tar.zst
dexon-sol-tools-d3c64bd5b493dc1779a24c7c051c255106a4292a.zip
Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype: Set contract expiration time to a constant 10 minutes Remove unused promises array Make erc20_wrapper and erc721_wrapper serial Rename changelogs to changelog Add CHANGELOG entry Check that git branch is up to date before publishing Move prepublish checks before building packages for publishing Refactor changelog utils to a separate module
Diffstat (limited to 'packages/contracts/src/utils/erc721_wrapper.ts')
-rw-r--r--packages/contracts/src/utils/erc721_wrapper.ts56
1 files changed, 27 insertions, 29 deletions
diff --git a/packages/contracts/src/utils/erc721_wrapper.ts b/packages/contracts/src/utils/erc721_wrapper.ts
index 11a012602..13fdf630e 100644
--- a/packages/contracts/src/utils/erc721_wrapper.ts
+++ b/packages/contracts/src/utils/erc721_wrapper.ts
@@ -17,27 +17,28 @@ export class ERC721Wrapper {
private _contractOwnerAddress: string;
private _web3Wrapper: Web3Wrapper;
private _provider: Provider;
- private _dummyTokenContracts?: DummyERC721TokenContract[];
+ private _dummyTokenContracts: DummyERC721TokenContract[];
private _proxyContract?: ERC721ProxyContract;
private _initialTokenIdsByOwner: ERC721TokenIdsByOwner = {};
constructor(provider: Provider, tokenOwnerAddresses: string[], contractOwnerAddress: string) {
this._web3Wrapper = new Web3Wrapper(provider);
this._provider = provider;
+ this._dummyTokenContracts = [];
this._tokenOwnerAddresses = tokenOwnerAddresses;
this._contractOwnerAddress = contractOwnerAddress;
}
public async deployDummyTokensAsync(): Promise<DummyERC721TokenContract[]> {
- this._dummyTokenContracts = await Promise.all(
- _.times(constants.NUM_DUMMY_ERC721_TO_DEPLOY, async () =>
- DummyERC721TokenContract.deployFrom0xArtifactAsync(
+ for (let i = 0; i < constants.NUM_DUMMY_ERC721_TO_DEPLOY; i++) {
+ this._dummyTokenContracts.push(
+ await DummyERC721TokenContract.deployFrom0xArtifactAsync(
artifacts.DummyERC721Token,
this._provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
constants.DUMMY_TOKEN_SYMBOL,
),
- ),
- );
+ );
+ }
return this._dummyTokenContracts;
}
public async deployProxyAsync(): Promise<ERC721ProxyContract> {
@@ -51,17 +52,16 @@ export class ERC721Wrapper {
public async setBalancesAndAllowancesAsync(): Promise<void> {
this._validateDummyTokenContractsExistOrThrow();
this._validateProxyContractExistsOrThrow();
- const setBalancePromises: Array<Promise<string>> = [];
- const setAllowancePromises: Array<Promise<string>> = [];
this._initialTokenIdsByOwner = {};
- _.forEach(this._dummyTokenContracts, dummyTokenContract => {
- _.forEach(this._tokenOwnerAddresses, tokenOwnerAddress => {
- _.forEach(_.range(constants.NUM_ERC721_TOKENS_TO_MINT), () => {
+ for (const dummyTokenContract of this._dummyTokenContracts) {
+ for (const tokenOwnerAddress of this._tokenOwnerAddresses) {
+ for (let i = 0; i < constants.NUM_ERC721_TOKENS_TO_MINT; i++) {
const tokenId = generatePseudoRandomSalt();
- setBalancePromises.push(
- dummyTokenContract.mint.sendTransactionAsync(tokenOwnerAddress, tokenId, {
+ await this._web3Wrapper.awaitTransactionSuccessAsync(
+ await dummyTokenContract.mint.sendTransactionAsync(tokenOwnerAddress, tokenId, {
from: this._contractOwnerAddress,
}),
+ constants.AWAIT_TRANSACTION_MINED_MS,
);
if (_.isUndefined(this._initialTokenIdsByOwner[tokenOwnerAddress])) {
this._initialTokenIdsByOwner[tokenOwnerAddress] = {
@@ -72,41 +72,39 @@ export class ERC721Wrapper {
this._initialTokenIdsByOwner[tokenOwnerAddress][dummyTokenContract.address] = [];
}
this._initialTokenIdsByOwner[tokenOwnerAddress][dummyTokenContract.address].push(tokenId);
- });
+ }
const shouldApprove = true;
- setAllowancePromises.push(
- dummyTokenContract.setApprovalForAll.sendTransactionAsync(
+ await this._web3Wrapper.awaitTransactionSuccessAsync(
+ await dummyTokenContract.setApprovalForAll.sendTransactionAsync(
(this._proxyContract as ERC721ProxyContract).address,
shouldApprove,
{ from: tokenOwnerAddress },
),
+ constants.AWAIT_TRANSACTION_MINED_MS,
);
- });
- });
- const txHashes = await Promise.all([...setBalancePromises, ...setAllowancePromises]);
- await Promise.all(_.map(txHashes, async txHash => this._web3Wrapper.awaitTransactionSuccessAsync(txHash)));
+ }
+ }
}
public async getBalancesAsync(): Promise<ERC721TokenIdsByOwner> {
this._validateDummyTokenContractsExistOrThrow();
this._validateBalancesAndAllowancesSetOrThrow();
const tokenIdsByOwner: ERC721TokenIdsByOwner = {};
- const tokenOwnerPromises: Array<Promise<string>> = [];
+ const tokenOwnerAddresses: string[] = [];
const tokenInfo: Array<{ tokenId: BigNumber; tokenAddress: string }> = [];
- _.forEach(this._dummyTokenContracts, dummyTokenContract => {
- _.forEach(this._tokenOwnerAddresses, tokenOwnerAddress => {
+ for (const dummyTokenContract of this._dummyTokenContracts) {
+ for (const tokenOwnerAddress of this._tokenOwnerAddresses) {
const initialTokenOwnerIds = this._initialTokenIdsByOwner[tokenOwnerAddress][
dummyTokenContract.address
];
- _.forEach(initialTokenOwnerIds, tokenId => {
- tokenOwnerPromises.push(dummyTokenContract.ownerOf.callAsync(tokenId));
+ for (const tokenId of initialTokenOwnerIds) {
+ tokenOwnerAddresses.push(await dummyTokenContract.ownerOf.callAsync(tokenId));
tokenInfo.push({
tokenId,
tokenAddress: dummyTokenContract.address,
});
- });
- });
- });
- const tokenOwnerAddresses = await Promise.all(tokenOwnerPromises);
+ }
+ }
+ }
_.forEach(tokenOwnerAddresses, (tokenOwnerAddress, ownerIndex) => {
const tokenAddress = tokenInfo[ownerIndex].tokenAddress;
const tokenId = tokenInfo[ownerIndex].tokenId;