diff --git a/src/scraper.js b/src/scraper.js index afb2657..f1cbcda 100644 --- a/src/scraper.js +++ b/src/scraper.js @@ -167,6 +167,8 @@ class Scrape extends Collection { try { const receipt = await this.provider.getTransactionReceipt(txHash); const timestamp = await this.getBlockTimestamp(receipt.blockNumber); + const _logs = receipt.logs.filter((l) => l.address.toLowerCase() === this.contractAddress.toLowerCase()); + if (_logs == 0) return // Evaluate each log entry and determine if it's a sale for our contract and use custom logic for each exchange to parse values receipt.logs.map(async log => { let logIndex = log.logIndex; @@ -189,22 +191,19 @@ class Scrape extends Collection { if (Number(o.amount) > 0) amountWei += Number(o.amount); }); amountWei = amountWei.toString(); + let rl = logDescription.args.offer.filter((l) => l.token.toLowerCase() === this.contractAddress.toLowerCase()); + if (rl.length > 0) tokenId = rl[0].identifier.toString(); } else if (logDescription.args.offer[0].token.toLowerCase() == WETH_ADDRESS.toLowerCase()) { // seller has accepted buyer bid sale = true; toAddress = logDescription.args.offerer.toLowerCase(); fromAddress = logDescription.args.recipient.toLowerCase(); amountWei = BigNumber.from(logDescription.args.offer[0].amount).toString(); - receipt.logs.filter( - l => l.logIndex === log.logIndex - 3 && l.topics[0].toLowerCase() === TRANSFER_TOPIC && l.address.toLowerCase() === this.contractAddress.toLowerCase() - ).map((t) => { - tokenId = BigInt(t.topics[3]); - }); + const _c = logDescription.args.consideration.filter((c) => c.token.toLowerCase() === this.contractAddress.toLowerCase()); + tokenId = _c[0].identifier.toString(); } else { // unknown condition } - let rl = logDescription.args.offer.filter((l) => l.token.toLowerCase() === this.contractAddress.toLowerCase()); - if (rl.length > 0) tokenId = rl[0].identifier.toString(); } else if (log.topics[0].toLowerCase() === WYVERN_SALE_TOPIC.toLowerCase()) { // Handle Opensea/Wyvern sales let txEventType = TRANSFER_TOPIC.toLowerCase();