PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/@polkadot/api-derive/society
Просмотр файла: members.js
import { combineLatest, map, of, switchMap } from 'rxjs';
import { memo } from '../util/index.js';
function _membersPrev(api, accountIds) {
return combineLatest([
of(accountIds),
api.query.society.payouts.multi(accountIds),
api.query.society['strikes'].multi(accountIds),
api.query.society.defenderVotes.multi(accountIds),
api.query.society.suspendedMembers.multi(accountIds),
api.query.society['vouching'].multi(accountIds)
]).pipe(map(([accountIds, payouts, strikes, defenderVotes, suspended, vouching]) => accountIds.map((accountId, index) => ({
accountId,
isDefenderVoter: defenderVotes[index].isSome,
isSuspended: suspended[index].isTrue,
payouts: payouts[index],
strikes: strikes[index],
vote: defenderVotes[index].unwrapOr(undefined),
vouching: vouching[index].unwrapOr(undefined)
}))));
}
function _membersCurr(api, accountIds) {
return combineLatest([
of(accountIds),
api.query.society.members.multi(accountIds),
api.query.society.payouts.multi(accountIds),
api.query.society.challengeRoundCount().pipe(switchMap((round) => api.query.society.defenderVotes.multi(accountIds.map((accountId) => [round, accountId])))),
api.query.society.suspendedMembers.multi(accountIds)
]).pipe(map(([accountIds, members, payouts, defenderVotes, suspendedMembers]) => accountIds
.map((accountId, index) => members[index].isSome
? {
accountId,
isDefenderVoter: defenderVotes[index].isSome,
isSuspended: suspendedMembers[index].isSome,
member: members[index].unwrap(),
payouts: payouts[index].payouts
}
: null)
.filter((m) => !!m)
.map(({ accountId, isDefenderVoter, isSuspended, member, payouts }) => ({
accountId,
isDefenderVoter,
isSuspended,
payouts,
strikes: member.strikes,
vouching: member.vouching.unwrapOr(undefined)
}))));
}
export function _members(instanceId, api) {
return memo(instanceId, (accountIds) => api.query.society.members.creator.meta.type.isMap
? _membersCurr(api, accountIds)
: _membersPrev(api, accountIds));
}
/**
* @description Get the member info for a society
*/
export function members(instanceId, api) {
return memo(instanceId, () => api.query.society.members.creator.meta.type.isMap
? api.query.society.members.keys().pipe(switchMap((keys) => api.derive.society._members(keys.map(({ args: [accountId] }) => accountId))))
: api.query.society.members().pipe(switchMap((members) => api.derive.society._members(members))));
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!