Fix signAndSend (#593)

* Fix signAndSend

* Remove useless arg
This commit is contained in:
Amaury Martiny
2019-01-16 17:23:26 +01:00
committed by Jaco Greeff
parent b653ab4742
commit f548dd405b
2 changed files with 35 additions and 11 deletions
+13 -10
View File
@@ -53,7 +53,7 @@ export default class SubmittableExtrinsic<OnCall> extends Extrinsic {
send (statusCb?: (result: SubmittableSendResult) => any): Observable<SubmittableSendResult> {
return this._onCall(
(...args: any[]) => (this._api.rpc.author
() => (this._api.rpc.author
.submitAndWatchExtrinsic(this) as Observable<ExtrinsicStatus>)
.pipe(switchMap((status) => this.trackStatus(status, statusCb))),
[statusCb]
@@ -66,14 +66,17 @@ export default class SubmittableExtrinsic<OnCall> extends Extrinsic {
return this;
}
signAndSend (signerPair: KeyringPair, statusCb: (result: SubmittableSendResult) => any): Observable<SubmittableSendResult> {
return this._api.query.system
.accountNonce(signerPair.address())
.pipe(
first(),
switchMap((nonce) =>
this.sign(signerPair, nonce as Index).send(statusCb)
)
);
signAndSend (signerPair: KeyringPair, statusCb?: (result: SubmittableSendResult) => any): Observable<SubmittableSendResult> {
return this._onCall(
() => this._api.query.system
.accountNonce(signerPair.address())
.pipe(
first(),
switchMap((nonce) =>
this.sign(signerPair, nonce as Index).send(statusCb)
)
),
[statusCb]
) as unknown as Observable<SubmittableSendResult>;
}
}
+22 -1
View File
@@ -21,7 +21,7 @@ describe.skip('e2e transactions', () => {
jest.setTimeout(5000);
});
it('makes a transfer', async (done) => {
it('makes a transfer (sign, then send)', async (done) => {
const nonce = await api.query.system.accountNonce(keyring.dave.address());
api.tx.balances
@@ -45,6 +45,27 @@ describe.skip('e2e transactions', () => {
});
});
it('makes a transfer (signAndSend)', async (done) => {
api.tx.balances
.transfer('12ghjsRJpeJpUQaCQeHcBv9pRQA3tdcMxeL8cVk9JHWJGHjd', 12345)
.signAndSend(keyring.dave, ({ events, status, type }) => {
console.log('Transaction status:', type);
if (type === 'Finalised') {
console.log('Completed at block hash', status.value.toHex());
console.log('Events:');
events.forEach(({ phase, event: { data, method, section } }) => {
console.log('\t', phase.toString(), `: ${section}.${method}`, data.toString());
});
if (events.length) {
done();
}
}
});
});
it('makes a proposal', async () => {
const nonce = await api.query.system.accountNonce(keyring.alice.address());