From 8fc88eff664ff1f80636097432e0f813166cba58 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Sun, 26 Apr 2020 14:30:39 +0200 Subject: [PATCH] Allow multisig asApproval via signer (#2634) --- package.json | 6 +- packages/page-contracts/package.json | 2 +- packages/react-api/package.json | 2 +- packages/react-signer/src/Modal.tsx | 40 +++++++--- yarn.lock | 112 +++++++++++++-------------- 5 files changed, 91 insertions(+), 71 deletions(-) diff --git a/package.json b/package.json index a92953c6fe..974fb12e08 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,10 @@ "packages/*" ], "resolutions": { - "@polkadot/api": "^1.12.0-beta.7", - "@polkadot/api-contract": "^1.12.0-beta.7", + "@polkadot/api": "^1.12.0-beta.9", + "@polkadot/api-contract": "^1.12.0-beta.9", "@polkadot/keyring": "^2.9.0-beta.1", - "@polkadot/types": "^1.12.0-beta.7", + "@polkadot/types": "^1.12.0-beta.9", "@polkadot/util": "^2.9.0-beta.1", "@polkadot/util-crypto": "^2.9.0-beta.1", "babel-core": "^7.0.0-bridge.0", diff --git a/packages/page-contracts/package.json b/packages/page-contracts/package.json index d678656bcc..11d0ed6c72 100644 --- a/packages/page-contracts/package.json +++ b/packages/page-contracts/package.json @@ -12,6 +12,6 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.9.2", - "@polkadot/api-contract": "^1.12.0-beta.7" + "@polkadot/api-contract": "^1.12.0-beta.9" } } diff --git a/packages/react-api/package.json b/packages/react-api/package.json index f5dad43659..e61dcfdc8e 100644 --- a/packages/react-api/package.json +++ b/packages/react-api/package.json @@ -31,7 +31,7 @@ "homepage": "https://github.com/polkadot-js/ui/tree/master/packages/ui-reactive#readme", "dependencies": { "@babel/runtime": "^7.9.2", - "@polkadot/api": "^1.12.0-beta.7", + "@polkadot/api": "^1.12.0-beta.9", "@polkadot/extension-dapp": "^0.25.0-beta.3", "rxjs-compat": "^6.5.5" } diff --git a/packages/react-signer/src/Modal.tsx b/packages/react-signer/src/Modal.tsx index 1c11f94428..0a61d2a25c 100644 --- a/packages/react-signer/src/Modal.tsx +++ b/packages/react-signer/src/Modal.tsx @@ -48,6 +48,7 @@ interface State { isRenderError: boolean; isSendable: boolean; isSubmit: boolean; + multiApproval: boolean; nonce?: string; password: string; qrAddress: string; @@ -122,6 +123,7 @@ const initialState: State = { isRenderError: false, isSendable: false, isSubmit: true, + multiApproval: false, nonce: undefined, password: '', qrAddress: '', @@ -286,7 +288,7 @@ class Signer extends React.PureComponent { private renderSignatory (): React.ReactNode { const { t } = this.props; - const { currentItem } = this.state; + const { currentItem, multiApproval } = this.state; const { isMultisig, who } = currentItem ? extractExternal(currentItem.accountId) : { isMultisig: false, who: [] }; @@ -296,13 +298,25 @@ class Signer extends React.PureComponent { } return ( - + <> + + + ); } @@ -406,6 +420,10 @@ class Signer extends React.PureComponent { this.setState({ showTip }); }; + private onToggleMultiApproval = (multiApproval: boolean): void => { + this.setState({ multiApproval }); + } + private onToggleSign = (isSubmit: boolean): void => { this.setState({ isSubmit }); } @@ -605,7 +623,7 @@ class Signer extends React.PureComponent { private async sendExtrinsic (queueTx: QueueTx, password?: string): Promise { const { api, queueSetTxStatus } = this.props; - const { isSubmit, showTip, signatory, tip } = this.state; + const { isSubmit, multiApproval, showTip, signatory, tip } = this.state; const { accountId, extrinsic, id, isUnsigned, payload } = queueTx; if (!isUnsigned) { @@ -655,7 +673,9 @@ class Signer extends React.PureComponent { } pair = keyring.getPair(signatory as string); - tx = api.tx.utility.asMulti(basePair.meta.threshold, others, timepoint, submittable.method); + tx = multiApproval + ? api.tx.utility.approveAsMulti(basePair.meta.threshold, others, timepoint, submittable.method.hash) + : api.tx.utility.asMulti(basePair.meta.threshold, others, timepoint, submittable.method); } console.log('sendExtrinsic::', JSON.stringify(tx.method.toHuman())); diff --git a/yarn.lock b/yarn.lock index 441878a18c..e47e93470e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2837,57 +2837,57 @@ __metadata: languageName: node linkType: hard -"@polkadot/api-contract@npm:^1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/api-contract@npm:1.12.0-beta.7" +"@polkadot/api-contract@npm:^1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/api-contract@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/api": 1.12.0-beta.7 - "@polkadot/rpc-core": 1.12.0-beta.7 - "@polkadot/types": 1.12.0-beta.7 + "@polkadot/api": 1.12.0-beta.9 + "@polkadot/rpc-core": 1.12.0-beta.9 + "@polkadot/types": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 bn.js: ^5.1.1 rxjs: ^6.5.5 - checksum: 2/ff2da7fda9eb2f2f282a29014fb4b39c130509406b9f1aa95c821e5e9842fc0b24c7d17a21665c45754cfb6525c1058d896b1ff6d38abb27f0b2a2557f033e03 + checksum: 2/a18128414dae5e962cc71be75b302b96d64dafc0bf3809056e19d0573cb7a7a0e83b6e1fb48f922418054568ebadf2022d6f4ee6e7e77c05fb771bbfb106709b languageName: node linkType: hard -"@polkadot/api-derive@npm:1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/api-derive@npm:1.12.0-beta.7" +"@polkadot/api-derive@npm:1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/api-derive@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/api": 1.12.0-beta.7 - "@polkadot/rpc-core": 1.12.0-beta.7 - "@polkadot/rpc-provider": 1.12.0-beta.7 - "@polkadot/types": 1.12.0-beta.7 + "@polkadot/api": 1.12.0-beta.9 + "@polkadot/rpc-core": 1.12.0-beta.9 + "@polkadot/rpc-provider": 1.12.0-beta.9 + "@polkadot/types": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 "@polkadot/util-crypto": ^2.9.0-beta.1 bn.js: ^5.1.1 memoizee: ^0.4.14 rxjs: ^6.5.5 - checksum: 2/9767b835de6b67cc020ac29d6d3f3f5896ea2ccbd6f56f2229963e3da0e67b71ac8bd893cc71057d9bfd7e4039cfd44510217be7d7953e7f0f264f4aad61edde + checksum: 2/bb0e4ed3bfd2c78affa3bcf4b180cfac338673bbb8309980b9f6554c01b745917907a4086c166400704d9ae0ef1f923f6af26ce1861c67c8b3132d089d91c40c languageName: node linkType: hard -"@polkadot/api@npm:^1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/api@npm:1.12.0-beta.7" +"@polkadot/api@npm:^1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/api@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/api-derive": 1.12.0-beta.7 + "@polkadot/api-derive": 1.12.0-beta.9 "@polkadot/keyring": ^2.9.0-beta.1 - "@polkadot/metadata": 1.12.0-beta.7 - "@polkadot/rpc-core": 1.12.0-beta.7 - "@polkadot/rpc-provider": 1.12.0-beta.7 - "@polkadot/types": 1.12.0-beta.7 - "@polkadot/types-known": 1.12.0-beta.7 + "@polkadot/metadata": 1.12.0-beta.9 + "@polkadot/rpc-core": 1.12.0-beta.9 + "@polkadot/rpc-provider": 1.12.0-beta.9 + "@polkadot/types": 1.12.0-beta.9 + "@polkadot/types-known": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 "@polkadot/util-crypto": ^2.9.0-beta.1 bn.js: ^5.1.1 eventemitter3: ^4.0.0 rxjs: ^6.5.5 - checksum: 2/3ff60187bc88753f8d6cf431733929904b4f8be09c2b7eaed405bd376e7a1602aaa230763845b8753550cf1f3b8ca906eb23de1ff61e0d2393047e9a165532e9 + checksum: 2/c473b273f579d7a9bec3b27042cf77c34f0eb9698a74eea87931ea30336ef513a73e2656e38ee51f4c87f03a3de2f3d6ba13b669206f75cc8f70fca2f1472a40 languageName: node linkType: hard @@ -2928,7 +2928,7 @@ __metadata: resolution: "@polkadot/app-contracts@workspace:packages/page-contracts" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/api-contract": ^1.12.0-beta.7 + "@polkadot/api-contract": ^1.12.0-beta.9 languageName: unknown linkType: soft @@ -3263,17 +3263,17 @@ __metadata: languageName: node linkType: hard -"@polkadot/metadata@npm:1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/metadata@npm:1.12.0-beta.7" +"@polkadot/metadata@npm:1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/metadata@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/types": 1.12.0-beta.7 - "@polkadot/types-known": 1.12.0-beta.7 + "@polkadot/types": 1.12.0-beta.9 + "@polkadot/types-known": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 "@polkadot/util-crypto": ^2.9.0-beta.1 bn.js: ^5.1.1 - checksum: 2/120ebe8f9cb00f8ea83aae6e05437c0de1f09cc657741af14ece59f531ff998f5b5bcafe6afe3fcc086e00d15cdee94e8f14ab161176adda7b2b2bcc8147f3c1 + checksum: 2/e0c38041390b9efcc287d4522188f869f30a56c0df1e269e6dfe468763e6449931641a9ecdc761f983cc3324f6b436d8042af6def25c1e7f728802f41183b20d languageName: node linkType: hard @@ -3282,7 +3282,7 @@ __metadata: resolution: "@polkadot/react-api@workspace:packages/react-api" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/api": ^1.12.0-beta.7 + "@polkadot/api": ^1.12.0-beta.9 "@polkadot/extension-dapp": ^0.25.0-beta.3 rxjs-compat: ^6.5.5 languageName: unknown @@ -3399,35 +3399,35 @@ __metadata: languageName: unknown linkType: soft -"@polkadot/rpc-core@npm:1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/rpc-core@npm:1.12.0-beta.7" +"@polkadot/rpc-core@npm:1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/rpc-core@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/metadata": 1.12.0-beta.7 - "@polkadot/rpc-provider": 1.12.0-beta.7 - "@polkadot/types": 1.12.0-beta.7 + "@polkadot/metadata": 1.12.0-beta.9 + "@polkadot/rpc-provider": 1.12.0-beta.9 + "@polkadot/types": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 memoizee: ^0.4.14 rxjs: ^6.5.5 - checksum: 2/900af1d399e5e2248a4049f67ca5d79aefa0eebc592a11ca34319e556286fe21deb28c3a5cba0fee174de95d8ffd4dec7830cede286bf371284ec5487862fc90 + checksum: 2/ed045b5461615cdc8678fc5a4415d6e5ccf62b777216c57bc16545373307d1c89ecfed9b9f2ce7d79b7cd86c055aa7d9ed786243181068b722f25ee2cb4b45a3 languageName: node linkType: hard -"@polkadot/rpc-provider@npm:1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/rpc-provider@npm:1.12.0-beta.7" +"@polkadot/rpc-provider@npm:1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/rpc-provider@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/metadata": 1.12.0-beta.7 - "@polkadot/types": 1.12.0-beta.7 + "@polkadot/metadata": 1.12.0-beta.9 + "@polkadot/types": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 "@polkadot/util-crypto": ^2.9.0-beta.1 bn.js: ^5.1.1 eventemitter3: ^4.0.0 isomorphic-fetch: ^2.2.1 websocket: ^1.0.31 - checksum: 2/f09f4789d9b0bc190c921f130cf87503b9888b43b91f173e04b1563c07deefc41eb21d9f89bdef8b31ffd2686cbf3cdb943f3264fed1b82d6f63f9a6176d0910 + checksum: 2/19e789398e2c5b7ca62a2f9688b08f59f9a73ff519ac15d9b15740e4093088276dbc878428385d19e7f6fca374094533e0c9cfef7a8aae42025bceaf0d2165b4 languageName: node linkType: hard @@ -3440,31 +3440,31 @@ __metadata: languageName: node linkType: hard -"@polkadot/types-known@npm:1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/types-known@npm:1.12.0-beta.7" +"@polkadot/types-known@npm:1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/types-known@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/types": 1.12.0-beta.7 + "@polkadot/types": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 bn.js: ^5.1.1 - checksum: 2/88d398988da2e9e6623f2a8c9b0b3dc2da6fac30b0a1f2c80acecddde629ae070bf41cafcead602e59692c6c53ddc46ec230011d84ca2b93414295b7aa3731ea + checksum: 2/f3505dd113d97f900fd6c2dd71abc08af3c1790d31901a097421912e8764e6e56d07455c5e0284818188a60be8cf8ba34f87cf8ae700d020404bec99b1787d71 languageName: node linkType: hard -"@polkadot/types@npm:^1.12.0-beta.7": - version: 1.12.0-beta.7 - resolution: "@polkadot/types@npm:1.12.0-beta.7" +"@polkadot/types@npm:^1.12.0-beta.9": + version: 1.12.0-beta.9 + resolution: "@polkadot/types@npm:1.12.0-beta.9" dependencies: "@babel/runtime": ^7.9.2 - "@polkadot/metadata": 1.12.0-beta.7 + "@polkadot/metadata": 1.12.0-beta.9 "@polkadot/util": ^2.9.0-beta.1 "@polkadot/util-crypto": ^2.9.0-beta.1 "@types/bn.js": ^4.11.6 bn.js: ^5.1.1 memoizee: ^0.4.14 rxjs: ^6.5.5 - checksum: 2/d115fbb9bcd3da1d401100ea4ea8329ce79c3a000cb5e7a6a8a72f006c7e8951de6165e116086548faa2df87d5b7594c824162c5a4f6472d5711bca12bfcd19e + checksum: 2/c1e522284ef0865feccde24c62de6655e32a05914d3dd74298b02c41c4311492e9313e02bc0c2eacdb702a29ad7ad880c1071a0b09a3ec8a78414c1e2828762e languageName: node linkType: hard