capi icon indicating copy to clipboard operation
capi copied to clipboard

Duplicate transactions with transactionStatuses

Open VadimSaveljev opened this issue 1 year ago • 1 comments

'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

VadimSaveljev avatar Jul 18 '23 17:07 VadimSaveljev

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 Screenshot 2023-07-18 at 20 35 51

maybe this https://github.com/paritytech/capi/pull/1176 will help me later

VadimSaveljev avatar Jul 18 '23 17:07 VadimSaveljev