diff --git a/src/components/ProjectCard.tsx b/src/components/ProjectCard.tsx index 5f96ca43ce..5b8acc8ff4 100644 --- a/src/components/ProjectCard.tsx +++ b/src/components/ProjectCard.tsx @@ -21,7 +21,7 @@ export default function ProjectCard({ project, bookmarked, }: { - project?: SubgraphQueryProject + project?: SubgraphQueryProject & { chainId?: number } bookmarked?: boolean }) { const { data: metadata } = useProjectMetadata(project?.metadataUri) @@ -57,7 +57,7 @@ export default function ProjectCard({ : `/p/${handle}` const projectCardUrl = - pv === PV_V4 + pv === PV_V4 && chainId ? v4ProjectRoute({ projectId, chainId, diff --git a/src/lib/api/supabase/projects/api.ts b/src/lib/api/supabase/projects/api.ts index e0669a8c9c..499d6a5165 100644 --- a/src/lib/api/supabase/projects/api.ts +++ b/src/lib/api/supabase/projects/api.ts @@ -8,6 +8,7 @@ import { QueryProjectsArgs, } from 'generated/graphql' +import { readNetwork } from 'constants/networks' import { paginateDepleteQuery } from 'lib/apollo/paginateDepleteQuery' import { serverClient, v4SepoliaServerClient } from 'lib/apollo/serverClient' import { DBProject, DBProjectQueryOpts, SGSBCompareKey } from 'models/dbProject' @@ -43,7 +44,12 @@ export async function queryAllSGProjectsForServer() { ]) // Response must be retyped with Json<>, because the serverClient does not perform the parsing expected by generated types - const _res = res as unknown as Json>[] + const _res = res.map(p => { + return { + ...p, + chainId: readNetwork.chainId, + } + }) as unknown as Json>[] const _resSepoliaV4 = resSepoliaV4.map(p => { return { ...p, @@ -52,7 +58,7 @@ export async function queryAllSGProjectsForServer() { metadataUri: p.metadata, chainId: sepolia.id, } - }) as unknown as Json>[] + }) as unknown as Json>[] return [..._res, ..._resSepoliaV4].map(formatSGProjectForDB) } diff --git a/src/models/dbProject.ts b/src/models/dbProject.ts index 4bdd1ecec9..91a07158b4 100644 --- a/src/models/dbProject.ts +++ b/src/models/dbProject.ts @@ -4,8 +4,8 @@ import { Database } from 'types/database.types' import { Project } from 'generated/graphql' import { ProjectTagName } from './project-tags' import { PV } from './pv' - -export type SGSBCompareKey = Extract +type P = Project & { chainId: number } +export type SGSBCompareKey = Extract /** * @param text Text to use for string search diff --git a/src/pages/api/projects/health.ts b/src/pages/api/projects/health.ts index b8e38f3cf6..a2895a6fa3 100644 --- a/src/pages/api/projects/health.ts +++ b/src/pages/api/projects/health.ts @@ -36,7 +36,9 @@ const handler: NextApiHandler = async (_, res) => { (await paginateDepleteQuery({ client: serverClient, document: DbProjectsDocument, - })) as unknown as Json>[] + })) as unknown as Json< + Pick + >[] ).map(formatSGProjectForDB) report += `\n\n${dbProjectsCount} projects in database` diff --git a/src/utils/sgDbProjects.ts b/src/utils/sgDbProjects.ts index a2a2a41cc5..7657765023 100644 --- a/src/utils/sgDbProjects.ts +++ b/src/utils/sgDbProjects.ts @@ -83,6 +83,7 @@ export function parseDBProjectsRow(p: DBProjectRow): Json { paymentsCount: p.payments_count, projectId: p.project_id, pv: p.pv as PV, + chainId: p.chain_id, redeemCount: p.redeem_count, redeemVolume: p.redeem_volume, redeemVolumeUSD: p.redeem_voume_usd, @@ -152,7 +153,7 @@ export function formatSgProjectsForUpdate({ retryIpfs, returnAllProjects, }: { - sgProjects: Json>[] + sgProjects: Json>[] dbProjects: Record> retryIpfs?: boolean returnAllProjects?: boolean @@ -243,7 +244,7 @@ export async function formatWithMetadata({ sgProject, dbProject, }: { - sgProject: Json> + sgProject: Json> dbProject: | Pick< DBProject, @@ -351,8 +352,8 @@ function padBigNumForSort(bn: string) { } export function formatSGProjectForDB( - p: Json>, -): Json> { + p: Json>, +): Json> { return { ...p, // Adjust BigNumber values before we compare them to database values