diff --git a/packages/app-123code/src/Transfer.tsx b/packages/app-123code/src/Transfer.tsx index 98102378d6c8..7966334832cd 100644 --- a/packages/app-123code/src/Transfer.tsx +++ b/packages/app-123code/src/Transfer.tsx @@ -37,6 +37,7 @@ export default function Transfer ({ accountId }: Props): React.ReactElement diff --git a/packages/app-accounts/src/modals/Identity.tsx b/packages/app-accounts/src/modals/Identity.tsx index 2e07f22bd832..96032daf189c 100644 --- a/packages/app-accounts/src/modals/Identity.tsx +++ b/packages/app-accounts/src/modals/Identity.tsx @@ -217,7 +217,6 @@ function Identity ({ address, className, onClose }: Props): React.ReactElement

diff --git a/packages/app-accounts/src/modals/RecoverAccount.tsx b/packages/app-accounts/src/modals/RecoverAccount.tsx index 9d46fb3a0c71..13df51df3a03 100644 --- a/packages/app-accounts/src/modals/RecoverAccount.tsx +++ b/packages/app-accounts/src/modals/RecoverAccount.tsx @@ -41,10 +41,9 @@ export default function RecoverAccount ({ address, className, onClose }: Props): icon='recycle' isDisabled={!recover || recover === address} label={t('Start recovery')} - onClick={onClose} + onStart={onClose} params={[recover]} tx='recovery.initiateRecovery' - withSpinner={false} /> diff --git a/packages/app-accounts/src/modals/RecoverSetup.tsx b/packages/app-accounts/src/modals/RecoverSetup.tsx index d81971601483..3e4160140bda 100644 --- a/packages/app-accounts/src/modals/RecoverSetup.tsx +++ b/packages/app-accounts/src/modals/RecoverSetup.tsx @@ -77,10 +77,9 @@ export default function RecoverSetup ({ address, className, onClose }: Props): R icon='share alternate' isDisabled={isErrorHelpers || isErrorThreshold || isErrorDelay} label={t('Make recoverable')} - onClick={onClose} + onStart={onClose} params={[helpers, threshold, delay]} tx='recovery.createRecovery' - withSpinner={false} /> diff --git a/packages/app-accounts/src/modals/Transfer.tsx b/packages/app-accounts/src/modals/Transfer.tsx index 13f1a071f097..01f1cee6056f 100644 --- a/packages/app-accounts/src/modals/Transfer.tsx +++ b/packages/app-accounts/src/modals/Transfer.tsx @@ -135,7 +135,6 @@ function Transfer ({ className, onClose, recipientId: propRecipientId, senderId: isPrimary label={t('Make Transfer')} onStart={onClose} - withSpinner={false} /> diff --git a/packages/app-contracts/src/Codes/Upload.tsx b/packages/app-contracts/src/Codes/Upload.tsx index c951101a6437..2df1deb8662a 100644 --- a/packages/app-contracts/src/Codes/Upload.tsx +++ b/packages/app-contracts/src/Codes/Upload.tsx @@ -83,6 +83,7 @@ class Upload extends ContractModal { params={[gasLimit, wasm]} tx={api.tx.contracts ? 'contracts.putCode' : 'contract.putCode'} ref={this.button} + withSpinner /> ); } diff --git a/packages/app-contracts/src/Contracts/Call.tsx b/packages/app-contracts/src/Contracts/Call.tsx index 2269bd8e93d7..6dff9a7c87f5 100644 --- a/packages/app-contracts/src/Contracts/Call.tsx +++ b/packages/app-contracts/src/Contracts/Call.tsx @@ -220,6 +220,7 @@ function Call (props: Props): React.ReactElement | null { onSuccess={_toggleBusy} params={_constructTx} tx={api.tx.contracts ? 'contracts.call' : 'contract.call'} + withSpinner /> ) } diff --git a/packages/app-contracts/src/Deploy.tsx b/packages/app-contracts/src/Deploy.tsx index 102787a9d853..3d4f9d4057dc 100644 --- a/packages/app-contracts/src/Deploy.tsx +++ b/packages/app-contracts/src/Deploy.tsx @@ -242,6 +242,7 @@ class Deploy extends ContractModal { : 'contract.create' // V1 } ref={this.button} + withSpinner /> ); } diff --git a/packages/app-democracy/src/Overview/PreImage.tsx b/packages/app-democracy/src/Overview/PreImage.tsx index 85a3183dfc52..508b88c12378 100644 --- a/packages/app-democracy/src/Overview/PreImage.tsx +++ b/packages/app-democracy/src/Overview/PreImage.tsx @@ -83,7 +83,6 @@ function PreImage ({ className, isImminent: propsIsImminent, matchHash, onClose onStart={onClose} params={[encodedProposal]} tx={isImminent ? 'democracy.noteImminentPreimage' : 'democracy.notePreimage'} - withSpinner={false} /> diff --git a/packages/app-democracy/src/Overview/Propose.tsx b/packages/app-democracy/src/Overview/Propose.tsx index 1dce4b6a59fd..06285e00a34a 100644 --- a/packages/app-democracy/src/Overview/Propose.tsx +++ b/packages/app-democracy/src/Overview/Propose.tsx @@ -62,7 +62,6 @@ export default function Propose ({ className, onClose }: Props): React.ReactElem onStart={onClose} params={[hash, balance]} tx='democracy.propose' - withSpinner={false} /> diff --git a/packages/app-democracy/src/Overview/Seconding.tsx b/packages/app-democracy/src/Overview/Seconding.tsx index 5a7dba8b00fb..2dc1d6b8c0a7 100644 --- a/packages/app-democracy/src/Overview/Seconding.tsx +++ b/packages/app-democracy/src/Overview/Seconding.tsx @@ -7,7 +7,7 @@ import { AccountId, Proposal } from '@polkadot/types/interfaces'; import BN from 'bn.js'; import React, { useState } from 'react'; import { Button, InputAddress, Modal, ProposedAction, TxButton } from '@polkadot/react-components'; -import { useAccounts } from '@polkadot/react-hooks'; +import { useAccounts, useToggle } from '@polkadot/react-hooks'; import { useTranslation } from '../translate'; @@ -22,14 +22,13 @@ export default function Seconding ({ depositors, proposal, proposalId }: Props): const { t } = useTranslation(); const { hasAccounts } = useAccounts(); const [accountId, setAccountId] = useState(null); - const [isSecondingOpen, setIsSecondingOpen] = useState(false); + const [isSecondingOpen, toggleSeconding] = useToggle(); if (!hasAccounts) { return null; } const isDepositor = depositors.some((depositor): boolean => depositor.eq(accountId)); - const _toggleSeconding = (): void => setIsSecondingOpen(!isSecondingOpen); return ( <> @@ -51,14 +50,14 @@ export default function Seconding ({ depositors, proposal, proposalId }: Props): withLabel /> - + @@ -69,7 +68,7 @@ export default function Seconding ({ depositors, proposal, proposalId }: Props): isPrimary label={t('Second')} icon='toggle off' - onClick={_toggleSeconding} + onClick={toggleSeconding} /> ); diff --git a/packages/app-extrinsics/src/Selection.tsx b/packages/app-extrinsics/src/Selection.tsx index 87bceeea4a08..b2fff8abcac7 100644 --- a/packages/app-extrinsics/src/Selection.tsx +++ b/packages/app-extrinsics/src/Selection.tsx @@ -60,6 +60,7 @@ class Selection extends TxComponent { label={t('Submit Unsigned')} icon='sign-in' extrinsic={extrinsic} + withSpinner /> { icon='sign-in' extrinsic={extrinsic} ref={this.button} + withSpinner /> diff --git a/packages/app-generic-asset/src/Transfer.tsx b/packages/app-generic-asset/src/Transfer.tsx index 7a775372a6ff..6a8587e562bf 100644 --- a/packages/app-generic-asset/src/Transfer.tsx +++ b/packages/app-generic-asset/src/Transfer.tsx @@ -118,7 +118,6 @@ function Transfer ({ assets, className, onClose, recipientId: propRecipientId, s label={t('Make Transfer')} icon='send' onStart={onClose} - withSpinner={false} /> diff --git a/packages/app-staking/src/Actions/Account/BondExtra.tsx b/packages/app-staking/src/Actions/Account/BondExtra.tsx index d35f6de72db9..3bba2a6049d3 100644 --- a/packages/app-staking/src/Actions/Account/BondExtra.tsx +++ b/packages/app-staking/src/Actions/Account/BondExtra.tsx @@ -78,9 +78,10 @@ class BondExtra extends TxComponent { isPrimary label={t('Bond more')} icon='sign-in' - onClick={onClose} + onStart={onClose} extrinsic={extrinsic} ref={this.button} + withSpinner /> diff --git a/packages/app-staking/src/Actions/Account/Nominate.tsx b/packages/app-staking/src/Actions/Account/Nominate.tsx index 0a0935311206..0516a155c979 100644 --- a/packages/app-staking/src/Actions/Account/Nominate.tsx +++ b/packages/app-staking/src/Actions/Account/Nominate.tsx @@ -91,7 +91,7 @@ function Nominate ({ className, controllerId, nominees, onClose, next, stakingOv accountId={controllerId} isDisabled={!selection.length} isPrimary - onClick={onClose} + onStart={onClose} params={[selection]} label={t('Nominate')} icon='hand paper outline' diff --git a/packages/app-staking/src/Actions/Account/SetControllerAccount.tsx b/packages/app-staking/src/Actions/Account/SetControllerAccount.tsx index a077ebb5c648..490b2e440246 100644 --- a/packages/app-staking/src/Actions/Account/SetControllerAccount.tsx +++ b/packages/app-staking/src/Actions/Account/SetControllerAccount.tsx @@ -87,10 +87,11 @@ class SetControllerAccount extends TxComponent { isPrimary label={t('Set controller')} icon='sign-in' - onClick={onClose} + onStart={onClose} params={[controllerId]} tx='staking.setController' ref={this.button} + withSpinner /> diff --git a/packages/app-staking/src/Actions/Account/SetRewardDestination.tsx b/packages/app-staking/src/Actions/Account/SetRewardDestination.tsx index d830171851fe..6254007d6ecb 100644 --- a/packages/app-staking/src/Actions/Account/SetRewardDestination.tsx +++ b/packages/app-staking/src/Actions/Account/SetRewardDestination.tsx @@ -49,10 +49,11 @@ class SetRewardDestination extends TxComponent { isPrimary label={t('Set reward destination')} icon='sign-in' - onClick={onClose} + onStart={onClose} params={[destination]} tx={'staking.setPayee'} ref={this.button} + withSpinner /> diff --git a/packages/app-staking/src/Actions/Account/SetSessionKey.tsx b/packages/app-staking/src/Actions/Account/SetSessionKey.tsx index 23b7d92c501a..c5990454691f 100644 --- a/packages/app-staking/src/Actions/Account/SetSessionKey.tsx +++ b/packages/app-staking/src/Actions/Account/SetSessionKey.tsx @@ -87,7 +87,7 @@ export default function SetSessionKey ({ controllerId, isOpen, onClose, sessionI isPrimary label={t('Set Session Key')} icon='sign-in' - onClick={onClose} + onStart={onClose} params={ isSubstrateV2 ? [keys, EMPTY_PROOF] diff --git a/packages/app-staking/src/Actions/Account/Unbond.tsx b/packages/app-staking/src/Actions/Account/Unbond.tsx index 81a461ff7151..75e7e79a5bd8 100644 --- a/packages/app-staking/src/Actions/Account/Unbond.tsx +++ b/packages/app-staking/src/Actions/Account/Unbond.tsx @@ -73,10 +73,11 @@ class Unbond extends TxComponent { isPrimary label={t('Unbond')} icon='sign-out' - onClick={onClose} + onStart={onClose} params={[maxUnbond]} tx='staking.unbond' ref={this.button} + withSpinner /> diff --git a/packages/app-staking/src/Actions/Account/Validate.tsx b/packages/app-staking/src/Actions/Account/Validate.tsx index a2b088985e7b..703519cc74d3 100644 --- a/packages/app-staking/src/Actions/Account/Validate.tsx +++ b/packages/app-staking/src/Actions/Account/Validate.tsx @@ -91,10 +91,11 @@ class Validate extends TxComponent { isPrimary label={t('Validate')} icon='check circle outline' - onClick={onClose} + onStart={onClose} params={[{ commission }]} tx='staking.validate' ref={this.button} + withSpinner /> ); diff --git a/packages/app-staking/src/Actions/NewStake.tsx b/packages/app-staking/src/Actions/NewStake.tsx index bce5baa8dd38..99ec88e56513 100644 --- a/packages/app-staking/src/Actions/NewStake.tsx +++ b/packages/app-staking/src/Actions/NewStake.tsx @@ -120,9 +120,10 @@ class NewStake extends TxComponent { isPrimary label={t('Bond')} icon='sign-in' - onClick={onClose} + onStart={onClose} extrinsic={extrinsic} ref={this.button} + withSpinner /> diff --git a/packages/app-sudo/src/Sudo.tsx b/packages/app-sudo/src/Sudo.tsx index 35a3da545552..cf9d5c125449 100644 --- a/packages/app-sudo/src/Sudo.tsx +++ b/packages/app-sudo/src/Sudo.tsx @@ -53,6 +53,7 @@ class Propose extends TxComponent { isDisabled={!method || !isValid} params={method ? [createType(registry, 'Proposal', method)] : []} ref={this.button} + withSpinner /> diff --git a/packages/app-treasury/src/Overview/Propose.tsx b/packages/app-treasury/src/Overview/Propose.tsx index aec21e3fcd75..83f64956dd23 100644 --- a/packages/app-treasury/src/Overview/Propose.tsx +++ b/packages/app-treasury/src/Overview/Propose.tsx @@ -5,6 +5,7 @@ import BN from 'bn.js'; import React, { useState } from 'react'; import { Button, InputAddress, InputBalance, Modal, TxButton } from '@polkadot/react-components'; +import { useToggle } from '@polkadot/react-hooks'; import useCouncilMembers from '@polkadot/app-council/useCouncilMembers'; import { useTranslation } from '../translate'; @@ -18,11 +19,9 @@ export default function Propose ({ className }: Props): React.ReactElement(null); const [beneficiary, setBeneficiary] = useState(null); - const [isProposeOpen, setIsProposeOpen] = useState(false); + const [isProposeOpen, togglePropose] = useToggle(); const [value, setValue] = useState(); - const _togglePropose = (): void => setIsProposeOpen(!isProposeOpen); - const hasValue = value?.gtn(0); return ( @@ -57,14 +56,14 @@ export default function Propose ({ className }: Props): React.ReactElement - + @@ -76,7 +75,7 @@ export default function Propose ({ className }: Props): React.ReactElement ); diff --git a/packages/app-treasury/src/Overview/Submission.tsx b/packages/app-treasury/src/Overview/Submission.tsx index 96797184c905..2335c7a730fd 100644 --- a/packages/app-treasury/src/Overview/Submission.tsx +++ b/packages/app-treasury/src/Overview/Submission.tsx @@ -75,7 +75,7 @@ export default function Submission ({ councilProposals, id, isDisabled }: Props) isDisabled={!accountId || !councilThreshold} isPrimary label={t('Send to council')} - onClick={toggleOpen} + onStart={toggleOpen} params={[ councilThreshold, councilType === 'reject' diff --git a/packages/react-components/src/AccountName.tsx b/packages/react-components/src/AccountName.tsx index cfe05cae0423..b2b97cfe5837 100644 --- a/packages/react-components/src/AccountName.tsx +++ b/packages/react-components/src/AccountName.tsx @@ -256,7 +256,7 @@ function AccountName ({ children, className, defaultName, label, onClick, overri icon='check' isDisabled={registrarIndex === -1} label={t('Judge')} - onClick={toggleJudgement} + onStart={toggleJudgement} params={[registrarIndex, accountId, judgementEnum]} tx='identity.provideJudgement' /> diff --git a/packages/react-components/src/TxButton.tsx b/packages/react-components/src/TxButton.tsx index fd8fca35663e..2460b4110414 100644 --- a/packages/react-components/src/TxButton.tsx +++ b/packages/react-components/src/TxButton.tsx @@ -62,7 +62,7 @@ class TxButtonInner extends React.PureComponent { } protected send = (): void => { - const { accountId, api, extrinsic: propsExtrinsic, isUnsigned, onClick, onFailed, onStart, onSuccess, onUpdate, params = [], queueExtrinsic, tx = '', withSpinner = true } = this.props; + const { accountId, api, extrinsic: propsExtrinsic, isUnsigned, onClick, onFailed, onStart, onSuccess, onUpdate, params = [], queueExtrinsic, tx = '', withSpinner = false } = this.props; let extrinsic: any; if (propsExtrinsic) { diff --git a/packages/react-components/src/VoteActions.tsx b/packages/react-components/src/VoteActions.tsx index bd4854821858..4b22ac6d43d9 100644 --- a/packages/react-components/src/VoteActions.tsx +++ b/packages/react-components/src/VoteActions.tsx @@ -31,7 +31,7 @@ export default function VoteActions ({ accountId, className, isDisabled, onClick isDisabled={!accountId || isDisabled} isPrimary label={t('Vote')} - onClick={onClick} + onStart={onClick} params={params} tx={tx} />