From 2cd3de1475bc6da6be6ae80ea1a23bc5cc8fe9c5 Mon Sep 17 00:00:00 2001
From: Szymon Szlachtowicz <38212223+Szymx95@users.noreply.github.com>
Date: Tue, 27 Jul 2021 12:41:03 +0200
Subject: [PATCH] Fix mobile vote animations (#163)
---
packages/DApp/package.json | 2 +-
.../src/componentsMobile/CardVoteMobile.tsx | 32 +++++++++++++++----
.../src/componentsMobile/VotingCardCover.tsx | 2 ++
yarn.lock | 27 ++++++++++------
4 files changed, 46 insertions(+), 17 deletions(-)
diff --git a/packages/DApp/package.json b/packages/DApp/package.json
index 89c82e0..c466c43 100644
--- a/packages/DApp/package.json
+++ b/packages/DApp/package.json
@@ -19,7 +19,7 @@
"buffer": "^6.0.3",
"crypto-browserify": "^3.12.0",
"humanize-duration": "^3.27.0",
- "js-waku": "^0.8.1",
+ "js-waku": "^0.9.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^5.2.0",
diff --git a/packages/DApp/src/componentsMobile/CardVoteMobile.tsx b/packages/DApp/src/componentsMobile/CardVoteMobile.tsx
index c6b795d..a7bacfc 100644
--- a/packages/DApp/src/componentsMobile/CardVoteMobile.tsx
+++ b/packages/DApp/src/componentsMobile/CardVoteMobile.tsx
@@ -1,5 +1,5 @@
import { useContractFunction, useEthers } from '@usedapp/core'
-import React, { useState } from 'react'
+import React, { useEffect, useState } from 'react'
import styled from 'styled-components'
import { VotesBtns, VoteBtn } from '../components/Button'
import { CardVoteBlock, CardHeading } from '../components/Card'
@@ -21,12 +21,14 @@ import { DetailedVotingRoom } from '../models/smartContract'
import arrowDown from '../assets/images/arrowDown.svg'
import { useSendWakuVote } from '../hooks/useSendWakuVote'
import { WrapperBottom, WrapperTop } from '../constants/styles'
+import { useRoomAggregateVotes } from '../hooks/useRoomAggregateVotes'
interface CardVoteMobileProps {
room: DetailedVotingRoom
}
export const CardVoteMobile = ({ room }: CardVoteMobileProps) => {
+ const [vote, setVote] = useState(voting.fromRoom(room))
const { account } = useEthers()
const selectedVoted = voteTypes['Add'].for
@@ -34,8 +36,7 @@ export const CardVoteMobile = ({ room }: CardVoteMobileProps) => {
const { votingContract } = useContracts()
const finalizeVoting = useContractFunction(votingContract, 'finalizeVotingRoom')
-
- const vote = voting.fromRoom(room)
+ room = useRoomAggregateVotes(room, false)
const voteConstants = voteTypes[vote.type]
@@ -49,10 +50,13 @@ export const CardVoteMobile = ({ room }: CardVoteMobileProps) => {
const isDisabled = room.details.votingHistory.length === 0
const sendWakuVote = useSendWakuVote()
+ useEffect(() => {
+ setVote(voting.fromRoom(room))
+ }, [JSON.stringify(room)])
+
if (!vote) {
return
}
-
return (
{winner ? (
@@ -85,10 +89,26 @@ export const CardVoteMobile = ({ room }: CardVoteMobileProps) => {
) : (
- sendWakuVote(proposingAmount, room.roomNumber, 0)}>
+ {
+ await sendWakuVote(proposingAmount, room.roomNumber, 0)
+ setVote((vote) => {
+ return { ...vote, voteAgainst: vote.voteAgainst.add(proposingAmount) }
+ })
+ }}
+ >
{voteConstants.against.text} {voteConstants.against.icon}
- sendWakuVote(proposingAmount, room.roomNumber, 1)}>
+ {
+ await sendWakuVote(proposingAmount, room.roomNumber, 1)
+ setVote((vote) => {
+ return { ...vote, voteFor: vote.voteFor.add(proposingAmount) }
+ })
+ }}
+ >
{voteConstants.for.text} {voteConstants.for.icon}
diff --git a/packages/DApp/src/componentsMobile/VotingCardCover.tsx b/packages/DApp/src/componentsMobile/VotingCardCover.tsx
index 7cc6f7c..07cedb7 100644
--- a/packages/DApp/src/componentsMobile/VotingCardCover.tsx
+++ b/packages/DApp/src/componentsMobile/VotingCardCover.tsx
@@ -6,12 +6,14 @@ import voting from '../helpers/voting'
import { getVotingWinner } from '../helpers/voting'
import { VoteChart } from '../components/votes/VoteChart'
import { useHistory } from 'react-router'
+import { useRoomAggregateVotes } from '../hooks/useRoomAggregateVotes'
interface VotingCardCoverProps {
room: DetailedVotingRoom
}
export function VotingCardCover({ room }: VotingCardCoverProps) {
+ room = useRoomAggregateVotes(room, false)
const vote = voting.fromRoom(room)
const winner = getVotingWinner(vote)
const history = useHistory()
diff --git a/yarn.lock b/yarn.lock
index a8d1cee..0db8a29 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2227,9 +2227,11 @@
integrity sha512-rS27+EkB/RE1Iz3u0XtVL5q36MGDWbgYe7zWiodyKNUnthxY0rukK5V36eiUCtCisB7NN8zKYH6DO2M37qxFEQ==
"@types/debug@^4.1.5":
- version "4.1.6"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.6.tgz#0b7018723084918a865eff99249c490505df2163"
- integrity sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA==
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
+ integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
+ dependencies:
+ "@types/ms" "*"
"@types/eslint-scope@^3.7.0":
version "3.7.0"
@@ -2340,6 +2342,11 @@
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.2.tgz#91daa226eb8c2ff261e6a8cbf8c7304641e095e0"
integrity sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
"@types/node-fetch@^2.5.5":
version "2.5.10"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.10.tgz#9b4d4a0425562f9fcea70b12cb3fcdd946ca8132"
@@ -2354,9 +2361,9 @@
integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==
"@types/node@>=13.7.0":
- version "16.4.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.0.tgz#2c219eaa3b8d1e4d04f4dd6e40bc68c7467d5272"
- integrity sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==
+ version "16.4.3"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48"
+ integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg==
"@types/node@^12.12.6":
version "12.20.15"
@@ -8499,10 +8506,10 @@ js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-js-waku@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/js-waku/-/js-waku-0.8.1.tgz#481443a929552dc116f7695b0f5a040130ac4a0a"
- integrity sha512-llbc4ZRDpjS8BnWwdtwbdVY2/J5sgiyuzR2l0b/PihP+1QTrItukQ7TrgE/Ioj7aO2E8I+YUGMm/f/O1up/yMQ==
+js-waku@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/js-waku/-/js-waku-0.9.0.tgz#0e62d3097bd4d53fd281151252bf09d77a6e0297"
+ integrity sha512-bWKxWDz834VF+/4eqyM14+yidWMp90V5jUr8BUmB4GdbodYpHi4Y6lNsR8i+0y4+vuYwZbXOxU+RWjnePjA6Yg==
dependencies:
axios "^0.21.1"
debug "^4.3.1"