Skip to content

Feature/prevent duplicate ballots#154

Merged
freshfish70 merged 4 commits intodevelopfrom
feature/prevent-duplicate-ballots
Apr 13, 2021
Merged

Feature/prevent duplicate ballots#154
freshfish70 merged 4 commits intodevelopfrom
feature/prevent-duplicate-ballots

Conversation

@freshfish70
Copy link
Copy Markdown
Member

@freshfish70 freshfish70 commented Apr 9, 2021

closes #147

Comment on lines +29 to +51
if (room.ballots.has(ballotId)) {
// All voters that has voted on this ballot
const ballotVotes = room.ballots.get(ballotId)?.voters
if (ballotVotes?.size == 0) {
// Send to all as no one has voted on the ballot
event.server.to(electionId.toString()).emit(Events.server.ballot.push, ballot)
} else {
// Get all socket IDs for the socket room that the ballot belongs to
const roomSocketIds = event.server.of('/').adapter.rooms.get(electionId.toString())
roomSocketIds?.forEach((socketId) => {
const socket = event.server.sockets.sockets.get(socketId) as VoterSocket | undefined
// If the voter socket exist and the voter id for that socket has not voted on the ballot yet
if (socket && ballotVotes && !ballotVotes.has(socket.voterId)) {
// Emit the ballot only to those that has not voter on the ballot yet
socket.emit(Events.server.ballot.push, ballot)
}
})
}
} else {
// Create ballot stats and voter set for the new ballot
room.ballots.set(ballotId, { stats: new BallotVoteStats(ballot), voters: new Set() })
// Broadcast to all since this ballot has not been created before now
event.server.to(electionId.toString()).emit(Events.server.ballot.push, ballot)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does alot and is hard to read what is going on, consider refactoring it

@freshfish70 freshfish70 merged commit cad4e9a into develop Apr 13, 2021
@freshfish70 freshfish70 deleted the feature/prevent-duplicate-ballots branch April 13, 2021 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Prevents ballots from being sent to voters that has already voted on that ballot.

2 participants