From a9c1b0844111d932cf6ea83f113373efb2753f7e Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Wed, 10 Jun 2020 11:19:33 +0200 Subject: [PATCH] Withdraw with slashing spans (#2918) * Withdraw with slashing spans * prior length --- .../react-components/src/StakingRedeemable.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/react-components/src/StakingRedeemable.tsx b/packages/react-components/src/StakingRedeemable.tsx index 253747300d..149556c122 100644 --- a/packages/react-components/src/StakingRedeemable.tsx +++ b/packages/react-components/src/StakingRedeemable.tsx @@ -3,10 +3,12 @@ // of the Apache-2.0 license. See the LICENSE file for details. import { DeriveStakingAccount } from '@polkadot/api-derive/types'; +import { SlashingSpans } from '@polkadot/types/interfaces'; import React from 'react'; -import { useAccounts } from '@polkadot/react-hooks'; +import { useAccounts, useApi, useCall } from '@polkadot/react-hooks'; import { FormatBalance } from '@polkadot/react-query'; +import { Option } from '@polkadot/types'; import TxButton from './TxButton'; import { useTranslation } from './translate'; @@ -17,8 +19,15 @@ interface Props { } function StakingRedeemable ({ className = '', stakingInfo }: Props): React.ReactElement | null { + const { api } = useApi(); const { allAccounts } = useAccounts(); const { t } = useTranslation(); + const spanCount = useCall(api.query.staking.slashingSpans, [stakingInfo?.stashId], { + transform: (optSpans: Option): number => + optSpans.isNone + ? 0 + : optSpans.unwrap().prior.length + 1 + }); if (!stakingInfo?.redeemable?.gtn(0)) { return null; @@ -33,7 +42,11 @@ function StakingRedeemable ({ className = '', stakingInfo }: Props): React.React icon='lock' isIcon key='unlock' - params={[]} + params={ + api.tx.staking.withdrawUnbonded.meta.args.length === 1 + ? [spanCount] + : [] + } tooltip={t('Withdraw these unbonded funds')} tx='staking.withdrawUnbonded' />