// Copyright 2017-2021 @polkadot/react-components authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { DeriveStakingAccount } from '@polkadot/api-derive/types'; import type { Option } from '@polkadot/types'; import type { SlashingSpans } from '@polkadot/types/interfaces'; import React from 'react'; import { useAccounts, useApi, useCall } from '@polkadot/react-hooks'; import { FormatBalance } from '@polkadot/react-query'; import { useTranslation } from './translate'; import TxButton from './TxButton'; interface Props { className?: string; stakingInfo?: DeriveStakingAccount; } const transformSpan = { transform: (optSpans: Option): number => optSpans.isNone ? 0 : optSpans.unwrap().prior.length + 1 }; 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], transformSpan); if (!stakingInfo?.redeemable?.gtn(0)) { return null; } return (
{allAccounts.includes((stakingInfo.controllerId || '').toString()) ? ( ('Withdraw these unbonded funds')} tx={api.tx.staking.withdrawUnbonded} /> ) :  }
); } export default React.memo(StakingRedeemable);