taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit b567ba4668a5ac034e7227f53b5290195303980c
parent b96464fe09605e829dcd5715c69668e64c5454b3
Author: Florian Dold <florian@dold.me>
Date:   Thu, 13 Apr 2023 15:58:38 +0200

wallet-core: work around missing timestamp in legacy transaction

Diffstat:
Mpackages/taler-harness/src/index.ts | 1+
Mpackages/taler-wallet-cli/src/index.ts | 11+++++++++++
Mpackages/taler-wallet-core/src/operations/transactions.ts | 9+++++++--
3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/packages/taler-harness/src/index.ts b/packages/taler-harness/src/index.ts @@ -162,6 +162,7 @@ advancedCli await runTestWithState(testState, runEnv1, "env1", true); }); + const sandcastleCli = testingCli.subcommand("sandcastleArgs", "sandcastle", { help: "Subcommands for handling GNU Taler sandcastle deployments.", }); diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts @@ -38,6 +38,7 @@ import { setGlobalLogLevelFromString, summarizeTalerErrorDetail, TalerUriType, + Transaction, WalletNotification, } from "@gnu-taler/taler-util"; import { clk } from "@gnu-taler/taler-util/clk"; @@ -1129,6 +1130,16 @@ const advancedCli = walletCli.subcommand("advancedArgs", "advanced", { }); advancedCli + .subcommand("sampleTransactions", "sample-transactions", { + help: "Print sample wallet-core transactions", + }) + .action(async (args) => { + let transactions: Transaction[] = [ + + ]; + }); + +advancedCli .subcommand("serve", "serve", { help: "Serve the wallet API via a unix domain socket.", }) diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts @@ -525,7 +525,8 @@ function buildTransactionForPeerPullCredit( ? ExtendedStatus.Done : ExtendedStatus.Pending, pending: !wsr.timestampFinish, - timestamp: pullCredit.mergeTimestamp, + // Old transactions don't have it! + timestamp: pullCredit.mergeTimestamp ?? TalerProtocolTimestamp.now(), info: { expiration: wsr.wgInfo.contractTerms.purse_expiration, summary: wsr.wgInfo.contractTerms.summary, @@ -558,7 +559,8 @@ function buildTransactionForPeerPullCredit( exchangeBaseUrl: pullCredit.exchangeBaseUrl, extendedStatus: ExtendedStatus.Pending, pending: true, - timestamp: pullCredit.mergeTimestamp, + // Old transactions don't have it! + timestamp: pullCredit.mergeTimestamp ?? TalerProtocolTimestamp.now(), info: { expiration: peerContractTerms.purse_expiration, summary: peerContractTerms.summary, @@ -1387,6 +1389,9 @@ export async function getTransactions( if (!tx.amountRaw) { logger.warn(`missing amountRaw in ${j2s(tx)}`); } + if (!tx.timestamp) { + logger.warn(`missing timestamp in ${j2s(tx)}`); + } } const txPending = transactions.filter((x) => x.pending);