Skip to content

Commit 07d521b

Browse files
authored
Merge pull request #2921 from IntersectMBO/fix/2920-backend-crashes-when-tries-to-fetch-proposals-that-drep-voted-on-that-does-not-exist
fix(#2920): fix unhandled exception on missing proposal for vote
2 parents b96c61f + 555f62a commit 07d521b

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ changes.
1717
### Fixed
1818

1919
- Fix calculating votes counting for governance actions
20+
- Fix crashing backend on unhandled missing proposal from vote [Issue 2920](https://github.com/IntersectMBO/govtool/issues/2920)
2021

2122
### Changed
2223

govtool/backend/src/VVA/API.hs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,19 @@ getVotes :: App m => HexText -> [GovernanceActionType] -> Maybe GovernanceAction
278278
getVotes (unHexText -> dRepId) selectedTypes sortMode mSearch = do
279279
CacheEnv {dRepGetVotesCache} <- asks vvaCache
280280
(votes, proposals) <- cacheRequest dRepGetVotesCache dRepId $ DRep.getVotes dRepId []
281+
281282
let voteMap = Map.fromList $ map (\vote@Types.Vote {..} -> (voteProposalId, vote)) votes
283+
282284
processedProposals <- filter (isProposalSearchedFor mSearch) <$> mapSortAndFilterProposals selectedTypes sortMode proposals
285+
283286
return $
284287
[ VoteResponse
285-
{ voteResponseVote = voteToResponse (voteMap Map.! read (unpack proposalResponseId))
288+
{ voteResponseVote = voteToResponse vote
286289
, voteResponseProposal = proposalResponse
287290
}
288291
| proposalResponse@ProposalResponse{proposalResponseId} <- processedProposals
292+
, let proposalIdInt = read (unpack proposalResponseId) :: Int
293+
, Just vote <- [Map.lookup (toInteger proposalIdInt) voteMap]
289294
]
290295

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

0 commit comments

Comments
 (0)