aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/transactions.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations/transactions.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts60
1 files changed, 41 insertions, 19 deletions
diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts
index d424019ac..a0da95799 100644
--- a/packages/taler-wallet-core/src/operations/transactions.ts
+++ b/packages/taler-wallet-core/src/operations/transactions.ts
@@ -73,32 +73,34 @@ import { constructTaskIdentifier, TaskIdentifiers } from "../util/retries.js";
import { resetOperationTimeout, TombstoneTag } from "./common.js";
import {
abortDepositGroup,
- cancelAbortingDepositGroup,
+ failDepositTransaction,
computeDepositTransactionStatus,
deleteDepositGroup,
resumeDepositGroup,
suspendDepositGroup,
+ computeDepositTransactionActions,
} from "./deposits.js";
import { getExchangeDetails } from "./exchanges.js";
import {
abortPayMerchant,
- cancelAbortingPaymentTransaction,
+ failPaymentTransaction,
computePayMerchantTransactionState,
computeRefundTransactionState,
expectProposalDownload,
extractContractData,
resumePayMerchant,
suspendPayMerchant,
+ computePayMerchantTransactionActions,
} from "./pay-merchant.js";
import {
abortPeerPullCreditTransaction,
abortPeerPullDebitTransaction,
abortPeerPushCreditTransaction,
abortPeerPushDebitTransaction,
- cancelAbortingPeerPullCreditTransaction,
- cancelAbortingPeerPullDebitTransaction,
- cancelAbortingPeerPushCreditTransaction,
- cancelAbortingPeerPushDebitTransaction,
+ failPeerPullCreditTransaction,
+ failPeerPullDebitTransaction,
+ failPeerPushCreditTransaction,
+ failPeerPushDebitTransaction,
computePeerPullCreditTransactionState,
computePeerPullDebitTransactionState,
computePeerPushCreditTransactionState,
@@ -111,28 +113,35 @@ import {
suspendPeerPullDebitTransaction,
suspendPeerPushCreditTransaction,
suspendPeerPushDebitTransaction,
+ computePeerPushDebitTransactionActions,
+ computePeerPullDebitTransactionActions,
+ computePeerPullCreditTransactionActions,
+ computePeerPushCreditTransactionActions,
} from "./pay-peer.js";
import {
abortRefreshGroup,
- cancelAbortingRefreshGroup,
+ failRefreshGroup,
computeRefreshTransactionState,
resumeRefreshGroup,
suspendRefreshGroup,
+ computeRefreshTransactionActions,
} from "./refresh.js";
import {
abortTipTransaction,
- cancelAbortingTipTransaction,
+ failTipTransaction,
computeTipTransactionStatus,
resumeTipTransaction,
suspendTipTransaction,
+ computeTipTransactionActions,
} from "./tip.js";
import {
abortWithdrawalTransaction,
augmentPaytoUrisForWithdrawal,
- cancelAbortingWithdrawalTransaction,
+ failWithdrawalTransaction,
computeWithdrawalTransactionStatus,
resumeWithdrawalTransaction,
suspendWithdrawalTransaction,
+ computeWithdrawalTransactionActions,
} from "./withdraw.js";
const logger = new Logger("taler-wallet-core:transactions.ts");
@@ -429,6 +438,7 @@ function buildTransactionForPushPaymentDebit(
return {
type: TransactionType.PeerPushDebit,
txState: computePeerPushDebitTransactionState(pi),
+ txActions: computePeerPushDebitTransactionActions(pi),
amountEffective: pi.totalCost,
amountRaw: pi.amount,
exchangeBaseUrl: pi.exchangeBaseUrl,
@@ -456,6 +466,7 @@ function buildTransactionForPullPaymentDebit(
return {
type: TransactionType.PeerPullDebit,
txState: computePeerPullDebitTransactionState(pi),
+ txActions: computePeerPullDebitTransactionActions(pi),
amountEffective: pi.coinSel?.totalCost
? pi.coinSel?.totalCost
: Amounts.stringify(pi.contractTerms.amount),
@@ -503,6 +514,7 @@ function buildTransactionForPeerPullCredit(
return {
type: TransactionType.PeerPullCredit,
txState: computePeerPullCreditTransactionState(pullCredit),
+ txActions: computePeerPullCreditTransactionActions(pullCredit),
amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue),
amountRaw: Amounts.stringify(wsr.instructedAmount),
exchangeBaseUrl: wsr.exchangeBaseUrl,
@@ -533,6 +545,7 @@ function buildTransactionForPeerPullCredit(
return {
type: TransactionType.PeerPullCredit,
txState: computePeerPullCreditTransactionState(pullCredit),
+ txActions: computePeerPullCreditTransactionActions(pullCredit),
amountEffective: Amounts.stringify(pullCredit.estimatedAmountEffective),
amountRaw: Amounts.stringify(peerContractTerms.amount),
exchangeBaseUrl: pullCredit.exchangeBaseUrl,
@@ -569,6 +582,7 @@ function buildTransactionForPeerPushCredit(
return {
type: TransactionType.PeerPushCredit,
txState: computePeerPushCreditTransactionState(pushInc),
+ txActions: computePeerPushCreditTransactionActions(pushInc),
amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue),
amountRaw: Amounts.stringify(wsr.instructedAmount),
exchangeBaseUrl: wsr.exchangeBaseUrl,
@@ -588,6 +602,7 @@ function buildTransactionForPeerPushCredit(
return {
type: TransactionType.PeerPushCredit,
txState: computePeerPushCreditTransactionState(pushInc),
+ txActions: computePeerPushCreditTransactionActions(pushInc),
// FIXME: This is wrong, needs to consider fees!
amountEffective: Amounts.stringify(peerContractTerms.amount),
amountRaw: Amounts.stringify(peerContractTerms.amount),
@@ -615,6 +630,7 @@ function buildTransactionForBankIntegratedWithdraw(
return {
type: TransactionType.Withdrawal,
txState: computeWithdrawalTransactionStatus(wgRecord),
+ txActions: computeWithdrawalTransactionActions(wgRecord),
amountEffective: Amounts.stringify(wgRecord.denomsSel.totalCoinValue),
amountRaw: Amounts.stringify(wgRecord.instructedAmount),
withdrawalDetails: {
@@ -656,6 +672,7 @@ function buildTransactionForManualWithdraw(
return {
type: TransactionType.Withdrawal,
txState: computeWithdrawalTransactionStatus(withdrawalGroup),
+ txActions: computeWithdrawalTransactionActions(withdrawalGroup),
amountEffective: Amounts.stringify(
withdrawalGroup.denomsSel.totalCoinValue,
),
@@ -706,6 +723,7 @@ function buildTransactionForRefund(
refundGroupId: refundRecord.refundGroupId,
}),
txState: computeRefundTransactionState(refundRecord),
+ txActions: [],
paymentInfo,
};
}
@@ -725,6 +743,7 @@ function buildTransactionForRefresh(
return {
type: TransactionType.Refresh,
txState: computeRefreshTransactionState(refreshGroupRecord),
+ txActions: computeRefreshTransactionActions(refreshGroupRecord),
refreshReason: refreshGroupRecord.reason,
amountEffective: Amounts.stringify(
Amounts.zeroOfCurrency(refreshGroupRecord.currency),
@@ -759,6 +778,7 @@ function buildTransactionForDeposit(
return {
type: TransactionType.Deposit,
txState: computeDepositTransactionStatus(dg),
+ txActions: computeDepositTransactionActions(dg),
amountRaw: Amounts.stringify(dg.effectiveDepositAmount),
amountEffective: Amounts.stringify(dg.totalPayCost),
timestamp: dg.timestampCreated,
@@ -791,6 +811,7 @@ function buildTransactionForTip(
return {
type: TransactionType.Tip,
txState: computeTipTransactionStatus(tipRecord),
+ txActions: computeTipTransactionActions(tipRecord),
amountEffective: Amounts.stringify(tipRecord.tipAmountEffective),
amountRaw: Amounts.stringify(tipRecord.tipAmountRaw),
timestamp: tipRecord.acceptedTimestamp,
@@ -860,6 +881,7 @@ async function buildTransactionForPurchase(
return {
type: TransactionType.Payment,
txState: computePayMerchantTransactionState(purchaseRecord),
+ txActions: computePayMerchantTransactionActions(purchaseRecord),
amountRaw: Amounts.stringify(contractData.amount),
amountEffective: Amounts.stringify(purchaseRecord.payInfo.totalPayCost),
totalRefundRaw: Amounts.stringify(zero), // FIXME!
@@ -1493,7 +1515,7 @@ export async function suspendTransaction(
}
}
-export async function cancelAbortingTransaction(
+export async function failTransaction(
ws: InternalWalletState,
transactionId: string,
): Promise<void> {
@@ -1503,34 +1525,34 @@ export async function cancelAbortingTransaction(
}
switch (tx.tag) {
case TransactionType.Deposit:
- await cancelAbortingDepositGroup(ws, tx.depositGroupId);
+ await failDepositTransaction(ws, tx.depositGroupId);
return;
case TransactionType.InternalWithdrawal:
case TransactionType.Withdrawal:
- await cancelAbortingWithdrawalTransaction(ws, tx.withdrawalGroupId);
+ await failWithdrawalTransaction(ws, tx.withdrawalGroupId);
return;
case TransactionType.Payment:
- await cancelAbortingPaymentTransaction(ws, tx.proposalId);
+ await failPaymentTransaction(ws, tx.proposalId);
return;
case TransactionType.Refund:
throw Error("can't do cancel-aborting on refund transaction");
case TransactionType.Tip:
- await cancelAbortingTipTransaction(ws, tx.walletTipId);
+ await failTipTransaction(ws, tx.walletTipId);
return;
case TransactionType.Refresh:
- await cancelAbortingRefreshGroup(ws, tx.refreshGroupId);
+ await failRefreshGroup(ws, tx.refreshGroupId);
return;
case TransactionType.PeerPullCredit:
- await cancelAbortingPeerPullCreditTransaction(ws, tx.pursePub);
+ await failPeerPullCreditTransaction(ws, tx.pursePub);
return;
case TransactionType.PeerPullDebit:
- await cancelAbortingPeerPullDebitTransaction(ws, tx.peerPullPaymentIncomingId);
+ await failPeerPullDebitTransaction(ws, tx.peerPullPaymentIncomingId);
return;
case TransactionType.PeerPushCredit:
- await cancelAbortingPeerPushCreditTransaction(ws, tx.peerPushPaymentIncomingId);
+ await failPeerPushCreditTransaction(ws, tx.peerPushPaymentIncomingId);
return;
case TransactionType.PeerPushDebit:
- await cancelAbortingPeerPushDebitTransaction(ws, tx.pursePub);
+ await failPeerPushDebitTransaction(ws, tx.pursePub);
return;
default:
assertUnreachable(tx);