[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: wallet-core: skeleton support
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: wallet-core: skeleton support for regional currency scopes |
Date: |
Sun, 12 Feb 2023 21:13:40 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository wallet-core.
The following commit(s) were added to refs/heads/master by this push:
new 79b77a0c3 wallet-core: skeleton support for regional currency scopes
79b77a0c3 is described below
commit 79b77a0c3c5a9a07d22c276a63ed81eb30507eba
Author: Florian Dold <florian@dold.me>
AuthorDate: Sun Feb 12 21:13:30 2023 +0100
wallet-core: skeleton support for regional currency scopes
---
packages/taler-util/src/wallet-types.ts | 30 ++++++++++++-------
packages/taler-wallet-core/src/db.ts | 35 +++++++++++++++++++++-
.../taler-wallet-core/src/operations/balance.ts | 5 ++++
3 files changed, 59 insertions(+), 11 deletions(-)
diff --git a/packages/taler-util/src/wallet-types.ts
b/packages/taler-util/src/wallet-types.ts
index 0f29b964b..96251540e 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -27,11 +27,7 @@
/**
* Imports.
*/
-import {
- AmountJson,
- codecForAmountJson,
- codecForAmountString,
-} from "./amounts.js";
+import { AmountJson, codecForAmountString } from "./amounts.js";
import { BackupRecovery } from "./backup-types.js";
import {
buildCodecForObject,
@@ -116,6 +112,7 @@ export const codecForGetBalanceDetailRequest =
.build("GetBalanceDetailRequest");
export interface Balance {
+ scopeInfo: ScopeInfo;
available: AmountString;
pendingIncoming: AmountString;
pendingOutgoing: AmountString;
@@ -137,12 +134,24 @@ export interface InitResponse {
versionInfo: WalletCoreVersion;
}
+export enum ScopeType {
+ Global = "global",
+ Exchange = "exchange",
+ Auditor = "auditor",
+}
+
+export type ScopeInfo =
+ | { type: ScopeType.Global; currency: string }
+ | { type: ScopeType.Exchange; currency: string; url: string }
+ | { type: ScopeType.Auditor; currency: string; url: string };
+
export interface BalancesResponse {
balances: Balance[];
}
export const codecForBalance = (): Codec<Balance> =>
buildCodecForObject<Balance>()
+ .property("scopeInfo", codecForAny()) // FIXME
.property("available", codecForString())
.property("hasPendingTransactions", codecForBoolean())
.property("pendingIncoming", codecForString())
@@ -1423,11 +1432,12 @@ export interface PreparePayTemplateRequest {
templateParams: Record<string, string>;
}
-export const codecForPreparePayTemplateRequest = ():
Codec<PreparePayTemplateRequest> =>
- buildCodecForObject<PreparePayTemplateRequest>()
- .property("talerPayTemplateUri", codecForString())
- .property("templateParams", codecForAny())
- .build("PreparePayTemplate");
+export const codecForPreparePayTemplateRequest =
+ (): Codec<PreparePayTemplateRequest> =>
+ buildCodecForObject<PreparePayTemplateRequest>()
+ .property("talerPayTemplateUri", codecForString())
+ .property("templateParams", codecForAny())
+ .build("PreparePayTemplate");
export interface ConfirmPayRequest {
proposalId: string;
diff --git a/packages/taler-wallet-core/src/db.ts
b/packages/taler-wallet-core/src/db.ts
index 78c73fba5..8aff18c6d 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -121,7 +121,7 @@ export const CURRENT_DB_CONFIG_KEY = "currentMainDbName";
* backwards-compatible way or object stores and indices
* are added.
*/
-export const WALLET_DB_MINOR_VERSION = 2;
+export const WALLET_DB_MINOR_VERSION = 3;
/**
* Ranges for operation status fields.
@@ -1956,11 +1956,44 @@ export interface UserAttentionRecord {
read: TalerProtocolTimestamp | undefined;
}
+export interface DbExchangeHandle {
+ url: string;
+ exchangeMasterPub: string;
+}
+
+export interface DbAuditorHandle {
+ url: string;
+ auditorPub: string;
+}
+
+// Work in progress for regional currencies
+export interface CurrencySettingsRecord {
+ currency: string;
+
+ globalScopeExchanges: DbExchangeHandle[];
+
+ globalScopeAuditors: DbAuditorHandle[];
+
+ // Used to decide which auditor to show the currency under
+ // when multiple auditors apply.
+ auditorPriority: string[];
+
+ // Later, we might add stuff related to how the currency is rendered.
+}
+
/**
* Schema definition for the IndexedDB
* wallet database.
*/
export const WalletStoresV1 = {
+ currencySettings: describeStore(
+ "currencySettings",
+ describeContents<CurrencySettingsRecord>({
+ keyPath: ["currency"],
+ versionAdded: 3,
+ }),
+ {},
+ ),
coinAvailability: describeStore(
"coinAvailability",
describeContents<CoinAvailabilityRecord>({
diff --git a/packages/taler-wallet-core/src/operations/balance.ts
b/packages/taler-wallet-core/src/operations/balance.ts
index 50613d0aa..59c49deaa 100644
--- a/packages/taler-wallet-core/src/operations/balance.ts
+++ b/packages/taler-wallet-core/src/operations/balance.ts
@@ -54,6 +54,7 @@ import {
GetBalanceDetailRequest,
Logger,
parsePaytoUri,
+ ScopeType,
} from "@gnu-taler/taler-util";
import {
AllowedAuditorInfo,
@@ -170,6 +171,10 @@ export async function getBalancesInsideTransaction(
.forEach((c) => {
const v = balanceStore[c];
balancesResponse.balances.push({
+ scopeInfo: {
+ type: ScopeType.Global,
+ currency: Amounts.currencyOf(v.available),
+ },
available: Amounts.stringify(v.available),
pendingIncoming: Amounts.stringify(v.pendingIncoming),
pendingOutgoing: Amounts.stringify(v.pendingOutgoing),
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: wallet-core: skeleton support for regional currency scopes,
gnunet <=