gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 02/03: wallet-core: use more numeric fields


From: gnunet
Subject: [taler-wallet-core] 02/03: wallet-core: use more numeric fields
Date: Wed, 21 Sep 2022 22:50:51 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

commit a398959670d56f5ecd3ef58abc85f14c55c8a427
Author: Florian Dold <florian@dold.me>
AuthorDate: Wed Sep 21 21:13:31 2022 +0200

    wallet-core: use more numeric fields
---
 packages/taler-wallet-core/src/db.ts               | 43 +++++++++++++---------
 .../src/operations/backup/import.ts                |  6 +++
 .../taler-wallet-core/src/operations/pending.ts    |  2 -
 .../taler-wallet-core/src/operations/refresh.ts    |  1 +
 packages/taler-wallet-core/src/operations/tip.ts   |  1 +
 .../taler-wallet-core/src/operations/withdraw.ts   |  3 ++
 6 files changed, 37 insertions(+), 19 deletions(-)

diff --git a/packages/taler-wallet-core/src/db.ts 
b/packages/taler-wallet-core/src/db.ts
index 8ed4fe85e..493f1a1d0 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -65,6 +65,8 @@ import { Event, IDBDatabase } from "@gnu-taler/idb-bridge";
  * - Every record that has a corresponding transaction item must have
  *   an index for a mandatory timestamp field.
  * - Optional fields should be avoided, use "T | undefined" instead.
+ * - Do all records have some obvious, indexed field that can
+ *   be used for range queries?
  *
  * @author Florian Dold <dold@taler.net>
  */
@@ -99,8 +101,8 @@ export const WALLET_DB_MINOR_VERSION = 1;
 export namespace OperationStatusRange {
   export const ACTIVE_START = 10;
   export const ACTIVE_END = 29;
-  export const DORMANT_START = 40;
-  export const DORMANT_END = 59;
+  export const DORMANT_START = 50;
+  export const DORMANT_END = 69;
 }
 
 /**
@@ -148,7 +150,7 @@ export interface ReserveBankInfo {
    * URL that the user can be redirected to, and allows
    * them to confirm (or abort) the bank-integrated withdrawal.
    */
-  confirmUrl?: string;
+  confirmUrl: string | undefined;
 
   /**
    * Exchange payto URI that the bank will use to fund the reserve.
@@ -162,14 +164,14 @@ export interface ReserveBankInfo {
    *
    * Set to undefined if that hasn't happened yet.
    */
-  timestampReserveInfoPosted?: TalerProtocolTimestamp;
+  timestampReserveInfoPosted: TalerProtocolTimestamp | undefined;
 
   /**
    * Time when the reserve was confirmed by the bank.
    *
    * Set to undefined if not confirmed yet.
    */
-  timestampBankConfirmed?: TalerProtocolTimestamp;
+  timestampBankConfirmed: TalerProtocolTimestamp | undefined;
 }
 
 /**
@@ -195,6 +197,8 @@ export interface AuditorTrustRecord {
   /**
    * UIDs for the operation of adding this auditor
    * as a trusted auditor.
+   *
+   * (Used for backup/sync merging and tombstones.)
    */
   uids: string[];
 }
