diff --git a/packages/data-layer/src/data-layer.ts b/packages/data-layer/src/data-layer.ts index 21615b3ef3..04f77d5a09 100644 --- a/packages/data-layer/src/data-layer.ts +++ b/packages/data-layer/src/data-layer.ts @@ -803,25 +803,27 @@ export class DataLayer { }, ); - return response.donations - .filter((donation) => { + // Filter out invalid donations and map the project metadata from application metadata (solution for canonical projects in indexer v2) + const validDonations = response.donations.reduce( + (validDonations, donation) => { if (donation.round.strategyName !== "allov2.DirectAllocationStrategy") { - return ( - donation.application !== null && - donation.application?.project !== null - ); + if (donation.application?.project) { + donation.application.project.metadata = + donation.application.metadata.application.project; + + validDonations.push(donation); + } } else { - return ( - // DirectAllocationStrategy donations are not linked to applications - donation.application === null - ); + if (donation.application === null) { + validDonations.push(donation); + } } - }) - .map((donation) => { - donation.application.project.metadata = - donation.application.metadata.application.project; - return donation; - }); + return validDonations; + }, + [], + ); + + return validDonations; } async getPayoutsByChainIdRoundIdProjectId(args: { diff --git a/packages/data-layer/src/data.types.ts b/packages/data-layer/src/data.types.ts index 7876eacf28..28d5d14d1f 100644 --- a/packages/data-layer/src/data.types.ts +++ b/packages/data-layer/src/data.types.ts @@ -789,7 +789,7 @@ export type Contribution = { donationsEndTime: string; strategyName: RoundPayoutType; }; - application: { + application?: { metadata: { application: { project: ProjectMetadata & { id: string }; diff --git a/packages/grant-explorer/src/features/contributors/components/RoundAccordion/RoundAccordionContribution.tsx b/packages/grant-explorer/src/features/contributors/components/RoundAccordion/RoundAccordionContribution.tsx index bb33f2bfff..ee55b12fc9 100644 --- a/packages/grant-explorer/src/features/contributors/components/RoundAccordion/RoundAccordionContribution.tsx +++ b/packages/grant-explorer/src/features/contributors/components/RoundAccordion/RoundAccordionContribution.tsx @@ -11,7 +11,7 @@ export function RoundAccordionContribution({ }) { const { chainId, roundId, applicationId, amount } = contribution; - const projectName = contribution.application.project.name; + const projectName = contribution.application?.project.name; const amountInUsd = contribution.amountInUsd.toFixed(2); const linkToRound = `/round/${chainId}/${roundId.toString().toLowerCase()}/${applicationId}`;