capi
capi copied to clipboard
Duplicate transactions with transactionStatuses
'sent' is an ExtrinsicStatusRune here
sent.transactionStatuses((status) => {
if (status === 'ready') {
setStatus(...);
}
return false;
}).run();
const inBlockEvents = await sent.inBlockEvents().run();
So this code breaks if I cancel the transaction, even though it's in a try catch block
The initial fix was to add await
await sent.transactionStatuses
but then it will be stuck forever, unless I add return true
if (status === 'ready') {
setStatus(...);
return true;
}
unfortunately this creates a new issue, now the first transaction will be called twice in a row I receive a popup two times, after confirming the second one, only then it proceeds further
the only way to mitigate this for now is to use the initial code without await or return true and add .rehandle(is(SignerError), (error) => error.access('inner'))
after .transactionStatuses
At least this way my catch captures the error and the whole page doesn't turn red
though I thought error.access('inner')
would return specifically that portion of the error object
instead I get this
maybe this https://github.com/paritytech/capi/pull/1176 will help me later