aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/common.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-10-15 21:26:36 +0200
committerFlorian Dold <florian@dold.me>2022-10-15 21:26:36 +0200
commitfbb7dd9e7e7fe4cf0611f5827f0bd250634dc29f (patch)
treeb6fb1fc37c67f72e8d2333d76fd1588931d261cb /packages/taler-wallet-core/src/operations/common.ts
parentd98d49aa58d59e6d428e5d024ba3f6ea0352ae2a (diff)
downloadwallet-core-fbb7dd9e7e7fe4cf0611f5827f0bd250634dc29f.tar.xz
wallet-core, wallet-cli: add status to exchange list, add detail query to CLI
Diffstat (limited to 'packages/taler-wallet-core/src/operations/common.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/common.ts35
1 files changed, 34 insertions, 1 deletions
diff --git a/packages/taler-wallet-core/src/operations/common.ts b/packages/taler-wallet-core/src/operations/common.ts
index ee7a1b46e..95441be2b 100644
--- a/packages/taler-wallet-core/src/operations/common.ts
+++ b/packages/taler-wallet-core/src/operations/common.ts
@@ -22,6 +22,8 @@ import {
Amounts,
CoinRefreshRequest,
CoinStatus,
+ ExchangeEntryStatus,
+ ExchangeListItem,
ExchangeTosStatus,
j2s,
Logger,
@@ -32,7 +34,12 @@ import {
TransactionIdStr,
TransactionType,
} from "@gnu-taler/taler-util";
-import { WalletStoresV1, CoinRecord, ExchangeDetailsRecord } from "../db.js";
+import {
+ WalletStoresV1,
+ CoinRecord,
+ ExchangeDetailsRecord,
+ ExchangeRecord,
+} from "../db.js";
import { makeErrorDetail, TalerError } from "../errors.js";
import { InternalWalletState } from "../internal-wallet-state.js";
import { checkDbInvariant, checkLogicInvariant } from "../util/invariants.js";
@@ -320,3 +327,29 @@ export function getExchangeTosStatus(
}
return ExchangeTosStatus.Changed;
}
+
+export function makeExchangeListItem(
+ r: ExchangeRecord,
+ exchangeDetails: ExchangeDetailsRecord | undefined,
+): ExchangeListItem {
+ if (!exchangeDetails) {
+ return {
+ exchangeBaseUrl: r.baseUrl,
+ currency: undefined,
+ tosStatus: ExchangeTosStatus.Unknown,
+ paytoUris: [],
+ exchangeStatus: ExchangeEntryStatus.Unknown,
+ permanent: r.permanent,
+ };
+ }
+ let exchangeStatus;
+ exchangeStatus = ExchangeEntryStatus.Ok;
+ return {
+ exchangeBaseUrl: r.baseUrl,
+ currency: exchangeDetails.currency,
+ tosStatus: getExchangeTosStatus(exchangeDetails),
+ paytoUris: exchangeDetails.wireInfo.accounts.map((x) => x.payto_uri),
+ exchangeStatus,
+ permanent: r.permanent,
+ };
+}