aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-07-31 00:34:31 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-07-31 00:34:31 +0530
commit119c1c708f9922e3e92ff592dcf08a1bd4f2f2e4 (patch)
tree5c00e984ca11d0a22f0c8b34ceaa9f92a942ed1d
parentb51932cc85287a04dca13cbb3e4d12c5b98e9c47 (diff)
respond with contract terms as JSON (instead of string) in the wallet APIv0.7.1-dev.16
-rw-r--r--src/operations/pay.ts10
-rw-r--r--src/types/walletTypes.ts8
-rw-r--r--src/wallet.ts2
-rw-r--r--src/webex/pages/pay.tsx4
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.