diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-07-31 00:34:31 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-07-31 00:34:31 +0530 |
commit | 119c1c708f9922e3e92ff592dcf08a1bd4f2f2e4 (patch) | |
tree | 5c00e984ca11d0a22f0c8b34ceaa9f92a942ed1d | |
parent | b51932cc85287a04dca13cbb3e4d12c5b98e9c47 (diff) |
respond with contract terms as JSON (instead of string) in the wallet APIv0.7.1-dev.16
-rw-r--r-- | src/operations/pay.ts | 10 | ||||
-rw-r--r-- | src/types/walletTypes.ts | 8 | ||||
-rw-r--r-- | src/wallet.ts | 2 | ||||
-rw-r--r-- | src/webex/pages/pay.tsx | 4 |
4 files changed, 11 insertions, 13 deletions
diff --git a/src/operations/pay.ts b/src/operations/pay.ts index 4a8c2144f..9cbda5ba5 100644 --- a/src/operations/pay.ts +++ b/src/operations/pay.ts @@ -924,7 +924,7 @@ export async function preparePayForUri( logger.info("not confirming payment, insufficient coins"); return { status: PreparePayResultType.InsufficientBalance, - contractTerms: d.contractTermsRaw, + contractTerms: JSON.parse(d.contractTermsRaw), proposalId: proposal.proposalId, }; } @@ -935,7 +935,7 @@ export async function preparePayForUri( return { status: PreparePayResultType.PaymentPossible, - contractTerms: d.contractTermsRaw, + contractTerms: JSON.parse(d.contractTermsRaw), proposalId: proposal.proposalId, amountEffective: Amounts.stringify(costInfo.totalCost), amountRaw: Amounts.stringify(res.paymentAmount), @@ -957,20 +957,20 @@ export async function preparePayForUri( const r = await submitPay(ws, proposalId); return { status: PreparePayResultType.AlreadyConfirmed, - contractTerms: purchase.contractTermsRaw, + contractTerms: JSON.parse(purchase.contractTermsRaw), paid: true, nextUrl: r.nextUrl, }; } else if (!purchase.timestampFirstSuccessfulPay) { return { status: PreparePayResultType.AlreadyConfirmed, - contractTerms: purchase.contractTermsRaw, + contractTerms: JSON.parse(purchase.contractTermsRaw), paid: false, }; } else if (purchase.paymentSubmitPending) { return { status: PreparePayResultType.AlreadyConfirmed, - contractTerms: purchase.contractTermsRaw, + contractTerms: JSON.parse(purchase.contractTermsRaw), paid: false, }; } diff --git a/src/types/walletTypes.ts b/src/types/walletTypes.ts index 9f0bfaf37..767b4c703 100644 --- a/src/types/walletTypes.ts +++ b/src/types/walletTypes.ts @@ -329,7 +329,7 @@ export type PreparePayResult = export interface PreparePayResultPaymentPossible { status: PreparePayResultType.PaymentPossible; proposalId: string; - contractTerms: string; + contractTerms: Record<string, unknown>; amountRaw: string; amountEffective: string; } @@ -337,12 +337,12 @@ export interface PreparePayResultPaymentPossible { export interface PreparePayResultInsufficientBalance { status: PreparePayResultType.InsufficientBalance; proposalId: string; - contractTerms: any; + contractTerms: Record<string, unknown>; } export interface PreparePayResultAlreadyConfirmed { status: PreparePayResultType.AlreadyConfirmed; - contractTerms: any; + contractTerms: Record<string, unknown>; paid: boolean; // Only specified if paid. nextUrl?: string; @@ -368,7 +368,7 @@ export interface AcceptWithdrawalResponse { * Details about a purchase, including refund status. */ export interface PurchaseDetails { - contractTerms: any; + contractTerms: Record<string, undefined>; hasRefund: boolean; totalRefundAmount: AmountJson; totalRefundAndRefreshFees: AmountJson; diff --git a/src/wallet.ts b/src/wallet.ts index 09a3fcb45..758336c58 100644 --- a/src/wallet.ts +++ b/src/wallet.ts @@ -791,7 +791,7 @@ export class Wallet { ]).amount; const totalFees = totalRefundFees; return { - contractTerms: purchase.contractTermsRaw, + contractTerms: JSON.parse(purchase.contractTermsRaw), hasRefund: purchase.timestampLastRefundStatus !== undefined, totalRefundAmount: totalRefundAmount, totalRefundAndRefreshFees: totalFees, diff --git a/src/webex/pages/pay.tsx b/src/webex/pages/pay.tsx index d255ab6e5..ce44c0040 100644 --- a/src/webex/pages/pay.tsx +++ b/src/webex/pages/pay.tsx @@ -74,9 +74,7 @@ function TalerPayDialog({ talerPayUri }: { talerPayUri: string }): JSX.Element { let contractTerms: ContractTerms; try { - contractTerms = codecForContractTerms().decode( - JSON.parse(payStatus.contractTerms), - ); + contractTerms = codecForContractTerms().decode(payStatus.contractTerms); } catch (e) { // This should never happen, as the wallet is supposed to check the contract terms // before storing them. |