diff --git a/packages/page-preimages/src/Preimages/Free.tsx b/packages/page-preimages/src/Preimages/Free.tsx new file mode 100644 index 0000000000..5fbdfea70d --- /dev/null +++ b/packages/page-preimages/src/Preimages/Free.tsx @@ -0,0 +1,43 @@ +// Copyright 2017-2022 @polkadot/app-preimages authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Preimage } from '../types'; + +import React, { useMemo } from 'react'; + +import { TxButton } from '@polkadot/react-components'; +import { useAccounts, useApi } from '@polkadot/react-hooks'; + +import { useTranslation } from '../translate'; + +interface Props { + className?: string; + value: Preimage; +} + +function Free ({ className, value: { count, deposit, proposalHash, status } }: Props): React.ReactElement | null { + const { t } = useTranslation(); + const { api } = useApi(); + const { allAccounts } = useAccounts(); + const isAvailable = useMemo( + () => count === 0 && status && status.isUnrequested && deposit && allAccounts.includes(deposit.who), + [allAccounts, count, deposit, status] + ); + + if (!isAvailable || !deposit) { + return null; + } + + return ( + ('Unnote')} + params={[proposalHash]} + tx={api.tx.preimage.unnotePreimage} + /> + ); +} + +export default React.memo(Free); diff --git a/packages/page-preimages/src/Preimages/Preimage.tsx b/packages/page-preimages/src/Preimages/Preimage.tsx index ef3d62ccc7..032c4a4005 100644 --- a/packages/page-preimages/src/Preimages/Preimage.tsx +++ b/packages/page-preimages/src/Preimages/Preimage.tsx @@ -9,6 +9,7 @@ import { formatNumber } from '@polkadot/util'; import usePreimage from '../usePreimage'; import Call from './Call'; +import Free from './Free'; import Hash from './Hash'; interface Props { @@ -29,9 +30,12 @@ function Preimage ({ className, value }: Props): React.ReactElement { {info?.status?.type} - + {info && info.count !== 0 && formatNumber(info.count)} + + {info && } + ); } diff --git a/packages/page-preimages/src/Preimages/index.tsx b/packages/page-preimages/src/Preimages/index.tsx index 9dc4cc7a78..7e8a406d6e 100644 --- a/packages/page-preimages/src/Preimages/index.tsx +++ b/packages/page-preimages/src/Preimages/index.tsx @@ -28,7 +28,8 @@ function Hashes ({ className }: Props): React.ReactElement { [undefined, 'media--1300'], [t('size')], [t('status')], - [t('count')] + [t('count'), 'media--1400'], + [] ]); return (