diff options
author | Florian Dold <florian@dold.me> | 2024-01-09 18:37:43 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-01-09 18:37:43 +0100 |
commit | 4ffca702853771bb3807f3881d710b3fbb6d6191 (patch) | |
tree | f67d1b7aea83e811d1a4d8c4167397c5e7be3d4e /packages/taler-wallet-core/src/wallet.ts | |
parent | 46f04b7f123d117cc639db74f66086382a7569c7 (diff) | |
download | wallet-core-4ffca702853771bb3807f3881d710b3fbb6d6191.tar.xz |
-misc. minor fixes, docs
Diffstat (limited to 'packages/taler-wallet-core/src/wallet.ts')
-rw-r--r-- | packages/taler-wallet-core/src/wallet.ts | 95 |
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); |