From ec95a32ca964e4ea009d268dd74513fbc9b82e81 Mon Sep 17 00:00:00 2001 From: Neokry Date: Wed, 23 Mar 2022 12:18:46 -0700 Subject: [PATCH 1/5] Fixes issues with auction status and auction duration --- src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts b/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts index 17a20ad..e5abe14 100644 --- a/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts +++ b/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts @@ -235,7 +235,7 @@ function extractAskEvents(askEvents: V3EventPartFragment[]): TokenMarketEvent[] function extractAuction(auction: IndexerAuctionPartFragment) { const getStatus = () => { - if (!auction.approved) { + if (!auction.approved || (auction.approved && !auction.firstBidTime)) { return 'pending'; } if (auction.canceledEvent) { @@ -322,7 +322,7 @@ function extractAuction(auction: IndexerAuctionPartFragment) { transactionHash: auction.endedEvent?.transactionHash ?? null, }, winner: highestBid?.sender, - duration: dateToUnix(auction.duration!)!, + duration: auction.duration ? parseInt(auction.duration) : 0, currentBid: highestBid ? formatBid(highestBid) : undefined, source: 'ZoraReserveV0', bids: [...auction.bidEvents.map((bid) => formatBid(bid))], @@ -350,7 +350,7 @@ function extractTransferEvents(transferEvents: TokenTransferEventInfoFragment[]) blockNumber: transferEvent.blockNumber, transactionHash: transferEvent.transactionHash, }, - type: getTransferType(transferEvent) + type: getTransferType(transferEvent), })); } @@ -422,7 +422,7 @@ export class ZoraIndexerV1DataSource implements ZoraIndexerV1Interface { object.rawData = {}; } object.markets = extractMarketData(asset, object); - object.events = [] + object.events = []; // extract auction events? if ('v3Events' in asset) { const assetFull: IndexerTokenWithAuctionDetailFragment = asset; From 08b8070b373818d88c75d4308d6ee679d349e8e6 Mon Sep 17 00:00:00 2001 From: Neokry Date: Wed, 23 Mar 2022 16:23:50 -0700 Subject: [PATCH 2/5] Fixes issues with graph auctions / opensea data --- src/backends/zora-graph/GraphAuctionDataSource.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/backends/zora-graph/GraphAuctionDataSource.ts b/src/backends/zora-graph/GraphAuctionDataSource.ts index 9f5b918..a4eba0d 100644 --- a/src/backends/zora-graph/GraphAuctionDataSource.ts +++ b/src/backends/zora-graph/GraphAuctionDataSource.ts @@ -30,7 +30,6 @@ function priceToPretty(number: string, decimals?: number | null) { .toString(); } - export class GraphAuctionDataSource implements GraphAuctionInterface { // auctionInfoLoader fetches auction info for non-zora NFTs auctionInfoLoader: DataLoader; @@ -67,7 +66,7 @@ export class GraphAuctionDataSource implements GraphAuctionInterface { const currentObject: NFTObject = { rawData: {}, markets: [] }; const getStatus = () => { - if (!response.approved) { + if (!response.approved || (response.approved && response.firstBidTime === '0')) { return 'pending'; } if ( @@ -82,7 +81,7 @@ export class GraphAuctionDataSource implements GraphAuctionInterface { } if ( response.expectedEndTimestamp && - response.expectedEndTimestamp >= unixTimeNow() + response.expectedEndTimestamp <= unixTimeNow() ) { return 'complete'; } From 46134e2ab46d022704ffdd42e9730d344fc9ffce Mon Sep 17 00:00:00 2001 From: Neokry Date: Wed, 23 Mar 2022 16:24:12 -0700 Subject: [PATCH 3/5] Fixes issues with opensea data --- src/backends/opensea/OpenseaDataSource.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/opensea/OpenseaDataSource.ts b/src/backends/opensea/OpenseaDataSource.ts index 835d122..690bc83 100644 --- a/src/backends/opensea/OpenseaDataSource.ts +++ b/src/backends/opensea/OpenseaDataSource.ts @@ -36,7 +36,7 @@ export class OpenseaDataSource implements OpenseaInterface { } transformNFT(asset: OpenseaAsset, object: NFTObject) { object.nft = { - tokenId: asset.id.toString(), + tokenId: asset.token_id.toString(), contract: { address: asset.asset_contract.address, name: asset.asset_contract.name, @@ -47,7 +47,7 @@ export class OpenseaDataSource implements OpenseaInterface { metadataURI: asset.token_metadata, contentURI: asset.animation_original_url || asset.image_original_url, minted: { - minter: asset.creator.address, + minter: asset.creator?.address, }, }; object.metadata = { From 7e8c5c8077930692927d605c5e2e6f46e4688995 Mon Sep 17 00:00:00 2001 From: Neokry Date: Wed, 23 Mar 2022 17:11:30 -0700 Subject: [PATCH 4/5] Fixes issue with cancelled auctions --- .../zora-graph/GraphAuctionDataSource.ts | 11 ++++++++--- .../ZoraIndexerV1DataSource.ts | 19 +++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/backends/zora-graph/GraphAuctionDataSource.ts b/src/backends/zora-graph/GraphAuctionDataSource.ts index a4eba0d..9260018 100644 --- a/src/backends/zora-graph/GraphAuctionDataSource.ts +++ b/src/backends/zora-graph/GraphAuctionDataSource.ts @@ -66,9 +66,6 @@ export class GraphAuctionDataSource implements GraphAuctionInterface { const currentObject: NFTObject = { rawData: {}, markets: [] }; const getStatus = () => { - if (!response.approved || (response.approved && response.firstBidTime === '0')) { - return 'pending'; - } if ( response.finalizedAtTimestamp && (!response.previousBids || response.previousBids?.length === 0) && @@ -76,6 +73,14 @@ export class GraphAuctionDataSource implements GraphAuctionInterface { ) { return 'cancelled'; } + if ( + !response.approved || + (response.approved && + (!response.previousBids || response.previousBids?.length === 0) && + !response.currentBid) + ) { + return 'pending'; + } if (response.finalizedAtTimestamp) { return 'complete'; } diff --git a/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts b/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts index e5abe14..4e7d5f2 100644 --- a/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts +++ b/src/backends/zora-indexer-v1/ZoraIndexerV1DataSource.ts @@ -235,12 +235,12 @@ function extractAskEvents(askEvents: V3EventPartFragment[]): TokenMarketEvent[] function extractAuction(auction: IndexerAuctionPartFragment) { const getStatus = () => { - if (!auction.approved || (auction.approved && !auction.firstBidTime)) { - return 'pending'; - } if (auction.canceledEvent) { return 'cancelled'; } + if (!auction.approved || (auction.approved && !auction.firstBidTime)) { + return 'pending'; + } if (auction.endedEvent) { return 'complete'; } @@ -330,7 +330,9 @@ function extractAuction(auction: IndexerAuctionPartFragment) { return resultAuction; } -function getTransferType(transferEvent: TokenTransferEventInfoFragment): TokenTransferEventType { +function getTransferType( + transferEvent: TokenTransferEventInfoFragment +): TokenTransferEventType { if (transferEvent.from === ZERO_ADDRESS) { return 'mint'; } @@ -340,7 +342,9 @@ function getTransferType(transferEvent: TokenTransferEventInfoFragment): TokenTr return 'transfer'; } -function extractTransferEvents(transferEvents: TokenTransferEventInfoFragment[]): TokenTransferEvent[] { +function extractTransferEvents( + transferEvents: TokenTransferEventInfoFragment[] +): TokenTransferEvent[] { return transferEvents.map((transferEvent) => ({ eventType: EventType.TokenTransferEvent, from: transferEvent.from, @@ -426,7 +430,10 @@ export class ZoraIndexerV1DataSource implements ZoraIndexerV1Interface { // extract auction events? if ('v3Events' in asset) { const assetFull: IndexerTokenWithAuctionDetailFragment = asset; - object.events = [...extractAskEvents(assetFull.v3Events), ...extractTransferEvents(assetFull.transferEvents)]; + object.events = [ + ...extractAskEvents(assetFull.v3Events), + ...extractTransferEvents(assetFull.transferEvents), + ]; } if (!object.rawData) { object.rawData = {}; From d526b0242c4d80462a6777d22d11a354a08e5811 Mon Sep 17 00:00:00 2001 From: Neokry Date: Thu, 24 Mar 2022 13:13:37 -0700 Subject: [PATCH 5/5] Fixes issues with ended auctions on graph data --- src/backends/zora-graph/GraphAuctionDataSource.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backends/zora-graph/GraphAuctionDataSource.ts b/src/backends/zora-graph/GraphAuctionDataSource.ts index 9260018..f645714 100644 --- a/src/backends/zora-graph/GraphAuctionDataSource.ts +++ b/src/backends/zora-graph/GraphAuctionDataSource.ts @@ -123,6 +123,12 @@ export class GraphAuctionDataSource implements GraphAuctionInterface { return addCurrencyInfo(response.currentBid.amount); } + // final bid + if (response.previousBids && response.previousBids.length) { + const finalBid = response.previousBids.find((bid) => bid.bidType === 'Final'); + return formatBid(finalBid).amount; + } + return addCurrencyInfo(response.reservePrice); }; @@ -143,7 +149,9 @@ export class GraphAuctionDataSource implements GraphAuctionInterface { return formatBid(response.currentBid); } if (response.previousBids && response.previousBids.length) { - const topBid = response.previousBids[response.previousBids.length - 1]; + const topBid = [...response.previousBids].sort( + (a, b) => parseInt(b.amount) - parseInt(a.amount) + )[0]; return formatBid(topBid); } return undefined;