From e79b735722224498dbac95b467f93ffb17e39256 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Mon, 23 Mar 2020 20:19:19 +0100 Subject: [PATCH] Grrrr, BN falling down --- .../src/Overview/useIsPassing.ts | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/page-democracy/src/Overview/useIsPassing.ts b/packages/page-democracy/src/Overview/useIsPassing.ts index f02d29b9c9..0be2dc8ea1 100644 --- a/packages/page-democracy/src/Overview/useIsPassing.ts +++ b/packages/page-democracy/src/Overview/useIsPassing.ts @@ -42,22 +42,26 @@ export default function useIsPassing (referendum: DerivedReferendum): boolean | const [isPassing, setIsPassing] = useState(undefined); useEffect((): void => { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion - const { tally, threshold } = (referendum.status as ReferendumStatus); + try { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + const { tally, threshold } = (referendum.status as ReferendumStatus); - if (totalIssuance && tally) { - const sqrtVoters = tally.turnout.toRed(BN.red('k256')).redSqrt().fromRed(); - const sqrtElectorate = totalIssuance.toRed(BN.red('k256')).redSqrt().fromRed(); + if (totalIssuance?.gtn(0) && tally?.turnout.gtn(0)) { + const sqrtVoters = tally.turnout.toRed(BN.red('k256')).redSqrt().fromRed(); + const sqrtElectorate = totalIssuance.toRed(BN.red('k256')).redSqrt().fromRed(); - setIsPassing( - sqrtVoters.isZero() - ? false - : threshold.isSimplemajority - ? tally.ayes.gt(tally.nays) - : threshold.isSupermajorityapproval - ? compareRationals(tally.nays, sqrtVoters, tally.ayes, sqrtElectorate) - : compareRationals(tally.nays, sqrtElectorate, tally.ayes, sqrtVoters) - ); + setIsPassing( + sqrtVoters.isZero() + ? false + : threshold.isSimplemajority + ? tally.ayes.gt(tally.nays) + : threshold.isSupermajorityapproval + ? compareRationals(tally.nays, sqrtVoters, tally.ayes, sqrtElectorate) + : compareRationals(tally.nays, sqrtElectorate, tally.ayes, sqrtVoters) + ); + } + } catch (error) { + console.error(error); } }, [referendum, totalIssuance]);