diff options
author | Sebastian <sebasjm@gmail.com> | 2022-05-29 01:23:15 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-05-29 01:23:21 -0300 |
commit | 029340469ac661bab1450b1ff4dcc6e717780e5b (patch) | |
tree | 0e4495cbc332ed5ed2059b8ba12de9be6c2dc98e /packages/taler-wallet-core/src | |
parent | ced08c502fc36ef90bb34fafcb1e2cbfe82f1280 (diff) | |
download | wallet-core-029340469ac661bab1450b1ff4dcc6e717780e5b.tar.xz |
show refund info in purchase
notify refund pending with accept button on the purchase details
better payto box
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r-- | packages/taler-wallet-core/src/operations/refund.ts | 14 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 13 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/wallet.ts | 6 |
3 files changed, 28 insertions, 5 deletions
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<ApplyRefundResponse> { + + 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); |