aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-05-29 01:23:15 -0300
committerSebastian <sebasjm@gmail.com>2022-05-29 01:23:21 -0300
commit029340469ac661bab1450b1ff4dcc6e717780e5b (patch)
tree0e4495cbc332ed5ed2059b8ba12de9be6c2dc98e /packages/taler-wallet-core
parentced08c502fc36ef90bb34fafcb1e2cbfe82f1280 (diff)
downloadwallet-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')
-rw-r--r--packages/taler-wallet-core/src/operations/refund.ts14
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts13
-rw-r--r--packages/taler-wallet-core/src/wallet.ts6
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);