@@ -232,15 +236,17 @@ export enum DenominationVerificationStatus {
   /**
    * Verification was delayed.
    */
-  Unverified = "unverified",
+  Unverified = OperationStatusRange.ACTIVE_START,
+
   /**
    * Verified as valid.
    */
-  VerifiedGood = "verified-good",
+  VerifiedGood = OperationStatusRange.DORMANT_START,
+
   /**
    * Verified as invalid.
    */
-  VerifiedBad = "verified-bad",
+  VerifiedBad = OperationStatusRange.DORMANT_START + 1,
 }
 
 export interface DenomFees {
@@ -705,13 +711,16 @@ export interface CoinRecord {
 
   /**
    * Information about what the coin has been allocated for.
-   * Used to prevent allocation of the same coin for two different payments.
+   *
+   * Used for:
+   * - Diagnostics
+   * - Idempotency of applying a coin selection (e.g. after re-selection)
    */
-  allocation?: CoinAllocation;
+  allocation: CoinAllocation | undefined;
 
   maxAge: number;
 
-  ageCommitmentProof?: AgeCommitmentProof;
+  ageCommitmentProof: AgeCommitmentProof | undefined;
 }
 
 export interface CoinAllocation {
@@ -801,7 +810,7 @@ export interface ProposalRecord {
   /**
    * Session ID we got when downloading the contract.
    */
-  downloadSessionId?: string;
+  downloadSessionId: string | undefined;
 }
 
 /**
@@ -875,19 +884,19 @@ export interface TipRecord {
 }
 
 export enum RefreshCoinStatus {
-  Pending = "pending",
-  Finished = "finished",
+  Pending = OperationStatusRange.ACTIVE_START,
+  Finished = OperationStatusRange.DORMANT_START,
 
   /**
    * The refresh for this coin has been frozen, because of a permanent error.
    * More info in lastErrorPerCoin.
    */
-  Frozen = "frozen",
+  Frozen = OperationStatusRange.DORMANT_START + 1,
 }
 
 export enum OperationStatus {
-  Finished = "finished",
-  Pending = "pending",
+  Finished = OperationStatusRange.DORMANT_START,
+  Pending = OperationStatusRange.ACTIVE_START,
 }
 
 export interface RefreshGroupRecord {
diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts 
b/packages/taler-wallet-core/src/operations/backup/import.ts
index 3a92273df..9997dd09d 100644
--- a/packages/taler-wallet-core/src/operations/backup/import.ts
+++ b/packages/taler-wallet-core/src/operations/backup/import.ts
@@ -285,6 +285,10 @@ export async function importCoin(
       coinSource,
       // FIXME!
       maxAge: AgeRestriction.AGE_UNRESTRICTED,
+      // FIXME!
+      ageCommitmentProof: undefined,
+      // FIXME!
+      allocation: undefined,
     };
     if (coinRecord.status === CoinStatus.Fresh) {
       await makeCoinAvailable(ws, tx, coinRecord);
@@ -655,6 +659,8 @@ export async function importBackup(
             repurchaseProposalId: backupProposal.repurchase_proposal_id,
             download,
             proposalStatus,
+            // FIXME!
+            downloadSessionId: undefined,
           });
         }
       }
diff --git a/packages/taler-wallet-core/src/operations/pending.ts 
b/packages/taler-wallet-core/src/operations/pending.ts
index 18e8ec83b..0dcd09e25 100644
--- a/packages/taler-wallet-core/src/operations/pending.ts
+++ b/packages/taler-wallet-core/src/operations/pending.ts
@@ -28,8 +28,6 @@ import {
   BackupProviderStateTag,
   RefreshCoinStatus,
   OperationStatus,
-  WithdrawalGroupRecord,
-  WithdrawalGroupStatus,
   OperationStatusRange,
 } from "../db.js";
 import {
diff --git a/packages/taler-wallet-core/src/operations/refresh.ts 
b/packages/taler-wallet-core/src/operations/refresh.ts
index 55070618f..9fe2e6a8f 100644
--- a/packages/taler-wallet-core/src/operations/refresh.ts
+++ b/packages/taler-wallet-core/src/operations/refresh.ts
@@ -682,6 +682,7 @@ async function refreshReveal(
         coinEvHash: pc.coinEvHash,
         maxAge: pc.maxAge,
         ageCommitmentProof: pc.ageCommitmentProof,
+        allocation: undefined,
       };
 
       coins.push(coin);
diff --git a/packages/taler-wallet-core/src/operations/tip.ts 
b/packages/taler-wallet-core/src/operations/tip.ts
index a0fd8d328..bd5ff51e7 100644
--- a/packages/taler-wallet-core/src/operations/tip.ts
+++ b/packages/taler-wallet-core/src/operations/tip.ts
@@ -320,6 +320,7 @@ export async function processTip(
       coinEvHash: planchet.coinEvHash,
       maxAge: AgeRestriction.AGE_UNRESTRICTED,
       ageCommitmentProof: planchet.ageCommitmentProof,
+      allocation: undefined,
     });
   }
 
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts 
b/packages/taler-wallet-core/src/operations/withdraw.ts
index ce910363f..cedb62361 100644
--- a/packages/taler-wallet-core/src/operations/withdraw.ts
+++ b/packages/taler-wallet-core/src/operations/withdraw.ts
@@ -834,6 +834,7 @@ async function processPlanchetVerifyAndStoreCoin(
     },
     maxAge: planchet.maxAge,
     ageCommitmentProof: planchet.ageCommitmentProof,
+    allocation: undefined,
   };
 
   const planchetCoinPub = planchet.coinPub;
@@ -1832,6 +1833,8 @@ export async function acceptWithdrawalFromUri(
         exchangePaytoUri,
         talerWithdrawUri: req.talerWithdrawUri,
         confirmUrl: withdrawInfo.confirmTransferUrl,
+        timestampBankConfirmed: undefined,
+        timestampReserveInfoPosted: undefined,
       },
     },
     restrictAge: req.restrictAge,

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]