@@ -10,9 +10,6 @@ import { Order } from "../typeDefs/orderTypeDefs.js";
1010import { GetOrdersArgs } from "../args/orderArgs.js" ;
1111import { getHypercertTokenId } from "../../../utils/tokenIds.js" ;
1212import { getAddress } from "viem" ;
13- import { HypercertExchangeClient } from "@hypercerts-org/marketplace-sdk" ;
14- import { ethers } from "ethers" ;
15- import { getRpcUrl } from "../../../utils/getRpcUrl.js" ;
1613import { addPriceInUsdToOrder } from "../../../utils/addPriceInUSDToOrder.js" ;
1714import _ from "lodash" ;
1815import { createBaseResolver , DataResponse } from "./baseTypes.js" ;
@@ -25,29 +22,20 @@ const OrderBaseResolver = createBaseResolver("order");
2522@Resolver ( ( ) => Order )
2623class OrderResolver extends OrderBaseResolver {
2724 @Query ( ( ) => GetOrdersResponse )
28- async orders ( @Args ( ) args : GetOrdersArgs ) {
25+ async orders ( @Args ( ) args : GetOrdersArgs , single : boolean = false ) {
2926 try {
30- const res = await this . supabaseDataService . getOrders ( args ) ;
27+ const ordersRes = await this . getOrders ( args , single ) ;
3128
32- const { data : orders , error , count } = res ;
33-
34- if ( error ) {
35- console . warn ( `[OrderResolver::orders] Error fetching orders: ` , error ) ;
36- return { orders } ;
29+ if ( ! ordersRes ) {
30+ return {
31+ data : [ ] ,
32+ count : 0 ,
33+ } ;
3734 }
3835
39- const groupedOrders = orders . reduce (
40- ( acc , order ) => {
41- if ( ! acc [ order . chainId ] ) {
42- acc [ order . chainId ] = [ ] ;
43- }
44- acc [ order . chainId ] . push ( order ) ;
45- return acc ;
46- } ,
47- { } as Record < string , ( typeof orders ) [ number ] [ ] > ,
48- ) ;
36+ const { data, count } = ordersRes ;
4937
50- const allHypercertIds = _ . uniq ( orders . map ( ( order ) => order . hypercert_id ) ) ;
38+ const allHypercertIds = _ . uniq ( data . map ( ( order ) => order . hypercert_id ) ) ;
5139 // TODO: Update this once array filters are available
5240 const allHypercerts = await Promise . all (
5341 allHypercertIds . map ( async ( hypercertId ) => {
@@ -69,44 +57,8 @@ class OrderResolver extends OrderBaseResolver {
6957 ) ,
7058 ) ;
7159
72- const ordersAfterCheckingValidity = await Promise . all (
73- Object . entries ( groupedOrders ) . map ( async ( [ chainId , ordersForChain ] ) => {
74- const chainIdParsed = parseInt ( chainId ) ;
75- const hypercertExchangeClient = new HypercertExchangeClient (
76- chainIdParsed ,
77- // @ts -expect-error - TODO: fix these types
78- new ethers . JsonRpcProvider ( getRpcUrl ( chainIdParsed ) ) ,
79- ) ;
80-
81- const validityResults =
82- await hypercertExchangeClient . checkOrdersValidity (
83- ordersForChain . filter ( ( order ) => ! order . invalidated ) ,
84- ) ;
85- const tokenIdsWithInvalidOrder = validityResults
86- . filter ( ( result ) => ! result . valid )
87- . map ( ( result ) => BigInt ( result . order . itemIds [ 0 ] ) ) ;
88- if ( tokenIdsWithInvalidOrder . length ) {
89- console . log (
90- "[OrderResolver::orders]:: Found invalid orders" ,
91- tokenIdsWithInvalidOrder ,
92- ) ;
93- // Fire off the validation but don't wait for it to finish
94- this . supabaseDataService . validateOrdersByTokenIds ( {
95- tokenIds : tokenIdsWithInvalidOrder . map ( ( id ) => id . toString ( ) ) ,
96- chainId : chainIdParsed ,
97- } ) ;
98- }
99- return ordersForChain . map ( ( order ) => {
100- if ( tokenIdsWithInvalidOrder . includes ( BigInt ( order . itemIds [ 0 ] ) ) ) {
101- return { ...order , invalidated : true } ;
102- }
103- return order ;
104- } ) ;
105- } ) ,
106- ) . then ( ( res ) => res . flat ( ) ) ;
107-
10860 const ordersWithPrices = await Promise . all (
109- orders . map ( async ( order ) => {
61+ data . map ( async ( order ) => {
11062 const hypercert = allHypercerts [ order . hypercert_id . toLowerCase ( ) ] ;
11163 if ( ! hypercert ?. units ) {
11264 console . warn (
@@ -120,11 +72,11 @@ class OrderResolver extends OrderBaseResolver {
12072
12173 return {
12274 data : ordersWithPrices ,
123- count : count ? count : ordersAfterCheckingValidity ?. length ,
75+ count : count ? count : ordersWithPrices ?. length ,
12476 } ;
12577 } catch ( e ) {
12678 throw new Error (
127- `[ContractResolver ::orders] Error fetching orders: ${ ( e as Error ) . message } ` ,
79+ `[OrderResolver ::orders] Error fetching orders: ${ ( e as Error ) . message } ` ,
12880 ) ;
12981 }
13082 }
0 commit comments