Skip to content

Commit

Permalink
fix: handling transfer cancellation on substrate (#195)
Browse files Browse the repository at this point in the history
<!--- Provide a general summary of your changes in the Title above -->

## Description

<!--- Describe your changes in detail -->

Handles user cancelation on substrate transfer

## Related Issue Or Context

<!--- If suggesting a new feature or change, please discuss it in an
issue first -->
<!--- If fixing a bug, there should be an issue describing it with steps
to reproduce -->
<!--- Otherwise, describe context and motivation for change here -->

Closes: #193 

## How Has This Been Tested? Testing details.

<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran
to -->
<!--- see how your change affects other areas of the code, etc. -->

## Types of changes

<!--- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation

## Checklist:

<!--- Go over all the following points, and put an `x` in all the boxes
that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->

- [ ] I have commented my code, particularly in hard-to-understand
areas.
- [ ] I have ensured that all acceptance criteria (or expected behavior)
from issue are met
- [ ] I have updated the documentation locally and in sygma-docs.
- [ ] I have added tests to cover my changes.
- [ ] I have ensured that all the checks are passing and green, I've
signed the CLA bot
  • Loading branch information
wainola authored May 22, 2024
1 parent d65d99a commit 6ce25cb
Showing 1 changed file with 30 additions and 25 deletions.
55 changes: 30 additions & 25 deletions packages/widget/src/controllers/transfers/substrate/execute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,38 @@ export async function executeNextSubstrateTransaction(

const provider = this.sourceSubstrateProvider;
this.waitingTxExecution = true;
await (this.pendingTransferTransaction as SubstrateTransaction).signAndSend(
sender,
{ signer: signer },
({ blockNumber, txIndex, status, dispatchError }) => {
if (status.isInBlock) {
this.waitingTxExecution = false;
this.pendingTransferTransaction = undefined;
this.transferTransactionId = `${blockNumber?.toString()}-${txIndex?.toString()}`;
this.host.requestUpdate();
}

if (status.isBroadcast) {
this.waitingUserConfirmation = false;
this.host.requestUpdate();
}

if (dispatchError) {
if (dispatchError.isModule) {
const decoded = provider?.registry.findMetaError(
dispatchError.asModule
);
const [docs] = decoded?.docs || ['Transfer failed'];
this.errorMessage = docs;
try {
await (this.pendingTransferTransaction as SubstrateTransaction).signAndSend(
sender,
{ signer: signer },
({ blockNumber, txIndex, status, dispatchError }) => {
if (status.isInBlock) {
this.waitingTxExecution = false;
this.pendingTransferTransaction = undefined;
this.transferTransactionId = `${blockNumber?.toString()}-${txIndex?.toString()}`;
this.host.requestUpdate();
}

if (status.isBroadcast) {
this.waitingUserConfirmation = false;
this.host.requestUpdate();
}

if (dispatchError) {
if (dispatchError.isModule) {
const decoded = provider?.registry.findMetaError(
dispatchError.asModule
);
const [docs] = decoded?.docs || ['Transfer failed'];
this.errorMessage = docs;
this.waitingTxExecution = false;
this.host.requestUpdate();
}
}
}
}
);
);
} catch (error) {
this.waitingUserConfirmation = false;
this.waitingTxExecution = false;
}
}

0 comments on commit 6ce25cb

Please sign in to comment.