aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/transactions.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-05-16 19:03:22 +0200
committerFlorian Dold <florian@dold.me>2023-05-16 19:03:22 +0200
commitacf0dda83f3974187cacf58e7d81c2115f6d950d (patch)
tree6ca65c874d33f21a3a81435ff2429c08e28a03e5 /packages/taler-wallet-core/src/operations/transactions.ts
parent72d0230a2ec34d83bfbbd0c7f731e25c76da3a45 (diff)
downloadwallet-core-acf0dda83f3974187cacf58e7d81c2115f6d950d.tar.xz
wallet-core: return purchase information in refund if available
Diffstat (limited to 'packages/taler-wallet-core/src/operations/transactions.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts32
1 files changed, 31 insertions, 1 deletions
diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts
index ac82dc96d..a89557c1d 100644
--- a/packages/taler-wallet-core/src/operations/transactions.ts
+++ b/packages/taler-wallet-core/src/operations/transactions.ts
@@ -30,6 +30,7 @@ import {
PaymentStatus,
PeerContractTerms,
RefundInfoShort,
+ RefundPaymentInfo,
TalerErrorCode,
TalerProtocolTimestamp,
Transaction,
@@ -64,6 +65,7 @@ import {
PeerPushPaymentIncomingStatus,
PeerPullPaymentInitiationRecord,
RefundGroupRecord,
+ ContractTermsRecord,
} from "../db.js";
import { InternalWalletState } from "../internal-wallet-state.js";
import { PendingTaskType } from "../pending-types.js";
@@ -648,7 +650,18 @@ function buildTransactionForManualWithdraw(
function buildTransactionForRefund(
refundRecord: RefundGroupRecord,
+ maybeContractData: WalletContractData | undefined,
): Transaction {
+ let paymentInfo: RefundPaymentInfo | undefined = undefined;
+
+ if (maybeContractData) {
+ paymentInfo = {
+ merchant: maybeContractData.merchant,
+ summary: maybeContractData.summary,
+ summary_i18n: maybeContractData.summaryI18n,
+ };
+ }
+
return {
type: TransactionType.Refund,
amountEffective: refundRecord.amountEffective,
@@ -666,6 +679,7 @@ function buildTransactionForRefund(
extendedStatus: ExtendedStatus.Done,
frozen: false,
pending: false,
+ paymentInfo,
}
}
@@ -1022,7 +1036,23 @@ export async function getTransactions(
if (shouldSkipCurrency(transactionsRequest, currency)) {
return;
}
- transactions.push(buildTransactionForRefund(refundGroup))
+ let contractData: WalletContractData | undefined = undefined;
+ const purchaseTx = await tx.purchases.get(refundGroup.proposalId);
+ if (purchaseTx && purchaseTx.download) {
+ const download = purchaseTx.download;
+ const contractTermsRecord = await tx.contractTerms.get(
+ download.contractTermsHash,
+ );
+ if (!contractTermsRecord) {
+ return;
+ }
+ contractData = extractContractData(
+ contractTermsRecord?.contractTermsRaw,
+ download.contractTermsHash,
+ download.contractTermsMerchantSig,
+ );
+ }
+ transactions.push(buildTransactionForRefund(refundGroup, contractData));
});
tx.refreshGroups.iter().forEachAsync(async (rg) => {