From a53308e188f34488072cfd9569d3b10af72939d6 Mon Sep 17 00:00:00 2001 From: Victor Creed <69458664+creed-victor@users.noreply.github.com> Date: Wed, 22 May 2024 11:35:11 +0300 Subject: [PATCH] fix: lookup of smart router quotes (#920) * fix: lookup of smart router quotes * fix: failing tests * fix: add types --- .changeset/nasty-avocados-float.md | 5 ++++ .../src/swaps/smart-router/smart-router.ts | 26 +++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 .changeset/nasty-avocados-float.md diff --git a/.changeset/nasty-avocados-float.md b/.changeset/nasty-avocados-float.md new file mode 100644 index 000000000..79b4a516a --- /dev/null +++ b/.changeset/nasty-avocados-float.md @@ -0,0 +1,5 @@ +--- +'@sovryn/sdk': patch +--- + +fix: smart router lookup diff --git a/packages/sdk/src/swaps/smart-router/smart-router.ts b/packages/sdk/src/swaps/smart-router/smart-router.ts index ee630b5b8..e05c98a5d 100644 --- a/packages/sdk/src/swaps/smart-router/smart-router.ts +++ b/packages/sdk/src/swaps/smart-router/smart-router.ts @@ -58,14 +58,24 @@ export class SmartRouter { destination, ); - const quotes = await Promise.all( - routes.map(async route => { - const quote = await route.quote(entry, destination, amount).catch(); - if (!quote) { - return { route, quote: BigNumber.from(0) }; - } - return { route, quote }; - }), + const quotes = await Promise.allSettled( + routes.map(route => + route + .quote(entry, destination, amount) + .then(quote => ({ route, quote })), + ), + ).then(results => + results + .filter(result => result.status === 'fulfilled') + .map( + result => + ( + result as PromiseFulfilledResult<{ + route: SwapRoute; + quote: BigNumber; + }> + ).value, + ), ); const sortedQuotes = quotes.sort((a, b) =>