* 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
33 lines
1.2 KiB
TypeScript
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)
|
|
)
|
|
);
|
|
};
|
|
}
|