diff options
author | Florian Dold <florian@dold.me> | 2023-10-17 20:43:03 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-10-17 20:43:09 +0200 |
commit | 39ba26c7623a380c15bf183d25ec8f1fd60b65b6 (patch) | |
tree | b77c3881d2bad24b397ff599bf329d23c789bb38 /packages/taler-wallet-core | |
parent | 503cbfbb95828677b83212816951eb501de2a8fe (diff) | |
download | wallet-core-39ba26c7623a380c15bf183d25ec8f1fd60b65b6.tar.gz wallet-core-39ba26c7623a380c15bf183d25ec8f1fd60b65b6.tar.bz2 wallet-core-39ba26c7623a380c15bf183d25ec8f1fd60b65b6.zip |
wallet-core: implement listExchangesForScopedCurrency
Diffstat (limited to 'packages/taler-wallet-core')
-rw-r--r-- | packages/taler-wallet-core/src/wallet-api-types.ts | 14 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/wallet.ts | 21 |
2 files changed, 35 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts index a8de9ac03..b974aa4bb 100644 --- a/packages/taler-wallet-core/src/wallet-api-types.ts +++ b/packages/taler-wallet-core/src/wallet-api-types.ts @@ -55,6 +55,7 @@ import { DeleteTransactionRequest, ExchangeDetailedResponse, ExchangesListResponse, + ExchangesShortListResponse, FailTransactionRequest, ForceRefreshRequest, ForgetKnownBankAccountsRequest, @@ -77,6 +78,7 @@ import { InitiatePeerPushDebitResponse, IntegrationTestArgs, KnownBankAccounts, + ListExchangesForScopedCurrencyRequest, ListKnownBankAccountsRequest, ManualWithdrawalDetails, PrepareDepositRequest, @@ -225,6 +227,7 @@ export enum WalletApiOperation { RecoverStoredBackup = "recoverStoredBackup", UpdateExchangeEntry = "updateExchangeEntry", TestingWaitTasksProcessed = "testingWaitTasksProcessed", + ListExchangesForScopedCurrency = "listExchangesForScopedCurrency", } // group: Initialization @@ -557,6 +560,16 @@ export type ListExchangesOp = { }; /** + * List exchanges that are available for withdrawing a particular + * scoped currency. + */ +export type ListExchangesForScopedCurrencyOp = { + op: WalletApiOperation.ListExchangesForScopedCurrency; + request: ListExchangesForScopedCurrencyRequest; + response: ExchangesShortListResponse; +}; + +/** * Add / force-update an exchange. */ export type AddExchangeOp = { @@ -1105,6 +1118,7 @@ export type WalletOperations = { [WalletApiOperation.AcceptBankIntegratedWithdrawal]: AcceptBankIntegratedWithdrawalOp; [WalletApiOperation.AcceptManualWithdrawal]: AcceptManualWithdrawalOp; [WalletApiOperation.ListExchanges]: ListExchangesOp; + [WalletApiOperation.ListExchangesForScopedCurrency]: ListExchangesForScopedCurrencyOp; [WalletApiOperation.AddExchange]: AddExchangeOp; [WalletApiOperation.ListKnownBankAccounts]: ListKnownBankAccountsOp; [WalletApiOperation.AddKnownBankAccounts]: AddKnownBankAccountsOp; 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); |