gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: wallet-core: remove legacy no


From: gnunet
Subject: [taler-wallet-core] branch master updated: wallet-core: remove legacy non-DD37 tx status fields
Date: Wed, 24 May 2023 14:46:07 +0200

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 a2ef2e391 wallet-core: remove legacy non-DD37 tx status fields
a2ef2e391 is described below

commit a2ef2e391a8f030857d0f9cd56c6157cffb33659
Author: Florian Dold <florian@dold.me>
AuthorDate: Wed May 24 14:46:03 2023 +0200

    wallet-core: remove legacy non-DD37 tx status fields
---
 .../src/integrationtests/test-payment-zero.ts      |   3 +-
 .../integrationtests/test-timetravel-withdraw.ts   |   4 +-
 .../src/integrationtests/test-tipping.ts           |   3 +-
 packages/taler-util/src/transaction-test-data.ts   |   3 -
 packages/taler-util/src/transactions-types.ts      |  37 -------
 .../src/operations/transactions.ts                 | 111 ++-------------------
 .../src/components/TransactionItem.tsx             |  23 +++++
 .../src/wallet/History.stories.tsx                 |   1 -
 .../src/wallet/Transaction.tsx                     |   5 +-
 9 files changed, 40 insertions(+), 150 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-payment-zero.ts 
b/packages/taler-harness/src/integrationtests/test-payment-zero.ts
index 6c28da30c..264cffd06 100644
--- a/packages/taler-harness/src/integrationtests/test-payment-zero.ts
+++ b/packages/taler-harness/src/integrationtests/test-payment-zero.ts
@@ -24,6 +24,7 @@ import {
   withdrawViaBank,
   makeTestPayment,
 } from "../harness/helpers.js";
+import { TransactionMajorState } from "@gnu-taler/taler-util";
 
 /**
  * Run test for a payment for a "free" order with
@@ -61,7 +62,7 @@ export async function runPaymentZeroTest(t: GlobalTestState) {
   );
 
   for (const tr of transactions.transactions) {
-    t.assertDeepEqual(tr.pending, false);
+    t.assertDeepEqual(tr.txState.major, TransactionMajorState.Done);
   }
 }
 
diff --git 
a/packages/taler-harness/src/integrationtests/test-timetravel-withdraw.ts 
b/packages/taler-harness/src/integrationtests/test-timetravel-withdraw.ts
index 9335af9f5..ca3e67647 100644
--- a/packages/taler-harness/src/integrationtests/test-timetravel-withdraw.ts
+++ b/packages/taler-harness/src/integrationtests/test-timetravel-withdraw.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { Duration, TransactionType } from "@gnu-taler/taler-util";
+import { Duration, TransactionMajorState, TransactionType } from 
"@gnu-taler/taler-util";
 import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
 import { GlobalTestState } from "../harness/harness.js";
 import {
@@ -83,7 +83,7 @@ export async function runTimetravelWithdrawTest(t: 
GlobalTestState) {
     t.assertDeepEqual(types, ["withdrawal", "withdrawal"]);
     const wtrans = transactions.transactions[1];
     t.assertTrue(wtrans.type === TransactionType.Withdrawal);
-    t.assertTrue(wtrans.pending);
+    t.assertTrue(wtrans.txState.major === TransactionMajorState.Pending);
   }
 
   // Now we also let the wallet time travel
diff --git a/packages/taler-harness/src/integrationtests/test-tipping.ts 
b/packages/taler-harness/src/integrationtests/test-tipping.ts
index bbf729420..ff6fc9ceb 100644
--- a/packages/taler-harness/src/integrationtests/test-tipping.ts
+++ b/packages/taler-harness/src/integrationtests/test-tipping.ts
@@ -29,6 +29,7 @@ import {
   getWireMethodForTest,
 } from "../harness/harness.js";
 import { createSimpleTestkudosEnvironment } from "../harness/helpers.js";
+import { TransactionMajorState } from "@gnu-taler/taler-util";
 
 /**
  * Run test for basic, bank-integrated withdrawal.
@@ -127,7 +128,7 @@ export async function runTippingTest(t: GlobalTestState) {
     console.log("Transactions:", JSON.stringify(txns, undefined, 2));
 
     t.assertDeepEqual(txns.transactions[0].type, "tip");
-    t.assertDeepEqual(txns.transactions[0].pending, false);
+    t.assertDeepEqual(txns.transactions[0].txState.major, 
TransactionMajorState.Done);
     t.assertAmountEquals(
       txns.transactions[0].amountEffective,
       "TESTKUDOS:4.85",
diff --git a/packages/taler-util/src/transaction-test-data.ts 
b/packages/taler-util/src/transaction-test-data.ts
index dc0903f53..378028144 100644
--- a/packages/taler-util/src/transaction-test-data.ts
+++ b/packages/taler-util/src/transaction-test-data.ts
@@ -17,7 +17,6 @@
 import {
   TransactionType,
   PaymentStatus,
-  ExtendedStatus,
   TransactionMajorState,
 } from "./transactions-types.js";
 import { RefreshReason } from "./wallet-types.js";
@@ -36,7 +35,6 @@ export const sampleWalletCoreTransactions = [
     totalRefundRaw: "KUDOS:0",
     totalRefundEffective: "KUDOS:0",
     status: PaymentStatus.Paid,
-    extendedStatus: ExtendedStatus.Done,
     refundPending: undefined,
     posConfirmation: undefined,
     pending: false,
@@ -85,7 +83,6 @@ export const sampleWalletCoreTransactions = [
     refreshOutputAmount: "KUDOS:1.4",
     originatingTransactionId:
       "txn:proposal:ZCGBZFE8KZ1CBYYGSC3ZC8E40KVJWV16VYCTHGC8FFSVZ5HD24BG",
-    extendedStatus: ExtendedStatus.Pending,
     pending: true,
     timestamp: {
       t_s: 1681376214,
diff --git a/packages/taler-util/src/transactions-types.ts 
b/packages/taler-util/src/transactions-types.ts
index 30178b7c7..84c60a847 100644
--- a/packages/taler-util/src/transactions-types.ts
+++ b/packages/taler-util/src/transactions-types.ts
@@ -50,14 +50,6 @@ import {
   TransactionIdStr,
 } from "./wallet-types.js";
 
-export enum ExtendedStatus {
-  Pending = "pending",
-  Done = "done",
-  Aborting = "aborting",
-  Aborted = "aborted",
-  Failed = "failed",
-  KycRequired = "kyc-required",
-}
 
 export interface TransactionsRequest {
   /**
@@ -158,28 +150,6 @@ export interface TransactionCommon {
    */
   txState: TransactionState;
 
