aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-12-25 19:24:23 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-12-25 19:24:23 +0100
commit266b33dc428f853d279a179907a38d999d4dc86b (patch)
treedd8b3b2d175c5381bce71a1367ea988062e49aa0
parentadebfab94e76ee5d34a4f22d15fc085daef9ae00 (diff)
fix bug in the WebExtensions pay page
-rw-r--r--src/i18n/de.po10
-rw-r--r--src/i18n/en-US.po10
-rw-r--r--src/i18n/fr.po10
-rw-r--r--src/i18n/it.po10
-rw-r--r--src/i18n/sv.po10
-rw-r--r--src/i18n/taler-wallet-webex.pot10
-rw-r--r--src/util/codec.ts6
-rw-r--r--src/webex/pages/pay.tsx17
8 files changed, 52 insertions, 31 deletions
diff --git a/src/i18n/de.po b/src/i18n/de.po
index bcc3dcdb4..7cc30581d 100644
--- a/src/i18n/de.po
+++ b/src/i18n/de.po
@@ -57,27 +57,27 @@ msgstr ""
msgid "time (ms/op)"
msgstr ""
-#: src/webex/pages/pay.tsx:117
+#: src/webex/pages/pay.tsx:132
#, fuzzy, c-format
msgid "The merchant %1$s offers you to purchase:"
msgstr "Der Händler %1$s möchte einen Vertrag über %2$s mit Ihnen abschließen."
-#: src/webex/pages/pay.tsx:123
+#: src/webex/pages/pay.tsx:138
#, c-format
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
-#: src/webex/pages/pay.tsx:128
+#: src/webex/pages/pay.tsx:143
#, c-format
msgid "The total price is %1$s."
msgstr ""
-#: src/webex/pages/pay.tsx:148
+#: src/webex/pages/pay.tsx:163
#, c-format
msgid "Retry"
msgstr ""
-#: src/webex/pages/pay.tsx:157
+#: src/webex/pages/pay.tsx:172
#, fuzzy, c-format
msgid "Confirm payment"
msgstr "Bezahlung bestätigen"
diff --git a/src/i18n/en-US.po b/src/i18n/en-US.po
index 033415818..575e1712f 100644
--- a/src/i18n/en-US.po
+++ b/src/i18n/en-US.po
@@ -57,27 +57,27 @@ msgstr ""
msgid "time (ms/op)"
msgstr ""
-#: src/webex/pages/pay.tsx:117
+#: src/webex/pages/pay.tsx:132
#, c-format
msgid "The merchant %1$s offers you to purchase:"
msgstr ""
-#: src/webex/pages/pay.tsx:123
+#: src/webex/pages/pay.tsx:138
#, c-format
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
-#: src/webex/pages/pay.tsx:128
+#: src/webex/pages/pay.tsx:143
#, c-format
msgid "The total price is %1$s."
msgstr ""
-#: src/webex/pages/pay.tsx:148
+#: src/webex/pages/pay.tsx:163
#, c-format
msgid "Retry"
msgstr ""
-#: src/webex/pages/pay.tsx:157
+#: src/webex/pages/pay.tsx:172
#, c-format
msgid "Confirm payment"
msgstr ""
diff --git a/src/i18n/fr.po b/src/i18n/fr.po
index f1127c09e..c3ecfaa68 100644
--- a/src/i18n/fr.po
+++ b/src/i18n/fr.po
@@ -57,27 +57,27 @@ msgstr ""
msgid "time (ms/op)"
msgstr ""
-#: src/webex/pages/pay.tsx:117
+#: src/webex/pages/pay.tsx:132
#, c-format
msgid "The merchant %1$s offers you to purchase:"
msgstr ""
-#: src/webex/pages/pay.tsx:123
+#: src/webex/pages/pay.tsx:138
#, c-format
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
-#: src/webex/pages/pay.tsx:128
+#: src/webex/pages/pay.tsx:143
#, c-format
msgid "The total price is %1$s."
msgstr ""
-#: src/webex/pages/pay.tsx:148
+#: src/webex/pages/pay.tsx:163
#, c-format
msgid "Retry"
msgstr ""
-#: src/webex/pages/pay.tsx:157
+#: src/webex/pages/pay.tsx:172
#, c-format
msgid "Confirm payment"
msgstr ""
diff --git a/src/i18n/it.po b/src/i18n/it.po
index f1127c09e..c3ecfaa68 100644
--- a/src/i18n/it.po
+++ b/src/i18n/it.po
@@ -57,27 +57,27 @@ msgstr ""
msgid "time (ms/op)"
msgstr ""
-#: src/webex/pages/pay.tsx:117
+#: src/webex/pages/pay.tsx:132
#, c-format
msgid "The merchant %1$s offers you to purchase:"
msgstr ""
-#: src/webex/pages/pay.tsx:123
+#: src/webex/pages/pay.tsx:138
#, c-format
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
-#: src/webex/pages/pay.tsx:128
+#: src/webex/pages/pay.tsx:143
#, c-format
msgid "The total price is %1$s."
msgstr ""
-#: src/webex/pages/pay.tsx:148
+#: src/webex/pages/pay.tsx:163
#, c-format
msgid "Retry"
msgstr ""
-#: src/webex/pages/pay.tsx:157
+#: src/webex/pages/pay.tsx:172
#, c-format
msgid "Confirm payment"
msgstr ""
diff --git a/src/i18n/sv.po b/src/i18n/sv.po
index 7a95799e0..b6693f6c3 100644
--- a/src/i18n/sv.po
+++ b/src/i18n/sv.po
@@ -57,27 +57,27 @@ msgstr ""
msgid "time (ms/op)"
msgstr ""
-#: src/webex/pages/pay.tsx:117
+#: src/webex/pages/pay.tsx:132
#, fuzzy, c-format
msgid "The merchant %1$s offers you to purchase:"
msgstr "Säljaren %1$s erbjuder följande:"
-#: src/webex/pages/pay.tsx:123
+#: src/webex/pages/pay.tsx:138
#, fuzzy, c-format
msgid "The total price is %1$s (plus %2$s fees)."
msgstr "Det totala priset är %1$s (plus %2$s avgifter).\n"
-#: src/webex/pages/pay.tsx:128
+#: src/webex/pages/pay.tsx:143
#, fuzzy, c-format
msgid "The total price is %1$s."
msgstr "Det totala priset är %1$s."
-#: src/webex/pages/pay.tsx:148
+#: src/webex/pages/pay.tsx:163
#, c-format
msgid "Retry"
msgstr ""
-#: src/webex/pages/pay.tsx:157
+#: src/webex/pages/pay.tsx:172
#, c-format
msgid "Confirm payment"
msgstr "Godkän betalning"
diff --git a/src/i18n/taler-wallet-webex.pot b/src/i18n/taler-wallet-webex.pot
index f1127c09e..c3ecfaa68 100644
--- a/src/i18n/taler-wallet-webex.pot
+++ b/src/i18n/taler-wallet-webex.pot
@@ -57,27 +57,27 @@ msgstr ""
msgid "time (ms/op)"
msgstr ""
-#: src/webex/pages/pay.tsx:117
+#: src/webex/pages/pay.tsx:132
#, c-format
msgid "The merchant %1$s offers you to purchase:"
msgstr ""
-#: src/webex/pages/pay.tsx:123
+#: src/webex/pages/pay.tsx:138
#, c-format
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
-#: src/webex/pages/pay.tsx:128
+#: src/webex/pages/pay.tsx:143
#, c-format
msgid "The total price is %1$s."
msgstr ""
-#: src/webex/pages/pay.tsx:148
+#: src/webex/pages/pay.tsx:163
#, c-format
msgid "Retry"
msgstr ""
-#: src/webex/pages/pay.tsx:157
+#: src/webex/pages/pay.tsx:172
#, c-format
msgid "Confirm payment"
msgstr ""
diff --git a/src/util/codec.ts b/src/util/codec.ts
index e18a5e74c..09fa9f953 100644
--- a/src/util/codec.ts
+++ b/src/util/codec.ts
@@ -106,6 +106,12 @@ class ObjectCodecBuilder<OutputType, PartialOutputType> {
path: [`(${objectDisplayName})`],
};
}
+ if (typeof x !== "object") {
+ throw new DecodingError(
+ `expected object for ${objectDisplayName} at ${renderContext(
+ c,
+ )} but got ${typeof x}`)
+ }
const obj: any = {};
for (const prop of propList) {
const propRawVal = x[prop.name];
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 (