diff --git a/src/apis/contracts_api.ts b/src/apis/contracts_api.ts index a1211d32..b98a40c5 100644 --- a/src/apis/contracts_api.ts +++ b/src/apis/contracts_api.ts @@ -34,6 +34,7 @@ import { ERC721_COLLATERALIZED_SIMPLE_INTEREST_TERMS_CONTRACT_CACHE_KEY, ERC721_COLLATERALIZER_CONTRACT_CACHE_KEY, ERC721_TOKEN_REGISTRY_CONTRACT_CACHE_KEY, + MINTABLE_ERC721_CACHE_KEY, NULL_ADDRESS, REPAYMENT_ROUTER_CONTRACT_CACHE_KEY, SIMPLE_INTEREST_TERMS_CONTRACT_CACHE_KEY, @@ -329,18 +330,28 @@ export class ContractsAPI { public async loadMintableERC721ContractAsync( transactionOptions: object = {}, ): Promise { - const cacheKey = "MintableERC721TokenContract"; + if (MINTABLE_ERC721_CACHE_KEY in this.cache) { + return this.cache[MINTABLE_ERC721_CACHE_KEY] as MintableERC721TokenContract; + } - if (cacheKey in this.cache) { - return this.cache[cacheKey] as MintableERC721TokenContract; + let mintableERC721: MintableERC721TokenContract; + + if (this.addressBook.mintableERC721Address) { + mintableERC721 = await MintableERC721TokenContract.at( + this.addressBook.mintableERC721Address, + this.web3, + transactionOptions, + ); } else { - const tokenContract = await MintableERC721TokenContract.deployed( + mintableERC721 = await MintableERC721TokenContract.deployed( this.web3, transactionOptions, ); - this.cache[cacheKey] = tokenContract; - return tokenContract; } + + this.cache[MINTABLE_ERC721_CACHE_KEY] = mintableERC721; + + return mintableERC721; } public async loadERC721ContractAsync( diff --git a/src/types/address_book.ts b/src/types/address_book.ts index 4d082b2b..27c2ec7e 100644 --- a/src/types/address_book.ts +++ b/src/types/address_book.ts @@ -12,4 +12,5 @@ export interface AddressBook { erc721TokenRegistryContract?: string; erc721CollateralizerAddress?: string; collateralizerAddress?: string; + mintableERC721Address?: string; } diff --git a/utils/constants.ts b/utils/constants.ts index 0b76d272..f5102db4 100644 --- a/utils/constants.ts +++ b/utils/constants.ts @@ -42,6 +42,7 @@ export const ERC721_COLLATERALIZER_CONTRACT_CACHE_KEY = "ERC721CollateralizerCon export const ERC721_COLLATERALIZED_SIMPLE_INTEREST_TERMS_CONTRACT_CACHE_KEY = "ERC721CollateralizedSimpleInterestTermsContract"; export const ERC721_TOKEN_REGISTRY_CONTRACT_CACHE_KEY = "ERC721TokenRegistryContract"; +export const MINTABLE_ERC721_CACHE_KEY = "MintableERC721TokenContract"; export const TERMS_CONTRACT_TYPES = { COLLATERALIZED_SIMPLE_INTEREST_LOAN: "CollateralizedSimpleInterestLoan",