ghost-portal/packages/ui-api/src/derive/balances/validatingBalances.tsx
Jaco Greeff 014ae780e4
Split ui-api, update API version (#589)
* Split ui-api, update API version

* Update (awaiting API changes to go through)

* Cleanup ui-api exports

* Bump API (SubscriptionPromise support)

* Linting fixes

* Update renames

* Do display balances.Transfer (shows for non-owned accounts)

* Bump API
2019-01-12 09:38:07 +01:00

33 lines
1.2 KiB
TypeScript

// Copyright 2017-2019 @polkadot/ui-api authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import { CombinatorFunction } from '@polkadot/api/promise/Combinator';
import { PromiseSubscription } from '@polkadot/api/promise/types';
import { DeriveSubscription, DerivedBalancesMap } from '../types';
import ApiPromise from '@polkadot/api/promise';
import { AccountId } from '@polkadot/types';
import validatingBalance from './validatingBalance';
export default function votingBalances (api: ApiPromise): DeriveSubscription {
return async (...params: Array<any>): PromiseSubscription => {
const accountIds: Array<AccountId | string> = params.slice(0, params.length - 1);
const cb: (balanceMap: DerivedBalancesMap) => any = params[params.length - 1];
return api.combineLatest(
accountIds.map((accountId) =>
[validatingBalance(api), accountId] as [CombinatorFunction, ...Array<any>]
), (result) =>
cb(
result.reduce((balances, balance) => {
balances[balance.address.toString()] = balance;
return balances;
}, {} as DerivedBalancesMap)
)
);
};
}