Show aggregated votes (#95)

This commit is contained in:
Szymon Szlachtowicz 2021-07-07 14:11:54 +02:00 committed by GitHub
parent 3e7c27cff8
commit abe8dd749b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 3 deletions

View File

@ -19,6 +19,7 @@ import { VoteAnimatedModal } from './card/VoteAnimatedModal'
import voting from '../helpers/voting'
import { DetailedVotingRoom } from '../models/smartContract'
import { VoteSubmitButton } from './card/VoteSubmitButton'
import { useRoomAggregateVotes } from '../hooks/useRoomAggregateVotes'
interface CardCommunityProps {
community: CommunityDetail
@ -122,8 +123,10 @@ export const CardVote = ({ room, hideModalFunction }: CardVoteProps) => {
const { votingContract } = useContracts()
room = useRoomAggregateVotes(room, showConfirmModal)
const finalizeVoting = useContractFunction(votingContract, 'finalizeVotingRoom')
const community = room.details
const setNext = (val: boolean) => {
setShowConfirmModal(val)
setShowVoteModal(false)
@ -152,7 +155,7 @@ export const CardVote = ({ room, hideModalFunction }: CardVoteProps) => {
return (
<CardVoteBlock>
{showVoteModal && (
<Modal heading={`${vote?.type} ${community.name}?`} setShowModal={setShowVoteModal}>
<Modal heading={`${vote?.type} ${room.details.name}?`} setShowModal={setShowVoteModal}>
<VoteModal
vote={vote}
room={room.roomNumber}
@ -168,7 +171,7 @@ export const CardVote = ({ room, hideModalFunction }: CardVoteProps) => {
<Modal setShowModal={hideConfirm}>
<VoteAnimatedModal
vote={vote}
community={community}
community={room.details}
selectedVote={selectedVoted}
setShowModal={hideConfirm}
proposingAmount={proposingAmount}

View File

@ -0,0 +1,19 @@
import { DetailedVotingRoom } from '../models/smartContract'
import { useVotesAggregate } from './useVotesAggregate'
export function useRoomAggregateVotes(room: DetailedVotingRoom, showConfirmModal: boolean) {
const { votes } = useVotesAggregate(room.roomNumber)
if (room.endAt.toNumber() * 1000 > Date.now() && showConfirmModal === false) {
const reducedVotes = votes.reduce(
(accumulator, vote) => {
if (vote[1].mod(2).toNumber()) {
return { for: accumulator.for.add(vote[2]), against: accumulator.against }
}
return { for: accumulator.for, against: accumulator.against.add(vote[2]) }
},
{ for: room.totalVotesFor, against: room.totalVotesAgainst }
)
room = { ...room, totalVotesAgainst: reducedVotes.against, totalVotesFor: reducedVotes.for }
}
return room
}