committed by
Jaco Greeff
parent
b653ab4742
commit
f548dd405b
@@ -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>;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user