diff --git a/packages/app-extrinsics/src/Selection.tsx b/packages/app-extrinsics/src/Selection.tsx index a4b398eed2..01ab453233 100644 --- a/packages/app-extrinsics/src/Selection.tsx +++ b/packages/app-extrinsics/src/Selection.tsx @@ -23,6 +23,7 @@ type Props = ApiProps & I18nProps & { type State = { isValid: boolean, + isValidUnsigned: boolean, method: Method | null, accountNonce: BN, accountId: string @@ -30,12 +31,13 @@ type State = { class Selection extends React.PureComponent { state: State = { - isValid: false + isValid: false, + isValidUnsigned: false } as State; render () { const { apiDefaultTx, api, t } = this.props; - const { isValid, accountId } = this.state; + const { isValid, isValidUnsigned, accountId } = this.state; const defaultExtrinsic = (() => { try { return api.tx.balances.transfer; @@ -78,7 +80,8 @@ class Selection extends React.PureComponent {

@@ -108,6 +111,7 @@ class Selection extends React.PureComponent { return { method, isValid, + isValidUnsigned: !!method, accountNonce, accountId }; @@ -129,13 +133,14 @@ class Selection extends React.PureComponent { private getExtrinsic (): SubmittableExtrinsic | null { const { api } = this.props; - const { method, isValid } = this.state; + const { method } = this.state; - if (!isValid || !method) { + if (!method) { return null; } const fn = Method.findFunction(method.callIndex); + return api.tx[fn.section][fn.method](...method.args); } } diff --git a/packages/ui-app/src/TxButton.tsx b/packages/ui-app/src/TxButton.tsx index 888a06ceb4..2b7168b9a1 100644 --- a/packages/ui-app/src/TxButton.tsx +++ b/packages/ui-app/src/TxButton.tsx @@ -34,6 +34,7 @@ type Props = ApiProps & { isDisabled?: boolean, isNegative?: boolean, isPrimary?: boolean, + isUnsigned?: boolean, label: React.ReactNode, onClick?: () => any, onFailed?: TxCallback, @@ -56,14 +57,17 @@ class TxButtonInner extends React.PureComponent { } as State; render () { - const { accountId, className, icon, iconSize , isDisabled, isNegative, isPrimary, label } = this.props; + const { accountId, className, icon, iconSize , isDisabled, isNegative, isPrimary, isUnsigned, label } = this.props; const { isSending } = this.state; + const needsAccount = isUnsigned + ? false + : !accountId; return (