aboutsummaryrefslogtreecommitdiff
path: root/src/webex/pages/pay.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/webex/pages/pay.tsx')
-rw-r--r--src/webex/pages/pay.tsx17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/webex/pages/pay.tsx b/src/webex/pages/pay.tsx
index b7f09b6f6..7f36cb66e 100644
--- a/src/webex/pages/pay.tsx
+++ b/src/webex/pages/pay.tsx
@@ -32,6 +32,7 @@ import * as wxApi from "../wxApi";
import React, { useState, useEffect } from "react";
import * as Amounts from "../../util/amounts";
+import { codecForContractTerms, ContractTerms } from "../../types/talerTypes";
function TalerPayDialog({ talerPayUri }: { talerPayUri: string }) {
const [payStatus, setPayStatus] = useState<PreparePayResult | undefined>();
@@ -74,7 +75,21 @@ function TalerPayDialog({ talerPayUri }: { talerPayUri: string }) {
);
}
- const contractTerms = payStatus.contractTermsRaw;
+ let contractTerms: ContractTerms;
+
+ try {
+ contractTerms = codecForContractTerms().decode(JSON.parse(payStatus.contractTermsRaw));
+ } catch (e) {
+ // This should never happen, as the wallet is supposed to check the contract terms
+ // before storing them.
+ console.error(e);
+ console.log("raw contract terms were", payStatus.contractTermsRaw);
+ return (
+ <span>
+ Invalid contract terms.
+ </span>
+ );
+ }
if (!contractTerms) {
return (