diff options
Diffstat (limited to 'packages/taler-wallet-core/src/operations/transactions.ts')
-rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 60 |
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); |