diff --git a/modules/dashboard/ui/DashboardGrid/DashboardGrid.tsx b/modules/dashboard/ui/DashboardGrid/DashboardGrid.tsx index 55889c43..265abe6f 100644 --- a/modules/dashboard/ui/DashboardGrid/DashboardGrid.tsx +++ b/modules/dashboard/ui/DashboardGrid/DashboardGrid.tsx @@ -12,6 +12,8 @@ import { ContractVoting } from 'modules/blockChain/contracts' import { getVoteStatus } from 'modules/votes/utils/getVoteStatus' import { getEventStartVote } from 'modules/votes/utils/getEventVoteStart' import * as urls from 'modules/network/utils/urls' +import { fetcherIPFS } from 'modules/network/utils/fetcherIPFS' +import { REGEX_LIDO_VOTE_CID } from 'modules/shared/utils/regexCID' const PAGE_SIZE = 20 @@ -87,7 +89,26 @@ export function DashboardGrid({ currentPage }: Props) { const votesWithEvents = await Promise.all(eventsPromises) - return votesWithEvents + const ipfsPromises = votesWithEvents.map(dataItem => { + const fetch = async () => { + const { metadata } = dataItem.eventStart + const cid = metadata.match(REGEX_LIDO_VOTE_CID)?.[1] + + // error with description should not block UI + const description = await (cid + ? fetcherIPFS(cid).catch(() => '') + : Promise.resolve('')) + return { + ...dataItem, + description, + } + } + return fetch() + }) + + const votesWithEventsAndDescription = await Promise.all(ipfsPromises) + + return votesWithEventsAndDescription }, ) diff --git a/modules/dashboard/ui/DashboardVote/DashboardVote.tsx b/modules/dashboard/ui/DashboardVote/DashboardVote.tsx index 58450a2e..502d55bd 100644 --- a/modules/dashboard/ui/DashboardVote/DashboardVote.tsx +++ b/modules/dashboard/ui/DashboardVote/DashboardVote.tsx @@ -5,16 +5,16 @@ import Link from 'next/link' import { VoteStatusBanner } from 'modules/votes/ui/VoteStatusBanner' import { VoteYesNoBar } from 'modules/votes/ui/VoteYesNoBar' import { InfoRowFull } from 'modules/shared/ui/Common/InfoRow' -import { VoteMetadataDescription } from 'modules/votes/ui/VoteMetadataDescription' +import { VoteDescription } from 'modules/votes/ui/VoteDescription' + import { Wrap, VoteBody, VoteTitle, - VoteDescription, + VoteDescriptionWrap, VotesBarWrap, Footer, } from './DashboardVoteStyle' - import type { StartVoteEventObject } from 'generated/AragonVotingAbi' import { Vote, VoteStatus } from 'modules/votes/types' import { weiToNum } from 'modules/blockChain/utils/parseWei' @@ -30,6 +30,7 @@ type Props = { voteTime: number objectionPhaseTime: number onPass: () => void + description: string } export function DashboardVote({ @@ -40,6 +41,7 @@ export function DashboardVote({ voteTime, objectionPhaseTime, onPass, + description, }: Props) { const { nayPct, @@ -97,11 +99,9 @@ export function DashboardVote({ Vote #{voteId} - {metadata && ( - - - - )} + + +