diff options
Diffstat (limited to 'packages/taler-wallet-core/src/wallet.ts')
-rw-r--r-- | packages/taler-wallet-core/src/wallet.ts | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index 06d9bb9e8..6600aa799 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -129,6 +129,9 @@ import { setDangerousTimetravel, TestingWaitTransactionRequest, codecForUpdateExchangeEntryRequest, + codecForListExchangesForScopedCurrencyRequest, + ListExchangesForScopedCurrencyRequest, + ExchangesShortListResponse, } from "@gnu-taler/taler-util"; import type { HttpRequestLibrary } from "@gnu-taler/taler-util/http"; import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http"; @@ -1132,6 +1135,24 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>( case WalletApiOperation.ListExchanges: { return await getExchanges(ws); } + case WalletApiOperation.ListExchangesForScopedCurrency: { + const req = + codecForListExchangesForScopedCurrencyRequest().decode(payload); + const exchangesResp = await getExchanges(ws); + const result: ExchangesShortListResponse = { + exchanges: [], + }; + // Right now we only filter on the currency, as wallet-core doesn't + // fully support scoped currencies yet. + for (const exch of exchangesResp.exchanges) { + if (exch.currency === req.scope.currency) { + result.exchanges.push({ + exchangeBaseUrl: exch.exchangeBaseUrl, + }); + } + } + return result; + } case WalletApiOperation.GetExchangeDetailedInfo: { const req = codecForAddExchangeRequest().decode(payload); return await getExchangeDetailedInfo(ws, req.exchangeBaseUrl); |