From 75f616185db9eb93bde20e8cca7753ae0b141b7a Mon Sep 17 00:00:00 2001 From: Aaron Boyle Date: Fri, 25 Jul 2025 14:45:21 +0100 Subject: [PATCH 1/5] Revert "Update DashboardGovernanceActions.tsx - lint checks fix" This reverts commit 74f6b97806f65c507de15ed436f6eac89387c6f5. --- .../src/components/organisms/DashboardGovernanceActions.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx b/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx index b2e6e6fa4..d7d7092db 100644 --- a/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx +++ b/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useCallback } from "react"; +import { useState, useEffect, useCallback, useMemo } from "react"; import { Box, CircularProgress, Tab, Tabs, styled } from "@mui/material"; import { useLocation, useNavigate } from "react-router-dom"; @@ -107,6 +107,10 @@ export const DashboardGovernanceActions = () => { debouncedSearchText, ); + // White Magic :) + const shouldFilter = + voter?.isRegisteredAsDRep || voter?.isRegisteredAsSoleVoter; + const filteredProposals = proposals; const { state } = useLocation(); From bbbcc939eb1d0c2587e58dec252b36da34a75eee Mon Sep 17 00:00:00 2001 From: Aaron Boyle Date: Fri, 25 Jul 2025 14:45:41 +0100 Subject: [PATCH 2/5] Revert "Update DashboardGovernanceActions.tsx - removes double filtering of proposals" This reverts commit 6f45eddc93ec38794e4cadd8d9b014a1280b9090. --- .../organisms/DashboardGovernanceActions.tsx | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx b/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx index d7d7092db..878527c02 100644 --- a/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx +++ b/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx @@ -111,7 +111,29 @@ export const DashboardGovernanceActions = () => { const shouldFilter = voter?.isRegisteredAsDRep || voter?.isRegisteredAsSoleVoter; -const filteredProposals = proposals; +const filteredProposals = useMemo(() => { + if (!shouldFilter || !proposals || !votes) return proposals; + + return proposals + .map((proposalCategory) => { + const filteredActions = proposalCategory.actions.filter((action) => { + const hasVote = votes.some((voteCategory) => + voteCategory.actions.some( + (voteAction) => + voteAction.proposal.txHash === action.txHash && + voteAction.proposal.index === action.index, + ), + ); + return !hasVote; + }); + + return { + ...proposalCategory, + actions: filteredActions, + }; + }) + .filter((category) => category.actions.length > 0); +}, [proposals, votes, shouldFilter]); const { state } = useLocation(); const [content, setContent] = useState( From 23a4cec991a5520ae27f001df8e4ed22e178596b Mon Sep 17 00:00:00 2001 From: bosko-m <88723596+bosko-m@users.noreply.github.com> Date: Fri, 25 Jul 2025 15:48:56 +0200 Subject: [PATCH 3/5] Update API.hs - test getvotes filtering with txhash+index Signed-off-by: bosko-m <88723596+bosko-m@users.noreply.github.com> --- govtool/backend/src/VVA/API.hs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/govtool/backend/src/VVA/API.hs b/govtool/backend/src/VVA/API.hs index ca7660358..baf1fd344 100644 --- a/govtool/backend/src/VVA/API.hs +++ b/govtool/backend/src/VVA/API.hs @@ -296,22 +296,22 @@ getVotes (unHexText -> dRepId) selectedTypes sortMode mSearch = do CacheEnv {dRepGetVotesCache} <- asks vvaCache (votes, proposals) <- cacheRequest dRepGetVotesCache dRepId $ DRep.getVotes dRepId [] - let voteMapByTxHash = Map.fromList $ - map (\vote -> (pack $ Prelude.takeWhile (/= '#') (unpack $ Types.voteGovActionId vote), vote)) votes + let voteMapById = Map.fromList $ + map (\vote -> (Types.voteGovActionId vote, vote)) votes processedProposals <- filter (isProposalSearchedFor mSearch) <$> mapSortAndFilterProposals selectedTypes sortMode proposals - return $ + return [ VoteResponse { voteResponseVote = voteToResponse vote , voteResponseProposal = proposalResponse } | proposalResponse <- processedProposals - , let txHash = unHexText (proposalResponseTxHash proposalResponse) - , Just vote <- [Map.lookup txHash voteMapByTxHash] + , let govActionId = unHexText (proposalResponseTxHash proposalResponse) <> "#" <> pack (show $ proposalResponseIndex proposalResponse) + , Just vote <- [Map.lookup govActionId voteMapById] ] - + drepInfo :: App m => HexText -> m DRepInfoResponse drepInfo (unHexText -> dRepId) = do CacheEnv {dRepInfoCache} <- asks vvaCache From 3ff45798a8460da2eb588b5f679f8f8d05e2ef14 Mon Sep 17 00:00:00 2001 From: bosko-m <88723596+bosko-m@users.noreply.github.com> Date: Fri, 25 Jul 2025 15:55:55 +0200 Subject: [PATCH 4/5] Update API.hs Signed-off-by: bosko-m <88723596+bosko-m@users.noreply.github.com> --- govtool/backend/src/VVA/API.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/govtool/backend/src/VVA/API.hs b/govtool/backend/src/VVA/API.hs index baf1fd344..5a3b88991 100644 --- a/govtool/backend/src/VVA/API.hs +++ b/govtool/backend/src/VVA/API.hs @@ -297,7 +297,7 @@ getVotes (unHexText -> dRepId) selectedTypes sortMode mSearch = do (votes, proposals) <- cacheRequest dRepGetVotesCache dRepId $ DRep.getVotes dRepId [] let voteMapById = Map.fromList $ - map (\vote -> (Types.voteGovActionId vote, vote)) votes + map (\vote -> (Types.voteGovActionId vote, vote)) votes processedProposals <- filter (isProposalSearchedFor mSearch) <$> mapSortAndFilterProposals selectedTypes sortMode proposals From 1069058417e6a16bfbc6571d9ab7321000582672 Mon Sep 17 00:00:00 2001 From: bosko-m <88723596+bosko-m@users.noreply.github.com> Date: Fri, 25 Jul 2025 16:03:24 +0200 Subject: [PATCH 5/5] Update API.hs - #3 Signed-off-by: bosko-m <88723596+bosko-m@users.noreply.github.com> --- govtool/backend/src/VVA/API.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/govtool/backend/src/VVA/API.hs b/govtool/backend/src/VVA/API.hs index 5a3b88991..06b9fd39f 100644 --- a/govtool/backend/src/VVA/API.hs +++ b/govtool/backend/src/VVA/API.hs @@ -297,7 +297,7 @@ getVotes (unHexText -> dRepId) selectedTypes sortMode mSearch = do (votes, proposals) <- cacheRequest dRepGetVotesCache dRepId $ DRep.getVotes dRepId [] let voteMapById = Map.fromList $ - map (\vote -> (Types.voteGovActionId vote, vote)) votes + map (\vote -> (Types.voteGovActionId vote, vote)) votes processedProposals <- filter (isProposalSearchedFor mSearch) <$> mapSortAndFilterProposals selectedTypes sortMode proposals