From 266b33dc428f853d279a179907a38d999d4dc86b Mon Sep 17 00:00:00 2001
From: Florian Dold <florian.dold@gmail.com>
Date: Wed, 25 Dec 2019 19:24:23 +0100
Subject: fix bug in the WebExtensions pay page

---
 src/webex/pages/pay.tsx | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

(limited to 'src/webex/pages/pay.tsx')

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 (
-- 
cgit v1.2.3

