diff options
author | Florian Dold <florian@dold.me> | 2020-11-16 16:17:26 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2020-11-16 16:17:26 +0100 |
commit | af5a35def0c7e914bd733e652e2c3c759a4b7384 (patch) | |
tree | 12ebcc0784cacb38c4fbe7360d5b2db2bbfb8ceb | |
parent | eaae2d4ca8323c7cb954238128577cbb91bb6cac (diff) |
only query tip status on first call to prepare
-rw-r--r-- | packages/taler-wallet-core/src/operations/tip.ts | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/packages/taler-wallet-core/src/operations/tip.ts b/packages/taler-wallet-core/src/operations/tip.ts index 1d7386b8d..1d19a72ed 100644 --- a/packages/taler-wallet-core/src/operations/tip.ts +++ b/packages/taler-wallet-core/src/operations/tip.ts @@ -59,26 +59,26 @@ export async function prepareTip( throw Error("invalid taler://tip URI"); } - const tipStatusUrl = new URL( - `tips/${res.merchantTipId}`, - res.merchantBaseUrl, - ); - logger.trace("checking tip status from", tipStatusUrl.href); - const merchantResp = await ws.http.get(tipStatusUrl.href); - const tipPickupStatus = await readSuccessResponseJsonOrThrow( - merchantResp, - codecForTipPickupGetResponse(), - ); - logger.trace(`status ${j2s(tipPickupStatus)}`); - - const amount = Amounts.parseOrThrow(tipPickupStatus.tip_amount); - let tipRecord = await ws.db.getIndexed( Stores.tips.byMerchantTipIdAndBaseUrl, [res.merchantTipId, res.merchantBaseUrl], ); if (!tipRecord) { + const tipStatusUrl = new URL( + `tips/${res.merchantTipId}`, + res.merchantBaseUrl, + ); + logger.trace("checking tip status from", tipStatusUrl.href); + const merchantResp = await ws.http.get(tipStatusUrl.href); + const tipPickupStatus = await readSuccessResponseJsonOrThrow( + merchantResp, + codecForTipPickupGetResponse(), + ); + logger.trace(`status ${j2s(tipPickupStatus)}`); + + const amount = Amounts.parseOrThrow(tipPickupStatus.tip_amount); + logger.trace("new tip, creating tip record"); await updateExchangeFromUrl(ws, tipPickupStatus.exchange_url); const withdrawDetails = await getExchangeWithdrawalInfo( @@ -119,9 +119,9 @@ export async function prepareTip( const tipStatus: PrepareTipResult = { accepted: !!tipRecord && !!tipRecord.acceptedTimestamp, - tipAmountRaw: Amounts.stringify(tipPickupStatus.tip_amount), - exchangeBaseUrl: tipPickupStatus.exchange_url, - expirationTimestamp: tipPickupStatus.expiration, + tipAmountRaw: Amounts.stringify(tipRecord.tipAmountRaw), + exchangeBaseUrl: tipRecord.exchangeBaseUrl, + expirationTimestamp: tipRecord.tipExpiration, tipAmountEffective: Amounts.stringify(tipRecord.tipAmountEffective), walletTipId: tipRecord.walletTipId, }; |