-  /**
-   * @deprecated in favor of statusMajor and statusMinor
-   */
-  extendedStatus: ExtendedStatus;
-
-  /**
-   * true if the transaction is still pending, false otherwise
-   * If a transaction is not longer pending, its timestamp will be updated,
-   * but its transactionId will remain unchanged
-   *
-   * @deprecated show extendedStatus
-   */
-  pending: boolean;
-
-  /**
-   * True if the transaction encountered a problem that might be
-   * permanent.  A frozen transaction won't be automatically retried.
-   *
-   * @deprecated show extendedStatus
-   */
-  frozen: boolean;
-
   /**
    * Raw amount of the transaction (exclusive of fees or other extra costs).
    */
@@ -468,13 +438,6 @@ export interface TransactionPayment extends 
TransactionCommon {
    */
   proposalId: string;
 
-  /**
-   * How far did the wallet get with processing the payment?
-   *
-   * @deprecated use extendedStatus
-   */
-  status: PaymentStatus;
-
   /**
    * Amount that must be paid for the contract
    */
diff --git a/packages/taler-wallet-core/src/operations/transactions.ts 
b/packages/taler-wallet-core/src/operations/transactions.ts
index b5a6ba74e..41c74f4d1 100644
--- a/packages/taler-wallet-core/src/operations/transactions.ts
+++ b/packages/taler-wallet-core/src/operations/transactions.ts
@@ -20,9 +20,6 @@
 import {
   AbsoluteTime,
   Amounts,
-  constructPayPullUri,
-  constructPayPushUri,
-  ExtendedStatus,
   j2s,
   Logger,
   NotificationType,
@@ -413,12 +410,6 @@ function buildTransactionForPushPaymentDebit(
       expiration: contractTerms.purse_expiration,
       summary: contractTerms.summary,
     },
-    frozen: false,
-    extendedStatus:
-      pi.status != PeerPushPaymentInitiationStatus.Done
-        ? ExtendedStatus.Pending
-        : ExtendedStatus.Done,
-    pending: pi.status != PeerPushPaymentInitiationStatus.Done,
     timestamp: pi.timestampCreated,
     talerUri: stringifyPayPushUri({
       exchangeBaseUrl: pi.exchangeBaseUrl,
@@ -444,9 +435,6 @@ function buildTransactionForPullPaymentDebit(
       : Amounts.stringify(pi.contractTerms.amount),
     amountRaw: Amounts.stringify(pi.contractTerms.amount),
     exchangeBaseUrl: pi.exchangeBaseUrl,
-    frozen: false,
-    pending: false,
-    extendedStatus: ExtendedStatus.Done,
     info: {
       expiration: pi.contractTerms.purse_expiration,
       summary: pi.contractTerms.summary,
@@ -492,10 +480,6 @@ function buildTransactionForPeerPullCredit(
       amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue),
       amountRaw: Amounts.stringify(wsr.instructedAmount),
       exchangeBaseUrl: wsr.exchangeBaseUrl,
-      extendedStatus: wsr.timestampFinish
-        ? ExtendedStatus.Done
-        : ExtendedStatus.Pending,
-      pending: !wsr.timestampFinish,
       // Old transactions don't have it!
       timestamp: pullCredit.mergeTimestamp ?? TalerProtocolTimestamp.now(),
       info: {
@@ -510,7 +494,6 @@ function buildTransactionForPeerPullCredit(
         tag: TransactionType.PeerPullCredit,
         pursePub: pullCredit.pursePub,
       }),
-      frozen: false,
       ...(wsrOrt?.lastError
         ? {
             error: silentWithdrawalErrorForInvoice
@@ -527,8 +510,6 @@ function buildTransactionForPeerPullCredit(
     amountEffective: Amounts.stringify(pullCredit.estimatedAmountEffective),
     amountRaw: Amounts.stringify(peerContractTerms.amount),
     exchangeBaseUrl: pullCredit.exchangeBaseUrl,
-    extendedStatus: ExtendedStatus.Pending,
-    pending: true,
     // Old transactions don't have it!
     timestamp: pullCredit.mergeTimestamp ?? TalerProtocolTimestamp.now(),
     info: {
@@ -543,7 +524,6 @@ function buildTransactionForPeerPullCredit(
       tag: TransactionType.PeerPullCredit,
       pursePub: pullCredit.pursePub,
     }),
-    frozen: false,
     ...(pullCreditOrt?.lastError ? { error: pullCreditOrt.lastError } : {}),
   };
 }
@@ -570,16 +550,11 @@ function buildTransactionForPeerPushCredit(
         expiration: wsr.wgInfo.contractTerms.purse_expiration,
         summary: wsr.wgInfo.contractTerms.summary,
       },
-      extendedStatus: wsr.timestampFinish
-        ? ExtendedStatus.Done
-        : ExtendedStatus.Pending,
-      pending: !wsr.timestampFinish,
       timestamp: wsr.timestampStart,
       transactionId: constructTransactionIdentifier({
         tag: TransactionType.PeerPushCredit,
         peerPushPaymentIncomingId: pushInc.peerPushPaymentIncomingId,
       }),
-      frozen: false,
       ...(wsrOrt?.lastError ? { error: wsrOrt.lastError } : {}),
     };
   }
@@ -595,14 +570,11 @@ function buildTransactionForPeerPushCredit(
       expiration: peerContractTerms.purse_expiration,
       summary: peerContractTerms.summary,
     },
-    extendedStatus: ExtendedStatus.Pending,
-    pending: true,
     timestamp: pushInc.timestamp,
     transactionId: constructTransactionIdentifier({
       tag: TransactionType.PeerPushCredit,
       peerPushPaymentIncomingId: pushInc.peerPushPaymentIncomingId,
     }),
-    frozen: false,
     ...(pushOrt?.lastError ? { error: pushOrt.lastError } : {}),
   };
 }
@@ -629,16 +601,11 @@ function buildTransactionForBankIntegratedWithdraw(
         wgRecord.status === WithdrawalGroupStatus.PendingReady,
     },
     exchangeBaseUrl: wgRecord.exchangeBaseUrl,
-    extendedStatus: wgRecord.timestampFinish
-      ? ExtendedStatus.Done
-      : ExtendedStatus.Pending,
-    pending: !wgRecord.timestampFinish,
     timestamp: wgRecord.timestampStart,
     transactionId: constructTransactionIdentifier({
       tag: TransactionType.Withdrawal,
       withdrawalGroupId: wgRecord.withdrawalGroupId,
     }),
-    frozen: false,
     ...(ort?.lastError ? { error: ort.lastError } : {}),
   };
 }
@@ -676,16 +643,11 @@ function buildTransactionForManualWithdraw(
         withdrawalGroup.status === WithdrawalGroupStatus.PendingReady,
     },
     exchangeBaseUrl: withdrawalGroup.exchangeBaseUrl,
-    extendedStatus: withdrawalGroup.timestampFinish
-      ? ExtendedStatus.Done
-      : ExtendedStatus.Pending,
-    pending: !withdrawalGroup.timestampFinish,
     timestamp: withdrawalGroup.timestampStart,
     transactionId: constructTransactionIdentifier({
       tag: TransactionType.Withdrawal,
       withdrawalGroupId: withdrawalGroup.withdrawalGroupId,
     }),
-    frozen: false,
     ...(ort?.lastError ? { error: ort.lastError } : {}),
   };
 }
