Skip to content

Commit 472834c

Browse files
committed
fix: filtering drep votes
1 parent 30d2e5c commit 472834c

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

govtool/backend/src/VVA/API.hs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -283,18 +283,20 @@ getVotes (unHexText -> dRepId) selectedTypes sortMode mSearch = do
283283
CacheEnv {dRepGetVotesCache} <- asks vvaCache
284284
(votes, proposals) <- cacheRequest dRepGetVotesCache dRepId $ DRep.getVotes dRepId []
285285

286-
let voteMap = Map.fromList $ map (\vote@Types.Vote {..} -> (voteProposalId, vote)) votes
287-
288-
processedProposals <- filter (isProposalSearchedFor mSearch) <$> mapSortAndFilterProposals selectedTypes sortMode proposals
289-
286+
let voteMapByTxHash = Map.fromList $
287+
map (\vote -> (pack $ Prelude.takeWhile (/= '#') (unpack $ Types.voteGovActionId vote), vote)) votes
288+
289+
processedProposals <- filter (isProposalSearchedFor mSearch) <$>
290+
mapSortAndFilterProposals selectedTypes sortMode proposals
291+
290292
return $
291293
[ VoteResponse
292294
{ voteResponseVote = voteToResponse vote
293295
, voteResponseProposal = proposalResponse
294296
}
295-
| proposalResponse@ProposalResponse{proposalResponseId} <- processedProposals
296-
, let proposalIdInt = read (unpack proposalResponseId) :: Int
297-
, Just vote <- [Map.lookup (toInteger proposalIdInt) voteMap]
297+
| proposalResponse <- processedProposals
298+
, let txHash = unHexText (proposalResponseTxHash proposalResponse)
299+
, Just vote <- [Map.lookup txHash voteMapByTxHash]
298300
]
299301

300302
drepInfo :: App m => HexText -> m DRepInfoResponse

govtool/backend/src/VVA/DRep.hs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,24 +115,22 @@ getVotes ::
115115
m ([Vote], [Proposal])
116116
getVotes drepId selectedProposals = withPool $ \conn -> do
117117
results <- liftIO $ SQL.query conn getVotesSql (SQL.Only drepId)
118-
118+
119119
if null results
120120
then return ([], [])
121121
else do
122122
let proposalsToSelect = if null selectedProposals
123123
then [ govActionId | (_, govActionId, _, _, _, _, _, _, _) <- results]
124124
else selectedProposals
125-
126125
allProposals <- mapM (Proposal.getProposals . Just . (:[])) proposalsToSelect
127-
128126
let proposals = concat allProposals
129127

130128
let proposalMap = M.fromList $ map (\x -> (proposalId x, x)) proposals
131129

132130
timeZone <- liftIO getCurrentTimeZone
133131

134132
let votes =
135-
[ Vote proposalId' drepId' vote' url' docHash' epochNo' (localTimeToUTC timeZone date') voteTxHash'
133+
[ Vote proposalId' govActionId' drepId' vote' url' docHash' epochNo' (localTimeToUTC timeZone date') voteTxHash'
136134
| (proposalId', govActionId', drepId', vote', url', docHash', epochNo', date', voteTxHash') <- results
137135
, govActionId' `elem` proposalsToSelect
138136
]

govtool/backend/src/VVA/Types.hs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,15 @@ instance Exception AppError
6161

6262
data Vote
6363
= Vote
64-
{ voteProposalId :: Integer
65-
, voteDrepId :: Text
66-
, voteVote :: Text
67-
, voteUrl :: Maybe Text
68-
, voteDocHash :: Maybe Text
69-
, voteEpochNo :: Integer
70-
, voteDate :: UTCTime
71-
, voteTxHash :: Text
64+
{ voteProposalId :: Integer
65+
, voteGovActionId :: Text
66+
, voteDrepId :: Text
67+
, voteVote :: Text
68+
, voteUrl :: Maybe Text
69+
, voteDocHash :: Maybe Text
70+
, voteEpochNo :: Integer
71+
, voteDate :: UTCTime
72+
, voteTxHash :: Text
7273
}
7374

7475
data DRepInfo

0 commit comments

Comments
 (0)