1
1
import "server-only" ;
2
2
3
3
import {
4
- HypercertClaimdata ,
5
4
HypercertClient ,
6
- type HypercertMetadata ,
7
5
} from "@hypercerts-org/sdk" ;
8
6
import { Mutex } from "async-mutex" ;
9
7
10
8
import type { Report } from "@/types" ;
11
9
import { getCMSReports , getFundedAmountByHCId } from "./directus" ;
12
10
import { getOrders } from "./marketplace" ;
13
11
import { delay } from "./utils" ;
14
- import { getHypercertsByCreator } from "@/hypercerts/getHypercertsByCreator" ;
15
12
import { getHypercertsByOwner } from "@/hypercerts/getHypercertsByOwner" ;
16
13
import { FragmentOf } from "gql.tada" ;
17
14
@@ -61,38 +58,19 @@ export const fetchReports = async (): Promise<Report[]> => {
61
58
// step 3: get orders from marketplace
62
59
const orders = await getOrders ( _reports ) ;
63
60
64
- // TODO: remove this when we don't need dummy order
65
- if ( process . env . DEPLOY_ENV === "production" ) {
66
- const orderMap = new Map ( orders . map ( order => [ order ?. hypercertId , order ] ) ) ;
67
-
68
-
69
- reports = _reports . map ( report => {
70
- const order = orderMap . get ( report . hypercertId ) ;
71
- if ( order ) {
72
- report . order = order ;
73
- } else if ( report . fundedSoFar < report . totalCost ) {
74
- console . warn ( `[server] No order found for hypercert ${ report . hypercertId } ` ) ;
75
- }
76
- return report ;
77
- } ) ;
78
-
79
- } else {
80
- reports = _reports . map ( ( report ) => {
81
- for ( const order of orders ) {
82
- if ( order ) {
83
- report . order = order ;
84
- break ;
85
- }
86
- }
87
- // warn if there is no order for a report that is not fully funded
88
- if ( ! report . order && report . fundedSoFar < report . totalCost ) {
89
- console . warn (
90
- `[server] No order found for hypercert ${ report . hypercertId } ` ,
91
- ) ;
92
- }
93
- return report ;
94
- } ) ;
95
- }
61
+ const orderMap = new Map ( orders . map ( order => [ order ?. hypercertId , order ] ) ) ;
62
+
63
+
64
+ reports = _reports . map ( report => {
65
+ const order = orderMap . get ( report . hypercertId ) ;
66
+ if ( order ) {
67
+ report . order = order ;
68
+ } else if ( report . fundedSoFar < report . totalCost ) {
69
+ console . warn ( `[server] No order found for hypercert ${ report . hypercertId } ` ) ;
70
+ }
71
+ return report ;
72
+ } ) ;
73
+
96
74
console . log ( `[server] total fetched reports: ${ reports . length } ` ) ;
97
75
}
98
76
@@ -111,7 +89,7 @@ export const fetchReports = async (): Promise<Report[]> => {
111
89
*/
112
90
export const fetchReportBySlug = async ( slug : string ) : Promise < Report > => {
113
91
try {
114
- const reports = await fetchReports ( ) ;
92
+ let reports = await getReports ( ) ;
115
93
116
94
const foundReport = reports . find ( ( report : Report ) => report . slug === slug ) ;
117
95
if ( ! foundReport ) {
@@ -129,9 +107,9 @@ export const fetchReportByHCId = async (
129
107
hypercertId : string ,
130
108
) : Promise < Report > => {
131
109
try {
132
- const reports = await fetchReports ( ) ;
110
+ let reports = await getReports ( ) ;
133
111
134
- const foundReport = reports . find (
112
+ const foundReport = reports ? .find (
135
113
( report : Report ) => report . hypercertId === hypercertId ,
136
114
) ;
137
115
if ( ! foundReport ) {
@@ -148,11 +126,8 @@ export const fetchReportByHCId = async (
148
126
}
149
127
} ;
150
128
151
- export const getReports = ( ) : Report [ ] => {
152
- if ( reports ) {
153
- return reports ;
154
- }
155
- return [ ] ;
129
+ export const getReports = async ( ) : Promise < Report [ ] > => {
130
+ return reports ? reports ?? [ ] as Report [ ] : await fetchReports ( ) ;
156
131
} ;
157
132
158
133
/**
@@ -277,7 +252,6 @@ const updateReports = async (): Promise<Report[]> => {
277
252
title : claim ?. metadata ?. name ,
278
253
summary : claim ?. metadata ?. description ,
279
254
image : "https://directus.voicedeck.org/assets/" + cmsReport . image ,
280
- originalReportUrl : claim ?. metadata ?. external_url ,
281
255
category : claim ?. metadata ?. work_scope ?. [ 0 ] ,
282
256
workTimeframe : `${ ( new Date ( Number ( claim . metadata ?. work_timeframe_from ) * 1000 ) ) . toLocaleDateString ( ) } - ${ ( new Date ( Number ( claim . metadata ?. work_timeframe_to ) * 1000 ) ) . toLocaleDateString ( ) } ` ,
283
257
impactScope : claim ?. metadata ?. impact_scope ?. [ 0 ] ,
@@ -298,6 +272,7 @@ const updateReports = async (): Promise<Report[]> => {
298
272
dateUpdated : cmsReport . date_updated ,
299
273
byline : cmsReport . byline ,
300
274
totalCost : Number ( cmsReport . total_cost ) ,
275
+ originalReportUrl : cmsReport . original_report_url ,
301
276
fundedSoFar : await getFundedAmountByHCId ( claim . hypercert_id as string ) ,
302
277
} as Report ;
303
278
} ) ;
@@ -327,7 +302,7 @@ export const updateFundedAmount = async (
327
302
const release = await reportsMutex . acquire ( ) ;
328
303
329
304
try {
330
- const reports = getReports ( ) ;
305
+ const reports = await getReports ( ) ;
331
306
const report = reports . find ( ( r ) => r . hypercertId === hypercertId ) ;
332
307
if ( report ) {
333
308
report . fundedSoFar += amount ;
0 commit comments