From b65b2d7720ae8737106a5f1a52cfa573b1a9edf5 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Sat, 10 Oct 2020 14:25:31 +0200 Subject: [PATCH] Adjust exec with SubmittableExtrinsic (#2701) * Adjust exec with SubmittableExtrinsic * inputData --- packages/api-contract/src/base/Base.ts | 6 +----- packages/api-contract/src/base/Blueprint.ts | 10 +++++----- packages/api-contract/src/base/Code.ts | 15 +++++++-------- packages/api-contract/src/base/Contract.ts | 20 ++++++-------------- 4 files changed, 19 insertions(+), 32 deletions(-) diff --git a/packages/api-contract/src/base/Base.ts b/packages/api-contract/src/base/Base.ts index ba2504e190..ddc6f4cece 100644 --- a/packages/api-contract/src/base/Base.ts +++ b/packages/api-contract/src/base/Base.ts @@ -1,7 +1,7 @@ // Copyright 2017-2020 @polkadot/api authors & contributors // SPDX-License-Identifier: Apache-2.0 -import { ApiTypes, DecorateMethod, SubmittableModuleExtrinsics } from '@polkadot/api/types'; +import { ApiTypes, DecorateMethod } from '@polkadot/api/types'; import { AnyJson, Registry } from '@polkadot/types/types'; import { ApiObject } from '../types'; @@ -27,8 +27,4 @@ export default abstract class Base { assert(this.api.rx.tx.contracts && this.api.rx.tx.contracts.putCode, 'You need to connect to a node with the contracts module, the metadata does not enable api.tx.contracts on this instance'); } - - protected get _apiContracts (): SubmittableModuleExtrinsics<'rxjs'> { - return this.api.rx.tx.contracts; - } } diff --git a/packages/api-contract/src/base/Blueprint.ts b/packages/api-contract/src/base/Blueprint.ts index 1ac641641f..8af1750aa9 100644 --- a/packages/api-contract/src/base/Blueprint.ts +++ b/packages/api-contract/src/base/Blueprint.ts @@ -1,7 +1,7 @@ // Copyright 2017-2020 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import { ApiTypes, DecorateMethod, SignerOptions } from '@polkadot/api/types'; import { AccountId, EventRecord, Hash } from '@polkadot/types/interfaces'; import { AnyJson, IKeyringPair, ISubmittableResult } from '@polkadot/types/types'; import { ApiObject } from '../types'; @@ -21,7 +21,7 @@ import { applyOnEvent } from './util'; type BlueprintCreateResultSubscription = Observable>; export interface BlueprintCreate { - signAndSend (account: IKeyringPair | string | AccountId): BlueprintCreateResultSubscription; + signAndSend (account: IKeyringPair | string | AccountId, options?: SignerOptions): BlueprintCreateResultSubscription; } class BlueprintCreateResult extends SubmittableResult { @@ -50,10 +50,10 @@ export default class Blueprint extends Base { return { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment signAndSend: this._decorateMethod( - (account: IKeyringPair | string | AccountId): BlueprintCreateResultSubscription => - this._apiContracts + (account: IKeyringPair | string | AccountId, options?: SignerOptions): BlueprintCreateResultSubscription => + this.api.rx.tx.contracts .create(endowment, maxGas, this.codeHash, this.abi.constructors[constructorIndex](...params)) - .signAndSend(account) + .signAndSend(account, options) .pipe( map((result) => new BlueprintCreateResult(result, applyOnEvent(result, 'Instantiated', (record: EventRecord) => diff --git a/packages/api-contract/src/base/Code.ts b/packages/api-contract/src/base/Code.ts index 5c47ac324e..f7901743c7 100644 --- a/packages/api-contract/src/base/Code.ts +++ b/packages/api-contract/src/base/Code.ts @@ -1,12 +1,11 @@ // Copyright 2017-2020 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import { ApiTypes, DecorateMethod, SignerOptions } from '@polkadot/api/types'; import { AccountId, Address, EventRecord, Hash } from '@polkadot/types/interfaces'; import { AnyJson, IKeyringPair, ISubmittableResult } from '@polkadot/types/types'; import { ApiObject } from '../types'; -import BN from 'bn.js'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { SubmittableResult } from '@polkadot/api'; @@ -21,7 +20,7 @@ import { applyOnEvent } from './util'; type CodePutCodeResultSubscription = Observable>; export interface CodePutCode { - signAndSend (account: IKeyringPair | string | AccountId | Address): CodePutCodeResultSubscription; + signAndSend (account: IKeyringPair | string | AccountId | Address, options?: SignerOptions): CodePutCodeResultSubscription; } class CodePutCodeResult extends SubmittableResult { @@ -44,14 +43,14 @@ export default class Code extends Base { this.code = u8aToU8a(wasm); } - public createBlueprint = (maxGas: number | BN): CodePutCode => { + public createBlueprint = (): CodePutCode => { return { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment signAndSend: this._decorateMethod( - (account: IKeyringPair | string | AccountId): CodePutCodeResultSubscription => - this._apiContracts - .putCode(maxGas, compactAddLength(this.code)) - .signAndSend(account) + (account: IKeyringPair | string | AccountId, options?: SignerOptions): CodePutCodeResultSubscription => + this.api.rx.tx.contracts + .putCode(compactAddLength(this.code)) + .signAndSend(account, options) .pipe( map((result) => new CodePutCodeResult(result, applyOnEvent(result, 'CodeStored', (record: EventRecord) => diff --git a/packages/api-contract/src/base/Contract.ts b/packages/api-contract/src/base/Contract.ts index 9df39b3fd7..40d2a32ba7 100644 --- a/packages/api-contract/src/base/Contract.ts +++ b/packages/api-contract/src/base/Contract.ts @@ -2,6 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import { ApiTypes, DecorateMethod, ObsInnerType } from '@polkadot/api/types'; +import { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; + import { AccountId, ContractExecResult } from '@polkadot/types/interfaces'; import { AnyJson, Codec, CodecArg, IKeyringPair } from '@polkadot/types/types'; import { ApiObject, AbiMessage, ContractCallOutcome } from '../types'; @@ -15,7 +17,6 @@ import { assert, isFunction, isNumber } from '@polkadot/util'; import Abi from '../Abi'; import { formatData } from '../util'; import Base from './Base'; -import { SignerOptions } from '@polkadot/api/submittable/types'; type ContractCallTypes = 'tx' | 'rpc'; @@ -25,10 +26,6 @@ type ContractCallResultSubscription>>; -export interface ContractExec { - signAndSend (account: IKeyringPair | string | AccountId, options?: Partial): ContractCallResultSubscription; -} - export interface ContractRead { send (account: IKeyringPair | string | AccountId): ContractCallResultSubscription; } @@ -60,17 +57,12 @@ export default class Contract extends Base { return [fn(...params), fn]; } - public exec = (message: AbiMessage | number, value: BN | string | number, gasLimit: BN | string | number, ...params: CodecArg[]): ContractExec => { + public exec = (message: AbiMessage | number, value: BN | string | number, gasLimit: BN | string | number, ...params: CodecArg[]): SubmittableExtrinsic => { const [inputData] = this._createInput(message, params); - return { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - signAndSend: this._decorateMethod((account: IKeyringPair | string | AccountId, options?: Partial): ContractCallResult<'tx'> => - this._apiContracts - .call(this.address, value, gasLimit, inputData) - .signAndSend(account, options) - ) - }; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore I give up + return this.api.tx.contracts.call(this.address, value, gasLimit, inputData); } public read = (message: AbiMessage | number, value: BN | string | number, gasLimit: BN | string | number, ...params: CodecArg[]): ContractRead => {