summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/wallet.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-01-09 18:37:43 +0100
committerFlorian Dold <florian@dold.me>2024-01-09 18:37:43 +0100
commit4ffca702853771bb3807f3881d710b3fbb6d6191 (patch)
treef67d1b7aea83e811d1a4d8c4167397c5e7be3d4e /packages/taler-wallet-core/src/wallet.ts
parent46f04b7f123d117cc639db74f66086382a7569c7 (diff)
downloadwallet-core-4ffca702853771bb3807f3881d710b3fbb6d6191.tar.gz
wallet-core-4ffca702853771bb3807f3881d710b3fbb6d6191.tar.bz2
wallet-core-4ffca702853771bb3807f3881d710b3fbb6d6191.zip
-misc. minor fixes, docs
Diffstat (limited to 'packages/taler-wallet-core/src/wallet.ts')
-rw-r--r--packages/taler-wallet-core/src/wallet.ts95
1 files changed, 4 insertions, 91 deletions
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index ff1f991dd..da34ff37f 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -28,7 +28,6 @@ import {
AmountString,
Amounts,
CoinDumpJson,
- CoinRefreshRequest,
CoinStatus,
CoreApiResponse,
CreateStoredBackupResponse,
@@ -41,12 +40,10 @@ import {
KnownBankAccounts,
KnownBankAccountsInfo,
Logger,
- MerchantUsingTemplateDetails,
NotificationType,
PrepareWithdrawExchangeRequest,
PrepareWithdrawExchangeResponse,
RecoverStoredBackupRequest,
- RefreshReason,
ScopeType,
StoredBackupList,
TalerError,
@@ -56,7 +53,6 @@ import {
TestingWaitTransactionRequest,
TransactionState,
TransactionType,
- URL,
ValidateIbanResponse,
WalletCoreVersion,
WalletNotification,
@@ -97,7 +93,6 @@ import {
codecForIntegrationTestV2Args,
codecForListExchangesForScopedCurrencyRequest,
codecForListKnownBankAccounts,
- codecForMerchantPostOrderResponse,
codecForPrepareDepositRequest,
codecForPreparePayRequest,
codecForPreparePayTemplateRequest,
@@ -123,12 +118,10 @@ import {
codecForUserAttentionsRequest,
codecForValidateIbanRequest,
codecForWithdrawTestBalance,
- constructPayUri,
durationFromSpec,
durationMin,
getErrorDetailFromException,
j2s,
- parsePayTemplateUri,
parsePaytoUri,
parseTalerUri,
sampleWalletCoreTransactions,
@@ -136,7 +129,6 @@ import {
validateIban,
} from "@gnu-taler/taler-util";
import type { HttpRequestLibrary } from "@gnu-taler/taler-util/http";
-import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http";
import { TalerCryptoInterface } from "./crypto/cryptoImplementation.js";
import {
CryptoDispatcher,
@@ -211,6 +203,7 @@ import {
computeRefundTransactionState,
confirmPay,
getContractTermsDetails,
+ preparePayForTemplate,
preparePayForUri,
processPurchase,
sharePayment,
@@ -247,6 +240,7 @@ import {
autoRefresh,
computeRefreshTransactionState,
createRefreshGroup,
+ forceRefresh,
processRefreshGroup,
} from "./operations/refresh.js";
import {
@@ -1115,46 +1109,7 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
}
case WalletApiOperation.PreparePayForTemplate: {
const req = codecForPreparePayTemplateRequest().decode(payload);
- const url = parsePayTemplateUri(req.talerPayTemplateUri);
- const templateDetails: MerchantUsingTemplateDetails = {};
- if (!url) {
- throw Error("invalid taler-template URI");
- }
- if (
- url.templateParams.amount !== undefined &&
- typeof url.templateParams.amount === "string"
- ) {
- templateDetails.amount = (req.templateParams.amount ??
- url.templateParams.amount) as AmountString | undefined;
- }
- if (
- url.templateParams.summary !== undefined &&
- typeof url.templateParams.summary === "string"
- ) {
- templateDetails.summary =
- req.templateParams.summary ?? url.templateParams.summary;
- }
- const reqUrl = new URL(
- `templates/${url.templateId}`,
- url.merchantBaseUrl,
- );
- const httpReq = await ws.http.fetch(reqUrl.href, {
- method: "POST",
- body: templateDetails,
- });
- const resp = await readSuccessResponseJsonOrThrow(
- httpReq,
- codecForMerchantPostOrderResponse(),
- );
-
- const payUri = constructPayUri(
- url.merchantBaseUrl,
- resp.order_id,
- "",
- resp.token,
- );
-
- return await preparePayForUri(ws, payUri);
+ return preparePayForTemplate(ws, req);
}
case WalletApiOperation.ConfirmPay: {
const req = codecForConfirmPayRequest().decode(payload);
@@ -1205,49 +1160,7 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
return { transactions: sampleWalletCoreTransactions };
case WalletApiOperation.ForceRefresh: {
const req = codecForForceRefreshRequest().decode(payload);
- if (req.coinPubList.length == 0) {
- throw Error("refusing to create empty refresh group");
- }
- const refreshGroupId = await ws.db
- .mktx((x) => [
- x.refreshGroups,
- x.coinAvailability,
- x.denominations,
- x.coins,
- ])
- .runReadWrite(async (tx) => {
- let coinPubs: CoinRefreshRequest[] = [];
- for (const c of req.coinPubList) {
- const coin = await tx.coins.get(c);
- if (!coin) {
- throw Error(`coin (pubkey ${c}) not found`);
- }
- const denom = await ws.getDenomInfo(
- ws,
- tx,
- coin.exchangeBaseUrl,
- coin.denomPubHash,
- );
- checkDbInvariant(!!denom);
- coinPubs.push({
- coinPub: c,
- amount: denom?.value,
- });
- }
- return await createRefreshGroup(
- ws,
- tx,
- Amounts.currencyOf(coinPubs[0].amount),
- coinPubs,
- RefreshReason.Manual,
- );
- });
- processRefreshGroup(ws, refreshGroupId.refreshGroupId).catch((x) => {
- logger.error(x);
- });
- return {
- refreshGroupId,
- };
+ return await forceRefresh(ws, req);
}
case WalletApiOperation.PrepareReward: {
const req = codecForPrepareRewardRequest().decode(payload);