From 029340469ac661bab1450b1ff4dcc6e717780e5b Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sun, 29 May 2022 01:23:15 -0300 Subject: show refund info in purchase notify refund pending with accept button on the purchase details better payto box --- packages/taler-wallet-core/src/operations/refund.ts | 14 +++++++++++--- packages/taler-wallet-core/src/operations/transactions.ts | 13 +++++++++++-- packages/taler-wallet-core/src/wallet.ts | 6 ++++++ 3 files changed, 28 insertions(+), 5 deletions(-) (limited to 'packages/taler-wallet-core') diff --git a/packages/taler-wallet-core/src/operations/refund.ts b/packages/taler-wallet-core/src/operations/refund.ts index 186fbf7d3..28a92286b 100644 --- a/packages/taler-wallet-core/src/operations/refund.ts +++ b/packages/taler-wallet-core/src/operations/refund.ts @@ -573,7 +573,7 @@ export async function applyRefund( throw Error("invalid refund URI"); } - let purchase = await ws.db + const purchase = await ws.db .mktx((x) => ({ purchases: x.purchases, })) @@ -590,7 +590,15 @@ export async function applyRefund( ); } - const proposalId = purchase.proposalId; + return applyRefundFromPurchaseId(ws, purchase.proposalId) +} + +export async function applyRefundFromPurchaseId( + ws: InternalWalletState, + proposalId: string, +): Promise { + + logger.trace("applying refund for purchase", proposalId); logger.info("processing purchase for refund"); const success = await ws.db @@ -620,7 +628,7 @@ export async function applyRefund( }); } - purchase = await ws.db + const purchase = await ws.db .mktx((x) => ({ purchases: x.purchases, })) diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 87b109d98..db282bb68 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -24,6 +24,7 @@ import { Logger, OrderShortInfo, PaymentStatus, + RefundInfoShort, Transaction, TransactionsRequest, TransactionsResponse, @@ -306,6 +307,7 @@ export async function getTransactions( let totalRefundRaw = Amounts.getZero(contractData.amount.currency); let totalRefundEffective = Amounts.getZero(contractData.amount.currency); + const refunds: RefundInfoShort[] = [] for (const groupKey of refundGroupKeys.values()) { const refundTombstoneId = makeEventId( @@ -345,6 +347,13 @@ export async function getTransactions( refund.totalRefreshCostBound, ).amount, ).amount; + + refunds.push({ + transactionId: refundTransactionId, + timestamp: r0.obtainedTime, + amountEffective: Amounts.stringify(amountEffective), + amountRaw: Amounts.stringify(amountRaw), + }) } } if (!r0) { @@ -353,7 +362,6 @@ export async function getTransactions( totalRefundRaw = Amounts.add(totalRefundRaw, amountRaw).amount; totalRefundEffective = Amounts.add(totalRefundEffective, amountEffective).amount; - transactions.push({ type: TransactionType.Refund, info, @@ -382,10 +390,11 @@ export async function getTransactions( pending: !pr.timestampFirstSuccessfulPay && pr.abortStatus === AbortStatus.None, + refunds, timestamp: pr.timestampAccept, transactionId: paymentTransactionId, proposalId: pr.proposalId, - info: info, + info, frozen: pr.payFrozen ?? false, ...(err ? { error: err } : {}), }); diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index ffceec38f..689e45f3c 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -33,6 +33,7 @@ import { codecForAcceptTipRequest, codecForAddExchangeRequest, codecForAny, + codecForApplyRefundFromPurchaseIdRequest, codecForApplyRefundRequest, codecForConfirmPayRequest, codecForCreateDepositGroupRequest, @@ -145,6 +146,7 @@ import { import { abortFailedPayWithRefund, applyRefund, + applyRefundFromPurchaseId, prepareRefund, processPurchaseQueryRefund } from "./operations/refund.js"; @@ -839,6 +841,10 @@ async function dispatchRequestInternal( const req = codecForApplyRefundRequest().decode(payload); return await applyRefund(ws, req.talerRefundUri); } + case "applyRefundFromPurchaseId": { + const req = codecForApplyRefundFromPurchaseIdRequest().decode(payload); + return await applyRefundFromPurchaseId(ws, req.purchaseId); + } case "acceptBankIntegratedWithdrawal": { const req = codecForAcceptBankIntegratedWithdrawalRequest().decode(payload); -- cgit v1.2.3