Skip to content

Commit fcf3c4a

Browse files
Filtering already voted proposal by hash adn index
1 parent eebaba3 commit fcf3c4a

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

govtool/backend/src/VVA/API.hs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -296,20 +296,20 @@ getVotes (unHexText -> dRepId) selectedTypes sortMode mSearch = do
296296
CacheEnv {dRepGetVotesCache} <- asks vvaCache
297297
(votes, proposals) <- cacheRequest dRepGetVotesCache dRepId $ DRep.getVotes dRepId []
298298

299-
let voteMapById = Map.fromList $
300-
map (\vote -> (Types.voteGovActionId vote, vote)) votes
299+
let voteMapByTxHash = Map.fromList $
300+
map (\vote -> (pack $ Prelude.takeWhile (/= '#') (unpack $ Types.voteGovActionId vote), vote)) votes
301301

302302
processedProposals <- filter (isProposalSearchedFor mSearch) <$>
303303
mapSortAndFilterProposals selectedTypes sortMode proposals
304304

305-
return
305+
return $
306306
[ VoteResponse
307307
{ voteResponseVote = voteToResponse vote
308308
, voteResponseProposal = proposalResponse
309309
}
310310
| proposalResponse <- processedProposals
311-
, let govActionId = unHexText (proposalResponseTxHash proposalResponse) <> "#" <> pack (show $ proposalResponseIndex proposalResponse)
312-
, Just vote <- [Map.lookup govActionId voteMapById]
311+
, let txHash = unHexText (proposalResponseTxHash proposalResponse)
312+
, Just vote <- [Map.lookup txHash voteMapByTxHash]
313313
]
314314

315315
drepInfo :: App m => HexText -> m DRepInfoResponse
@@ -401,9 +401,12 @@ listProposals selectedTypes sortMode mPage mPageSize mDrepRaw mSearchQuery = do
401401
-- proposals that the provided Drep has already voted on should be filtered out
402402
proposalsToRemove <- case mDrepRaw of
403403
Nothing -> return []
404-
Just drepId ->
405-
map (voteParamsProposalId . voteResponseVote)
406-
<$> getVotes drepId [] Nothing Nothing
404+
Just drepId -> do
405+
votes <- getVotes drepId [] Nothing Nothing
406+
return
407+
[ (proposalResponseTxHash p, proposalResponseIndex p)
408+
| VoteResponse{voteResponseProposal = p} <- votes
409+
]
407410

408411
CacheEnv {proposalListCache} <- asks vvaCache
409412

@@ -412,9 +415,9 @@ listProposals selectedTypes sortMode mPage mPageSize mDrepRaw mSearchQuery = do
412415

413416
mappedSortedAndFilteredProposals <- mapSortAndFilterProposals selectedTypes sortMode proposals
414417
let filteredProposals = filter
415-
( \p@ProposalResponse {proposalResponseId} ->
416-
proposalResponseId `notElem` proposalsToRemove
417-
&& isProposalSearchedFor mSearchQuery p
418+
(\p@ProposalResponse{proposalResponseTxHash, proposalResponseIndex} ->
419+
(proposalResponseTxHash, proposalResponseIndex) `notElem` proposalsToRemove
420+
&& isProposalSearchedFor mSearchQuery p
418421
) mappedSortedAndFilteredProposals
419422

420423
let total = length filteredProposals :: Int

0 commit comments

Comments
 (0)