@@ -718,9 +680,6 @@ function buildTransactionForRefund(
       refundGroupId: refundRecord.refundGroupId,
     }),
     txState: computeRefundTransactionState(refundRecord),
-    extendedStatus: ExtendedStatus.Done,
-    frozen: false,
-    pending: false,
     paymentInfo,
   };
 }
@@ -729,15 +688,6 @@ function buildTransactionForRefresh(
   refreshGroupRecord: RefreshGroupRecord,
   ort?: OperationRetryRecord,
 ): Transaction {
-  let extendedStatus: ExtendedStatus;
-  switch (refreshGroupRecord.operationStatus) {
-    case RefreshOperationStatus.Finished:
-    case RefreshOperationStatus.FinishedWithError:
-      extendedStatus = ExtendedStatus.Done;
-      break;
-    default:
-      extendedStatus = ExtendedStatus.Pending;
-  }
   const inputAmount = Amounts.sumOrZero(
     refreshGroupRecord.currency,
     refreshGroupRecord.inputPerCoin,
@@ -760,19 +710,11 @@ function buildTransactionForRefresh(
     refreshOutputAmount: Amounts.stringify(outputAmount),
     originatingTransactionId:
       refreshGroupRecord.reasonDetails?.originatingTransactionId,
-    extendedStatus:
-      refreshGroupRecord.operationStatus === RefreshOperationStatus.Finished ||
-      refreshGroupRecord.operationStatus ===
-        RefreshOperationStatus.FinishedWithError
-        ? ExtendedStatus.Done
-        : ExtendedStatus.Pending,
-    pending: extendedStatus == ExtendedStatus.Pending,
     timestamp: refreshGroupRecord.timestampCreated,
     transactionId: constructTransactionIdentifier({
       tag: TransactionType.Refresh,
       refreshGroupId: refreshGroupRecord.refreshGroupId,
     }),
-    frozen: false,
     ...(ort?.lastError ? { error: ort.lastError } : {}),
   };
 }
@@ -793,11 +735,6 @@ function buildTransactionForDeposit(
     txState: computeDepositTransactionStatus(dg),
     amountRaw: Amounts.stringify(dg.effectiveDepositAmount),
     amountEffective: Amounts.stringify(dg.totalPayCost),
-    extendedStatus: dg.timestampFinished
-      ? ExtendedStatus.Done
-      : ExtendedStatus.Pending,
-    pending: !dg.timestampFinished,
-    frozen: false,
     timestamp: dg.timestampCreated,
     targetPaytoUri: dg.wire.payto_uri,
     wireTransferDeadline: dg.contractTermsRaw.wire_transfer_deadline,
@@ -830,11 +767,6 @@ function buildTransactionForTip(
     txState: computeTipTransactionStatus(tipRecord),
     amountEffective: Amounts.stringify(tipRecord.tipAmountEffective),
     amountRaw: Amounts.stringify(tipRecord.tipAmountRaw),
-    extendedStatus: tipRecord.pickedUpTimestamp
-      ? ExtendedStatus.Done
-      : ExtendedStatus.Pending,
-    pending: !tipRecord.pickedUpTimestamp,
-    frozen: false,
     timestamp: tipRecord.acceptedTimestamp,
     transactionId: constructTransactionIdentifier({
       tag: TransactionType.Tip,
@@ -899,32 +831,6 @@ async function buildTransactionForPurchase(
   checkDbInvariant(!!timestamp);
   checkDbInvariant(!!purchaseRecord.payInfo);
 
-  let status: ExtendedStatus;
-  switch (purchaseRecord.purchaseStatus) {
-    case PurchaseStatus.AbortingWithRefund:
-      status = ExtendedStatus.Aborting;
-      break;
-    case PurchaseStatus.Done:
-    case PurchaseStatus.RepurchaseDetected:
-      status = ExtendedStatus.Done;
-      break;
-    case PurchaseStatus.DownloadingProposal:
-    case PurchaseStatus.QueryingRefund:
-    case PurchaseStatus.Proposed:
-    case PurchaseStatus.Paying:
-      status = ExtendedStatus.Pending;
-      break;
-    case PurchaseStatus.FailedClaim:
-      status = ExtendedStatus.Failed;
-      break;
-    case PurchaseStatus.AbortedIncompletePayment:
-      status = ExtendedStatus.Aborted;
-      break;
-    default:
-      // FIXME: Should we have some unknown status?
-      status = ExtendedStatus.Pending;
-  }
-
   return {
     type: TransactionType.Payment,
     txState: computePayMerchantTransactionState(purchaseRecord),
@@ -936,11 +842,6 @@ async function buildTransactionForPurchase(
       purchaseRecord.refundAmountAwaiting === undefined
         ? undefined
         : Amounts.stringify(purchaseRecord.refundAmountAwaiting),
-    status: purchaseRecord.timestampFirstSuccessfulPay
-      ? PaymentStatus.Paid
-      : PaymentStatus.Accepted,
-    extendedStatus: status,
-    pending: purchaseRecord.purchaseStatus === PurchaseStatus.Paying,
     refunds,
     posConfirmation: purchaseRecord.posConfirmation,
     timestamp,
@@ -952,9 +853,6 @@ async function buildTransactionForPurchase(
     info,
     refundQueryActive:
       purchaseRecord.purchaseStatus === PurchaseStatus.QueryingRefund,
-    frozen:
-      purchaseRecord.purchaseStatus ===
-        PurchaseStatus.AbortedIncompletePayment ?? false,
     ...(ort?.lastError ? { error: ort.lastError } : {}),
   };
 }
@@ -1272,8 +1170,13 @@ export async function getTransactions(
     }
   }
 
-  const txPending = transactions.filter((x) => x.pending);
-  const txNotPending = transactions.filter((x) => !x.pending);
+  const isPending = (x: Transaction) =>
+    x.txState.major === TransactionMajorState.Pending ||
+    x.txState.major === TransactionMajorState.Aborting ||
+    x.txState.major === TransactionMajorState.Dialog;
+
+  const txPending = transactions.filter((x) => isPending(x));
+  const txNotPending = transactions.filter((x) => !isPending(x));
 
   const txCmp = (h1: Transaction, h2: Transaction) => {
     const tsCmp = AbsoluteTime.cmp(
diff --git 
a/packages/taler-wallet-webextension/src/components/TransactionItem.tsx 
b/packages/taler-wallet-webextension/src/components/TransactionItem.tsx
index dc11c4b7e..124729349 100644
--- a/packages/taler-wallet-webextension/src/components/TransactionItem.tsx
+++ b/packages/taler-wallet-webextension/src/components/TransactionItem.tsx
@@ -69,6 +69,29 @@ export function TransactionItem(props: { tx: Transaction }): 
VNode {
           }
         />
       );
+    case TransactionType.InternalWithdrawal:
+      return (
+        <TransactionLayout
+          id={tx.transactionId}
+          amount={tx.amountEffective}
+          debitCreditIndicator={"credit"}
+          title={new URL(tx.exchangeBaseUrl).hostname}
+          timestamp={AbsoluteTime.fromTimestamp(tx.timestamp)}
+          iconPath={"I"}
+          pending={
+            tx.txState.major === TransactionMajorState.Pending
+              ? tx.withdrawalDetails.type ===
+                WithdrawalType.TalerBankIntegrationApi
+                ? !tx.withdrawalDetails.confirmed
+                  ? i18n.str`Need approval in the Bank`
+                  : i18n.str`Exchange is waiting the wire transfer`
+                : tx.withdrawalDetails.type === WithdrawalType.ManualTransfer
+                ? i18n.str`Exchange is waiting the wire transfer`
+                : "" //pending but no message
+              : undefined
+          }
+        />
+      );
     case TransactionType.Payment:
       return (
         <TransactionLayout
diff --git a/packages/taler-wallet-webextension/src/wallet/History.stories.tsx 
b/packages/taler-wallet-webextension/src/wallet/History.stories.tsx
index 93d61ba2b..b9c408fe1 100644
--- a/packages/taler-wallet-webextension/src/wallet/History.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/History.stories.tsx
@@ -52,7 +52,6 @@ const commonTransaction = (): TransactionCommon =>
   ({
     amountRaw: "USD:10",
     amountEffective: "USD:9",
-    pending: false,
     txState: {
       major: TransactionMajorState.Done,
     },
diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx 
b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
index f4c50a8d5..9541cc33f 100644
--- a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
@@ -398,7 +398,10 @@ export function TransactionView({
   const raw = Amounts.parseOrThrow(transaction.amountRaw);
   const effective = Amounts.parseOrThrow(transaction.amountEffective);
 
-  if (transaction.type === TransactionType.Withdrawal) {
+  if (
+    transaction.type === TransactionType.Withdrawal ||
+    transaction.type === TransactionType.InternalWithdrawal
+  ) {
     return (
       <TransactionTemplate
         transaction={transaction}

-- 
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]