From efb38dbdf80d4295811f6d83eafcaca1cd7078b4 Mon Sep 17 00:00:00 2001 From: Jake Naviasky Date: Thu, 18 Jul 2019 17:43:30 -0400 Subject: [PATCH] Fixing array bug in approvalFlagToBool derive. (#1144) * Fixing array bug in approvalFlagToBool derive. * Replicating 'take until last approval' logic. --- packages/api-derive/src/elections/approvalsOf.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/api-derive/src/elections/approvalsOf.ts b/packages/api-derive/src/elections/approvalsOf.ts index dc884057be..5b4bcb6d61 100644 --- a/packages/api-derive/src/elections/approvalsOf.ts +++ b/packages/api-derive/src/elections/approvalsOf.ts @@ -8,11 +8,12 @@ import { drr } from '../util/drr'; export function approvalFlagToBool (flags: Vector): boolean[] { const bools: boolean[] = []; for (const flag of flags) { - for (const bit of Array(flag.bitLength()).map((_, i): number => i)) { + for (const bit of [...Array(flag.bitLength())].map((_, i): number => i)) { bools.push(!flag.toBn().uand((new BN(1)).shln(bit)).isZero()); } } - return bools; + const lastApproval: number = bools.lastIndexOf(true); + return lastApproval >= 0 ? bools.slice(0, lastApproval + 1) : []; } export function approvalsOf (api: ApiInterfaceRx): (who: AccountId) => Observable> {