summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-03-25 12:06:57 +0100
committerFlorian Dold <florian@dold.me>2024-03-25 12:06:57 +0100
commite9bdeb71b7e66d2fbbeab869b3115de88b626890 (patch)
tree879791d46fe7dbcd710840d7319a760143c3af8f /packages
parentbc29fc73aed60c83b4e508754a40c1deed798cbd (diff)
downloadwallet-core-e9bdeb71b7e66d2fbbeab869b3115de88b626890.tar.gz
wallet-core-e9bdeb71b7e66d2fbbeab869b3115de88b626890.tar.bz2
wallet-core-e9bdeb71b7e66d2fbbeab869b3115de88b626890.zip
wallet-core: pass extended bank account info to UI
Also pre-sort accounts by priority
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-util/src/taler-types.ts9
-rw-r--r--packages/taler-util/src/wallet-types.ts10
-rw-r--r--packages/taler-wallet-core/src/withdraw.ts8
3 files changed, 26 insertions, 1 deletions
diff --git a/packages/taler-util/src/taler-types.ts b/packages/taler-util/src/taler-types.ts
index 419aeb159..5c0b3d0c1 100644
--- a/packages/taler-util/src/taler-types.ts
+++ b/packages/taler-util/src/taler-types.ts
@@ -32,7 +32,6 @@ import {
buildCodecForUnion,
codecForAny,
codecForBoolean,
- codecForConstNumber,
codecForConstString,
codecForList,
codecForMap,
@@ -2305,6 +2304,12 @@ export interface ExchangeWireAccount {
// a TALER_MasterWireDetailsPS
// with purpose TALER_SIGNATURE_MASTER_WIRE_DETAILS.
master_sig: EddsaSignatureString;
+
+ // Display label wallets should use to show this
+ // bank account.
+ // Since protocol **v19**.
+ bank_label?: string;
+ priority?: number;
}
export const codecForExchangeWireAccount = (): Codec<ExchangeWireAccount> =>
@@ -2314,6 +2319,8 @@ export const codecForExchangeWireAccount = (): Codec<ExchangeWireAccount> =>
.property("debit_restrictions", codecForList(codecForAny()))
.property("master_sig", codecForString())
.property("payto_uri", codecForString())
+ .property("bank_label", codecOptional(codecForString()))
+ .property("priority", codecOptional(codecForNumber()))
.build("WireAccount");
export type Integer = number;
diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts
index 5916eb968..0b09b0dbf 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -3020,6 +3020,16 @@ export interface WithdrawalExchangeAccountDetails {
creditRestrictions?: AccountRestriction[];
/**
+ * Label given to the account or the account's bank by the exchange.
+ */
+ bankLabel?: string;
+
+ /*
+ * Display priority assigned to this bank account by the exchange.
+ */
+ priority?: number;
+
+ /**
* Error that happened when attempting to request the conversion rate.
*/
conversionError?: TalerErrorDetail;
diff --git a/packages/taler-wallet-core/src/withdraw.ts b/packages/taler-wallet-core/src/withdraw.ts
index f27e9e132..9132d2b09 100644
--- a/packages/taler-wallet-core/src/withdraw.ts
+++ b/packages/taler-wallet-core/src/withdraw.ts
@@ -2799,6 +2799,8 @@ async function fetchAccount(
status: "ok",
paytoUri,
transferAmount,
+ bankLabel: acct.bank_label,
+ priority: acct.priority,
currencySpecification,
creditRestrictions: acct.credit_restrictions,
};
@@ -2834,6 +2836,12 @@ async function fetchWithdrawalAccountInfo(
);
withdrawalAccounts.push(acctInfo);
}
+ withdrawalAccounts.sort((x1, x2) => {
+ // Accounts without priority come last.
+ const n1 = x1.priority ?? Number.MAX_SAFE_INTEGER;
+ const n2 = x2.priority ?? Number.MAX_SAFE_INTEGER;
+ return Math.sign(n1 - n2);
+ });
return withdrawalAccounts;
}