aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dbTypes.ts17
-rw-r--r--src/helpers.ts14
-rw-r--r--src/i18n/de.po113
-rw-r--r--src/i18n/en-US.po113
-rw-r--r--src/i18n/fr.po113
-rw-r--r--src/i18n/it.po113
-rw-r--r--src/i18n/strings.ts8
-rw-r--r--src/i18n/taler-wallet-webex.pot113
-rw-r--r--src/talerTypes.ts13
-rw-r--r--src/wallet.ts41
-rw-r--r--src/walletTypes.ts2
-rw-r--r--src/webex/pages/return-coins.tsx2
12 files changed, 365 insertions, 297 deletions
diff --git a/src/dbTypes.ts b/src/dbTypes.ts
index e0adb6fc4..264f81dd5 100644
--- a/src/dbTypes.ts
+++ b/src/dbTypes.ts
@@ -34,6 +34,7 @@ import {
PayReq,
RefundPermission,
TipResponse,
+ WireDetail,
} from "./talerTypes";
@@ -809,3 +810,19 @@ export interface PurchaseRecord {
*/
timestamp_refund: number;
}
+
+
+/**
+ * Information about wire information for bank accounts we withdrew coins from.
+ */
+export interface SenderWireRecord {
+ /**
+ * Wire details.
+ */
+ senderWire: WireDetail;
+
+ /**
+ * Identifier, hash code of canonicalized senderWire.
+ */
+ id: number;
+}
diff --git a/src/helpers.ts b/src/helpers.ts
index d85808acb..42863c65b 100644
--- a/src/helpers.ts
+++ b/src/helpers.ts
@@ -138,3 +138,17 @@ export function getTalerStampDate(stamp: string): Date | null {
return new Date(sec * 1000);
}
+export function hash(val: any): number {
+ const str = canonicalJson(val);
+ // https://github.com/darkskyapp/string-hash
+ let h = 5381;
+ let i = str.length;
+ while (i) {
+ h = (h * 33) ^ str.charCodeAt(--i);
+ }
+
+ /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed
+ * integers. Since we want the results to be always positive, convert the
+ * signed int to an unsigned by doing an unsigned bitshift. */
+ return h >>> 0;
+}
diff --git a/src/i18n/de.po b/src/i18n/de.po
index 49b7ada8f..21ff8dfe0 100644
--- a/src/i18n/de.po
+++ b/src/i18n/de.po
@@ -27,28 +27,28 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/webex/pages/confirm-contract.tsx:70
+#: src/webex/pages/confirm-contract.tsx:73
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:84
+#: src/webex/pages/confirm-contract.tsx:87
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:89
+#: src/webex/pages/confirm-contract.tsx:92
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:156
+#: src/webex/pages/confirm-contract.tsx:159
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
#. tslint:disable-next-line:max-line-length
-#: src/webex/pages/confirm-contract.tsx:158
+#: src/webex/pages/confirm-contract.tsx:161
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -56,37 +56,37 @@ msgid ""
"wallet."
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:214
+#: src/webex/pages/confirm-contract.tsx:217
#, c-format
msgid "The merchant%1$s offers you to purchase:\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:235
+#: src/webex/pages/confirm-contract.tsx:238
#, fuzzy, c-format
msgid "Confirm payment"
msgstr "Bezahlung bestätigen"
-#: src/webex/pages/confirm-create-reserve.tsx:121
+#: src/webex/pages/confirm-create-reserve.tsx:126
#, c-format
msgid "Select"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:137
+#: src/webex/pages/confirm-create-reserve.tsx:142
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:205
+#: src/webex/pages/confirm-create-reserve.tsx:210
#, c-format
msgid "The exchange is trusted by the wallet.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:211
+#: src/webex/pages/confirm-create-reserve.tsx:216
#, c-format
msgid "The exchange is audited by a trusted auditor.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:217
+#: src/webex/pages/confirm-create-reserve.tsx:222
#, c-format
msgid ""
"Warning: The exchange is neither directly trusted nor audited by a trusted "
@@ -94,7 +94,7 @@ msgid ""
"If you withdraw from this exchange, it will be trusted in the future.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:226
+#: src/webex/pages/confirm-create-reserve.tsx:231
#, c-format
msgid ""
"Using exchange provider%1$s.\n"
@@ -102,135 +102,135 @@ msgid ""
" %2$s in fees.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:240
+#: src/webex/pages/confirm-create-reserve.tsx:245
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:257
+#: src/webex/pages/confirm-create-reserve.tsx:262
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:300
+#: src/webex/pages/confirm-create-reserve.tsx:307
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:305
+#: src/webex/pages/confirm-create-reserve.tsx:312
#, c-format
msgid "Change Exchange Provider"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:357
+#: src/webex/pages/confirm-create-reserve.tsx:364
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:442
+#: src/webex/pages/confirm-create-reserve.tsx:449
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:451
+#: src/webex/pages/confirm-create-reserve.tsx:458
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:465
+#: src/webex/pages/confirm-create-reserve.tsx:472
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:472
+#: src/webex/pages/confirm-create-reserve.tsx:479
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. #-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#
#. TODO:generic error reporting function or component.
-#: src/webex/pages/confirm-create-reserve.tsx:498 src/webex/pages/tip.tsx:148
+#: src/webex/pages/confirm-create-reserve.tsx:505 src/webex/pages/tip.tsx:155
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/webex/pages/popup.tsx:160
+#: src/webex/pages/popup.tsx:162
#, c-format
msgid "Balance"
msgstr "Saldo"
-#: src/webex/pages/popup.tsx:163
+#: src/webex/pages/popup.tsx:165
#, c-format
msgid "History"
msgstr "Verlauf"
-#: src/webex/pages/popup.tsx:166
+#: src/webex/pages/popup.tsx:168
#, c-format
msgid "Debug"
msgstr "Debug"
-#: src/webex/pages/popup.tsx:246
+#: src/webex/pages/popup.tsx:248
#, c-format
msgid "help"
msgstr ""
-#: src/webex/pages/popup.tsx:251
+#: src/webex/pages/popup.tsx:253
#, fuzzy, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr "Sie haben kein Digitalgeld. Wollen Sie %1$s? abheben?"
-#: src/webex/pages/popup.tsx:268
+#: src/webex/pages/popup.tsx:270
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/webex/pages/popup.tsx:281
+#: src/webex/pages/popup.tsx:283
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/webex/pages/popup.tsx:307
+#: src/webex/pages/popup.tsx:309
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/webex/pages/popup.tsx:334
+#: src/webex/pages/popup.tsx:336
#, c-format
msgid "Payback"
msgstr ""
-#: src/webex/pages/popup.tsx:335
+#: src/webex/pages/popup.tsx:337
#, c-format
msgid "Return Electronic Cash to Bank Account"
msgstr ""
-#: src/webex/pages/popup.tsx:336
+#: src/webex/pages/popup.tsx:338
#, c-format
msgid "Manage Trusted Auditors and Exchanges"
msgstr ""
-#: src/webex/pages/popup.tsx:348
+#: src/webex/pages/popup.tsx:350
#, fuzzy, c-format
msgid ""
"Bank requested reserve (%1$s) for\n"
" %2$s.\n"
msgstr "Bank bestätig anlegen der Reserve (%1$s) bei %2$s"
-#: src/webex/pages/popup.tsx:358
+#: src/webex/pages/popup.tsx:360
#, fuzzy, c-format
msgid ""
"Started to withdraw\n"
" %1$s%2$sfrom%3$s(%4$s).\n"
msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
-#: src/webex/pages/popup.tsx:367
+#: src/webex/pages/popup.tsx:369
#, fuzzy, c-format
msgid "Merchant%1$soffered%2$scontract%3$s.\n"
msgstr ""
@@ -238,99 +238,100 @@ msgstr ""
" möchte einen Vertrag über %2$s\n"
" mit Ihnen abschließen."
-#: src/webex/pages/popup.tsx:378
+#: src/webex/pages/popup.tsx:380
#, fuzzy, c-format
msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
-#: src/webex/pages/popup.tsx:388
+#: src/webex/pages/popup.tsx:390
#, fuzzy, c-format
msgid ""
"Paid%1$sto merchant%2$s.\n"
"%3$s(%4$s)\n"
msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
-#: src/webex/pages/popup.tsx:398
+#: src/webex/pages/popup.tsx:400
#, c-format
msgid "Merchant%1$sgave a refund over%2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:408
+#: src/webex/pages/popup.tsx:410
#, fuzzy, c-format
msgid ""
-"Merchant%1$sgave a%2$sof%3$s.\n"
+"Merchant%1$sgave\n"
+"a%2$sof%3$s.\n"
"%4$s%5$s"
msgstr ""
"%1$s\n"
" möchte einen Vertrag über %2$s\n"
" mit Ihnen abschließen."
-#: src/webex/pages/popup.tsx:417
+#: src/webex/pages/popup.tsx:420
#, c-format
msgid "Unknown event (%1$s)"
msgstr ""
-#: src/webex/pages/popup.tsx:460
+#: src/webex/pages/popup.tsx:463
#, c-format
msgid "Error: could not retrieve event history"
msgstr ""
-#: src/webex/pages/popup.tsx:485
+#: src/webex/pages/popup.tsx:488
#, c-format
msgid "Your wallet has no events recorded."
msgstr "Ihre Geldbörse verzeichnet keine Vorkommnisse."
-#: src/webex/pages/return-coins.tsx:104
+#: src/webex/pages/return-coins.tsx:105
#, c-format
msgid "Wire to bank account"
msgstr ""
-#: src/webex/pages/return-coins.tsx:172
+#: src/webex/pages/return-coins.tsx:173
#, fuzzy, c-format
msgid "Confirm"
msgstr "Bezahlung bestätigen"
-#: src/webex/pages/return-coins.tsx:175
+#: src/webex/pages/return-coins.tsx:176
#, fuzzy, c-format
msgid "Cancel"
msgstr "Saldo"
-#: src/webex/renderHtml.tsx:212
+#: src/webex/renderHtml.tsx:216
#, fuzzy, c-format
msgid "Withdrawal fees:"
msgstr "Abheben bei"
-#: src/webex/renderHtml.tsx:213
+#: src/webex/renderHtml.tsx:217
#, c-format
msgid "Rounding loss:"
msgstr ""
-#: src/webex/renderHtml.tsx:214
+#: src/webex/renderHtml.tsx:218
#, c-format
msgid "Earliest expiration (for deposit): %1$s"
msgstr ""
-#: src/webex/renderHtml.tsx:220
+#: src/webex/renderHtml.tsx:224
#, c-format
msgid "# Coins"
msgstr ""
-#: src/webex/renderHtml.tsx:221
+#: src/webex/renderHtml.tsx:225
#, c-format
msgid "Value"
msgstr ""
-#: src/webex/renderHtml.tsx:222
+#: src/webex/renderHtml.tsx:226
#, fuzzy, c-format
msgid "Withdraw Fee"
msgstr "Abheben bei %1$s"
-#: src/webex/renderHtml.tsx:223
+#: src/webex/renderHtml.tsx:227
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:224
+#: src/webex/renderHtml.tsx:228
#, c-format
msgid "Deposit Fee"
msgstr ""
diff --git a/src/i18n/en-US.po b/src/i18n/en-US.po
index e42d81fb5..3307229b1 100644
--- a/src/i18n/en-US.po
+++ b/src/i18n/en-US.po
@@ -27,28 +27,28 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/webex/pages/confirm-contract.tsx:70
+#: src/webex/pages/confirm-contract.tsx:73
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:84
+#: src/webex/pages/confirm-contract.tsx:87
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:89
+#: src/webex/pages/confirm-contract.tsx:92
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:156
+#: src/webex/pages/confirm-contract.tsx:159
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
#. tslint:disable-next-line:max-line-length
-#: src/webex/pages/confirm-contract.tsx:158
+#: src/webex/pages/confirm-contract.tsx:161
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -56,37 +56,37 @@ msgid ""
"wallet."
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:214
+#: src/webex/pages/confirm-contract.tsx:217
#, c-format
msgid "The merchant%1$s offers you to purchase:\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:235
+#: src/webex/pages/confirm-contract.tsx:238
#, c-format
msgid "Confirm payment"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:121
+#: src/webex/pages/confirm-create-reserve.tsx:126
#, c-format
msgid "Select"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:137
+#: src/webex/pages/confirm-create-reserve.tsx:142
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:205
+#: src/webex/pages/confirm-create-reserve.tsx:210
#, c-format
msgid "The exchange is trusted by the wallet.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:211
+#: src/webex/pages/confirm-create-reserve.tsx:216
#, c-format
msgid "The exchange is audited by a trusted auditor.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:217
+#: src/webex/pages/confirm-create-reserve.tsx:222
#, c-format
msgid ""
"Warning: The exchange is neither directly trusted nor audited by a trusted "
@@ -94,7 +94,7 @@ msgid ""
"If you withdraw from this exchange, it will be trusted in the future.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:226
+#: src/webex/pages/confirm-create-reserve.tsx:231
#, c-format
msgid ""
"Using exchange provider%1$s.\n"
@@ -102,229 +102,230 @@ msgid ""
" %2$s in fees.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:240
+#: src/webex/pages/confirm-create-reserve.tsx:245
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:257
+#: src/webex/pages/confirm-create-reserve.tsx:262
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:300
+#: src/webex/pages/confirm-create-reserve.tsx:307
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:305
+#: src/webex/pages/confirm-create-reserve.tsx:312
#, c-format
msgid "Change Exchange Provider"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:357
+#: src/webex/pages/confirm-create-reserve.tsx:364
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:442
+#: src/webex/pages/confirm-create-reserve.tsx:449
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:451
+#: src/webex/pages/confirm-create-reserve.tsx:458
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:465
+#: src/webex/pages/confirm-create-reserve.tsx:472
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:472
+#: src/webex/pages/confirm-create-reserve.tsx:479
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. #-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#
#. TODO:generic error reporting function or component.
-#: src/webex/pages/confirm-create-reserve.tsx:498 src/webex/pages/tip.tsx:148
+#: src/webex/pages/confirm-create-reserve.tsx:505 src/webex/pages/tip.tsx:155
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/webex/pages/popup.tsx:160
+#: src/webex/pages/popup.tsx:162
#, c-format
msgid "Balance"
msgstr ""
-#: src/webex/pages/popup.tsx:163
+#: src/webex/pages/popup.tsx:165
#, c-format
msgid "History"
msgstr ""
-#: src/webex/pages/popup.tsx:166
+#: src/webex/pages/popup.tsx:168
#, c-format
msgid "Debug"
msgstr ""
-#: src/webex/pages/popup.tsx:246
+#: src/webex/pages/popup.tsx:248
#, c-format
msgid "help"
msgstr ""
-#: src/webex/pages/popup.tsx:251
+#: src/webex/pages/popup.tsx:253
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/webex/pages/popup.tsx:268
+#: src/webex/pages/popup.tsx:270
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/webex/pages/popup.tsx:281
+#: src/webex/pages/popup.tsx:283
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/webex/pages/popup.tsx:307
+#: src/webex/pages/popup.tsx:309
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/webex/pages/popup.tsx:334
+#: src/webex/pages/popup.tsx:336
#, c-format
msgid "Payback"
msgstr ""
-#: src/webex/pages/popup.tsx:335
+#: src/webex/pages/popup.tsx:337
#, c-format
msgid "Return Electronic Cash to Bank Account"
msgstr ""
-#: src/webex/pages/popup.tsx:336
+#: src/webex/pages/popup.tsx:338
#, c-format
msgid "Manage Trusted Auditors and Exchanges"
msgstr ""
-#: src/webex/pages/popup.tsx:348
+#: src/webex/pages/popup.tsx:350
#, c-format
msgid ""
"Bank requested reserve (%1$s) for\n"
" %2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:358
+#: src/webex/pages/popup.tsx:360
#, c-format
msgid ""
"Started to withdraw\n"
" %1$s%2$sfrom%3$s(%4$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:367
+#: src/webex/pages/popup.tsx:369
#, c-format
msgid "Merchant%1$soffered%2$scontract%3$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:378
+#: src/webex/pages/popup.tsx:380
#, c-format
msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:388
+#: src/webex/pages/popup.tsx:390
#, c-format
msgid ""
"Paid%1$sto merchant%2$s.\n"
"%3$s(%4$s)\n"
msgstr ""
-#: src/webex/pages/popup.tsx:398
+#: src/webex/pages/popup.tsx:400
#, c-format
msgid "Merchant%1$sgave a refund over%2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:408
+#: src/webex/pages/popup.tsx:410
#, c-format
msgid ""
-"Merchant%1$sgave a%2$sof%3$s.\n"
+"Merchant%1$sgave\n"
+"a%2$sof%3$s.\n"
"%4$s%5$s"
msgstr ""
-#: src/webex/pages/popup.tsx:417
+#: src/webex/pages/popup.tsx:420
#, c-format
msgid "Unknown event (%1$s)"
msgstr ""
-#: src/webex/pages/popup.tsx:460
+#: src/webex/pages/popup.tsx:463
#, c-format
msgid "Error: could not retrieve event history"
msgstr ""
-#: src/webex/pages/popup.tsx:485
+#: src/webex/pages/popup.tsx:488
#, c-format
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/webex/pages/return-coins.tsx:104
+#: src/webex/pages/return-coins.tsx:105
#, c-format
msgid "Wire to bank account"
msgstr ""
-#: src/webex/pages/return-coins.tsx:172
+#: src/webex/pages/return-coins.tsx:173
#, c-format
msgid "Confirm"
msgstr ""
-#: src/webex/pages/return-coins.tsx:175
+#: src/webex/pages/return-coins.tsx:176
#, c-format
msgid "Cancel"
msgstr ""
-#: src/webex/renderHtml.tsx:212
+#: src/webex/renderHtml.tsx:216
#, c-format
msgid "Withdrawal fees:"
msgstr ""
-#: src/webex/renderHtml.tsx:213
+#: src/webex/renderHtml.tsx:217
#, c-format
msgid "Rounding loss:"
msgstr ""
-#: src/webex/renderHtml.tsx:214
+#: src/webex/renderHtml.tsx:218
#, c-format
msgid "Earliest expiration (for deposit): %1$s"
msgstr ""
-#: src/webex/renderHtml.tsx:220
+#: src/webex/renderHtml.tsx:224
#, c-format
msgid "# Coins"
msgstr ""
-#: src/webex/renderHtml.tsx:221
+#: src/webex/renderHtml.tsx:225
#, c-format
msgid "Value"
msgstr ""
-#: src/webex/renderHtml.tsx:222
+#: src/webex/renderHtml.tsx:226
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:223
+#: src/webex/renderHtml.tsx:227
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:224
+#: src/webex/renderHtml.tsx:228
#, c-format
msgid "Deposit Fee"
msgstr ""
diff --git a/src/i18n/fr.po b/src/i18n/fr.po
index 6b126178f..b955dc6a1 100644
--- a/src/i18n/fr.po
+++ b/src/i18n/fr.po
@@ -27,28 +27,28 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/webex/pages/confirm-contract.tsx:70
+#: src/webex/pages/confirm-contract.tsx:73
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:84
+#: src/webex/pages/confirm-contract.tsx:87
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:89
+#: src/webex/pages/confirm-contract.tsx:92
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:156
+#: src/webex/pages/confirm-contract.tsx:159
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
#. tslint:disable-next-line:max-line-length
-#: src/webex/pages/confirm-contract.tsx:158
+#: src/webex/pages/confirm-contract.tsx:161
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -56,37 +56,37 @@ msgid ""
"wallet."
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:214
+#: src/webex/pages/confirm-contract.tsx:217
#, c-format
msgid "The merchant%1$s offers you to purchase:\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:235
+#: src/webex/pages/confirm-contract.tsx:238
#, c-format
msgid "Confirm payment"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:121
+#: src/webex/pages/confirm-create-reserve.tsx:126
#, c-format
msgid "Select"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:137
+#: src/webex/pages/confirm-create-reserve.tsx:142
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:205
+#: src/webex/pages/confirm-create-reserve.tsx:210
#, c-format
msgid "The exchange is trusted by the wallet.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:211
+#: src/webex/pages/confirm-create-reserve.tsx:216
#, c-format
msgid "The exchange is audited by a trusted auditor.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:217
+#: src/webex/pages/confirm-create-reserve.tsx:222
#, c-format
msgid ""
"Warning: The exchange is neither directly trusted nor audited by a trusted "
@@ -94,7 +94,7 @@ msgid ""
"If you withdraw from this exchange, it will be trusted in the future.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:226
+#: src/webex/pages/confirm-create-reserve.tsx:231
#, c-format
msgid ""
"Using exchange provider%1$s.\n"
@@ -102,229 +102,230 @@ msgid ""
" %2$s in fees.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:240
+#: src/webex/pages/confirm-create-reserve.tsx:245
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:257
+#: src/webex/pages/confirm-create-reserve.tsx:262
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:300
+#: src/webex/pages/confirm-create-reserve.tsx:307
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:305
+#: src/webex/pages/confirm-create-reserve.tsx:312
#, c-format
msgid "Change Exchange Provider"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:357
+#: src/webex/pages/confirm-create-reserve.tsx:364
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:442
+#: src/webex/pages/confirm-create-reserve.tsx:449
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:451
+#: src/webex/pages/confirm-create-reserve.tsx:458
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:465
+#: src/webex/pages/confirm-create-reserve.tsx:472
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:472
+#: src/webex/pages/confirm-create-reserve.tsx:479
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. #-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#
#. TODO:generic error reporting function or component.
-#: src/webex/pages/confirm-create-reserve.tsx:498 src/webex/pages/tip.tsx:148
+#: src/webex/pages/confirm-create-reserve.tsx:505 src/webex/pages/tip.tsx:155
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/webex/pages/popup.tsx:160
+#: src/webex/pages/popup.tsx:162
#, c-format
msgid "Balance"
msgstr ""
-#: src/webex/pages/popup.tsx:163
+#: src/webex/pages/popup.tsx:165
#, c-format
msgid "History"
msgstr ""
-#: src/webex/pages/popup.tsx:166
+#: src/webex/pages/popup.tsx:168
#, c-format
msgid "Debug"
msgstr ""
-#: src/webex/pages/popup.tsx:246
+#: src/webex/pages/popup.tsx:248
#, c-format
msgid "help"
msgstr ""
-#: src/webex/pages/popup.tsx:251
+#: src/webex/pages/popup.tsx:253
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/webex/pages/popup.tsx:268
+#: src/webex/pages/popup.tsx:270
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/webex/pages/popup.tsx:281
+#: src/webex/pages/popup.tsx:283
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/webex/pages/popup.tsx:307
+#: src/webex/pages/popup.tsx:309
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/webex/pages/popup.tsx:334
+#: src/webex/pages/popup.tsx:336
#, c-format
msgid "Payback"
msgstr ""
-#: src/webex/pages/popup.tsx:335
+#: src/webex/pages/popup.tsx:337
#, c-format
msgid "Return Electronic Cash to Bank Account"
msgstr ""
-#: src/webex/pages/popup.tsx:336
+#: src/webex/pages/popup.tsx:338
#, c-format
msgid "Manage Trusted Auditors and Exchanges"
msgstr ""
-#: src/webex/pages/popup.tsx:348
+#: src/webex/pages/popup.tsx:350
#, c-format
msgid ""
"Bank requested reserve (%1$s) for\n"
" %2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:358
+#: src/webex/pages/popup.tsx:360
#, c-format
msgid ""
"Started to withdraw\n"
" %1$s%2$sfrom%3$s(%4$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:367
+#: src/webex/pages/popup.tsx:369
#, c-format
msgid "Merchant%1$soffered%2$scontract%3$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:378
+#: src/webex/pages/popup.tsx:380
#, c-format
msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:388
+#: src/webex/pages/popup.tsx:390
#, c-format
msgid ""
"Paid%1$sto merchant%2$s.\n"
"%3$s(%4$s)\n"
msgstr ""
-#: src/webex/pages/popup.tsx:398
+#: src/webex/pages/popup.tsx:400
#, c-format
msgid "Merchant%1$sgave a refund over%2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:408
+#: src/webex/pages/popup.tsx:410
#, c-format
msgid ""
-"Merchant%1$sgave a%2$sof%3$s.\n"
+"Merchant%1$sgave\n"
+"a%2$sof%3$s.\n"
"%4$s%5$s"
msgstr ""
-#: src/webex/pages/popup.tsx:417
+#: src/webex/pages/popup.tsx:420
#, c-format
msgid "Unknown event (%1$s)"
msgstr ""
-#: src/webex/pages/popup.tsx:460
+#: src/webex/pages/popup.tsx:463
#, c-format
msgid "Error: could not retrieve event history"
msgstr ""
-#: src/webex/pages/popup.tsx:485
+#: src/webex/pages/popup.tsx:488
#, c-format
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/webex/pages/return-coins.tsx:104
+#: src/webex/pages/return-coins.tsx:105
#, c-format
msgid "Wire to bank account"
msgstr ""
-#: src/webex/pages/return-coins.tsx:172
+#: src/webex/pages/return-coins.tsx:173
#, c-format
msgid "Confirm"
msgstr ""
-#: src/webex/pages/return-coins.tsx:175
+#: src/webex/pages/return-coins.tsx:176
#, c-format
msgid "Cancel"
msgstr ""
-#: src/webex/renderHtml.tsx:212
+#: src/webex/renderHtml.tsx:216
#, c-format
msgid "Withdrawal fees:"
msgstr ""
-#: src/webex/renderHtml.tsx:213
+#: src/webex/renderHtml.tsx:217
#, c-format
msgid "Rounding loss:"
msgstr ""
-#: src/webex/renderHtml.tsx:214
+#: src/webex/renderHtml.tsx:218
#, c-format
msgid "Earliest expiration (for deposit): %1$s"
msgstr ""
-#: src/webex/renderHtml.tsx:220
+#: src/webex/renderHtml.tsx:224
#, c-format
msgid "# Coins"
msgstr ""
-#: src/webex/renderHtml.tsx:221
+#: src/webex/renderHtml.tsx:225
#, c-format
msgid "Value"
msgstr ""
-#: src/webex/renderHtml.tsx:222
+#: src/webex/renderHtml.tsx:226
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:223
+#: src/webex/renderHtml.tsx:227
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:224
+#: src/webex/renderHtml.tsx:228
#, c-format
msgid "Deposit Fee"
msgstr ""
diff --git a/src/i18n/it.po b/src/i18n/it.po
index 6b126178f..b955dc6a1 100644
--- a/src/i18n/it.po
+++ b/src/i18n/it.po
@@ -27,28 +27,28 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/webex/pages/confirm-contract.tsx:70
+#: src/webex/pages/confirm-contract.tsx:73
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:84
+#: src/webex/pages/confirm-contract.tsx:87
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:89
+#: src/webex/pages/confirm-contract.tsx:92
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:156
+#: src/webex/pages/confirm-contract.tsx:159
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
#. tslint:disable-next-line:max-line-length
-#: src/webex/pages/confirm-contract.tsx:158
+#: src/webex/pages/confirm-contract.tsx:161
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -56,37 +56,37 @@ msgid ""
"wallet."
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:214
+#: src/webex/pages/confirm-contract.tsx:217
#, c-format
msgid "The merchant%1$s offers you to purchase:\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:235
+#: src/webex/pages/confirm-contract.tsx:238
#, c-format
msgid "Confirm payment"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:121
+#: src/webex/pages/confirm-create-reserve.tsx:126
#, c-format
msgid "Select"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:137
+#: src/webex/pages/confirm-create-reserve.tsx:142
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:205
+#: src/webex/pages/confirm-create-reserve.tsx:210
#, c-format
msgid "The exchange is trusted by the wallet.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:211
+#: src/webex/pages/confirm-create-reserve.tsx:216
#, c-format
msgid "The exchange is audited by a trusted auditor.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:217
+#: src/webex/pages/confirm-create-reserve.tsx:222
#, c-format
msgid ""
"Warning: The exchange is neither directly trusted nor audited by a trusted "
@@ -94,7 +94,7 @@ msgid ""
"If you withdraw from this exchange, it will be trusted in the future.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:226
+#: src/webex/pages/confirm-create-reserve.tsx:231
#, c-format
msgid ""
"Using exchange provider%1$s.\n"
@@ -102,229 +102,230 @@ msgid ""
" %2$s in fees.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:240
+#: src/webex/pages/confirm-create-reserve.tsx:245
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:257
+#: src/webex/pages/confirm-create-reserve.tsx:262
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:300
+#: src/webex/pages/confirm-create-reserve.tsx:307
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:305
+#: src/webex/pages/confirm-create-reserve.tsx:312
#, c-format
msgid "Change Exchange Provider"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:357
+#: src/webex/pages/confirm-create-reserve.tsx:364
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:442
+#: src/webex/pages/confirm-create-reserve.tsx:449
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:451
+#: src/webex/pages/confirm-create-reserve.tsx:458
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:465
+#: src/webex/pages/confirm-create-reserve.tsx:472
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:472
+#: src/webex/pages/confirm-create-reserve.tsx:479
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. #-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#
#. TODO:generic error reporting function or component.
-#: src/webex/pages/confirm-create-reserve.tsx:498 src/webex/pages/tip.tsx:148
+#: src/webex/pages/confirm-create-reserve.tsx:505 src/webex/pages/tip.tsx:155
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/webex/pages/popup.tsx:160
+#: src/webex/pages/popup.tsx:162
#, c-format
msgid "Balance"
msgstr ""
-#: src/webex/pages/popup.tsx:163
+#: src/webex/pages/popup.tsx:165
#, c-format
msgid "History"
msgstr ""
-#: src/webex/pages/popup.tsx:166
+#: src/webex/pages/popup.tsx:168
#, c-format
msgid "Debug"
msgstr ""
-#: src/webex/pages/popup.tsx:246
+#: src/webex/pages/popup.tsx:248
#, c-format
msgid "help"
msgstr ""
-#: src/webex/pages/popup.tsx:251
+#: src/webex/pages/popup.tsx:253
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/webex/pages/popup.tsx:268
+#: src/webex/pages/popup.tsx:270
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/webex/pages/popup.tsx:281
+#: src/webex/pages/popup.tsx:283
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/webex/pages/popup.tsx:307
+#: src/webex/pages/popup.tsx:309
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/webex/pages/popup.tsx:334
+#: src/webex/pages/popup.tsx:336
#, c-format
msgid "Payback"
msgstr ""
-#: src/webex/pages/popup.tsx:335
+#: src/webex/pages/popup.tsx:337
#, c-format
msgid "Return Electronic Cash to Bank Account"
msgstr ""
-#: src/webex/pages/popup.tsx:336
+#: src/webex/pages/popup.tsx:338
#, c-format
msgid "Manage Trusted Auditors and Exchanges"
msgstr ""
-#: src/webex/pages/popup.tsx:348
+#: src/webex/pages/popup.tsx:350
#, c-format
msgid ""
"Bank requested reserve (%1$s) for\n"
" %2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:358
+#: src/webex/pages/popup.tsx:360
#, c-format
msgid ""
"Started to withdraw\n"
" %1$s%2$sfrom%3$s(%4$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:367
+#: src/webex/pages/popup.tsx:369
#, c-format
msgid "Merchant%1$soffered%2$scontract%3$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:378
+#: src/webex/pages/popup.tsx:380
#, c-format
msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:388
+#: src/webex/pages/popup.tsx:390
#, c-format
msgid ""
"Paid%1$sto merchant%2$s.\n"
"%3$s(%4$s)\n"
msgstr ""
-#: src/webex/pages/popup.tsx:398
+#: src/webex/pages/popup.tsx:400
#, c-format
msgid "Merchant%1$sgave a refund over%2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:408
+#: src/webex/pages/popup.tsx:410
#, c-format
msgid ""
-"Merchant%1$sgave a%2$sof%3$s.\n"
+"Merchant%1$sgave\n"
+"a%2$sof%3$s.\n"
"%4$s%5$s"
msgstr ""
-#: src/webex/pages/popup.tsx:417
+#: src/webex/pages/popup.tsx:420
#, c-format
msgid "Unknown event (%1$s)"
msgstr ""
-#: src/webex/pages/popup.tsx:460
+#: src/webex/pages/popup.tsx:463
#, c-format
msgid "Error: could not retrieve event history"
msgstr ""
-#: src/webex/pages/popup.tsx:485
+#: src/webex/pages/popup.tsx:488
#, c-format
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/webex/pages/return-coins.tsx:104
+#: src/webex/pages/return-coins.tsx:105
#, c-format
msgid "Wire to bank account"
msgstr ""
-#: src/webex/pages/return-coins.tsx:172
+#: src/webex/pages/return-coins.tsx:173
#, c-format
msgid "Confirm"
msgstr ""
-#: src/webex/pages/return-coins.tsx:175
+#: src/webex/pages/return-coins.tsx:176
#, c-format
msgid "Cancel"
msgstr ""
-#: src/webex/renderHtml.tsx:212
+#: src/webex/renderHtml.tsx:216
#, c-format
msgid "Withdrawal fees:"
msgstr ""
-#: src/webex/renderHtml.tsx:213
+#: src/webex/renderHtml.tsx:217
#, c-format
msgid "Rounding loss:"
msgstr ""
-#: src/webex/renderHtml.tsx:214
+#: src/webex/renderHtml.tsx:218
#, c-format
msgid "Earliest expiration (for deposit): %1$s"
msgstr ""
-#: src/webex/renderHtml.tsx:220
+#: src/webex/renderHtml.tsx:224
#, c-format
msgid "# Coins"
msgstr ""
-#: src/webex/renderHtml.tsx:221
+#: src/webex/renderHtml.tsx:225
#, c-format
msgid "Value"
msgstr ""
-#: src/webex/renderHtml.tsx:222
+#: src/webex/renderHtml.tsx:226
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:223
+#: src/webex/renderHtml.tsx:227
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:224
+#: src/webex/renderHtml.tsx:228
#, c-format
msgid "Deposit Fee"
msgstr ""
diff --git a/src/i18n/strings.ts b/src/i18n/strings.ts
index d18368adc..9e78abc39 100644
--- a/src/i18n/strings.ts
+++ b/src/i18n/strings.ts
@@ -144,7 +144,7 @@ strings['de'] = {
"Merchant%1$sgave a refund over%2$s.\n": [
""
],
- "Merchant%1$sgave a%2$sof%3$s.\n%4$s%5$s": [
+ "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
"%1$s\n möchte einen Vertrag über %2$s\n mit Ihnen abschließen."
],
"Unknown event (%1$s)": [
@@ -333,7 +333,7 @@ strings['en-US'] = {
"Merchant%1$sgave a refund over%2$s.\n": [
""
],
- "Merchant%1$sgave a%2$sof%3$s.\n%4$s%5$s": [
+ "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
""
],
"Unknown event (%1$s)": [
@@ -522,7 +522,7 @@ strings['fr'] = {
"Merchant%1$sgave a refund over%2$s.\n": [
""
],
- "Merchant%1$sgave a%2$sof%3$s.\n%4$s%5$s": [
+ "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
""
],
"Unknown event (%1$s)": [
@@ -711,7 +711,7 @@ strings['it'] = {
"Merchant%1$sgave a refund over%2$s.\n": [
""
],
- "Merchant%1$sgave a%2$sof%3$s.\n%4$s%5$s": [
+ "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
""
],
"Unknown event (%1$s)": [
diff --git a/src/i18n/taler-wallet-webex.pot b/src/i18n/taler-wallet-webex.pot
index 6b126178f..b955dc6a1 100644
--- a/src/i18n/taler-wallet-webex.pot
+++ b/src/i18n/taler-wallet-webex.pot
@@ -27,28 +27,28 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/webex/pages/confirm-contract.tsx:70
+#: src/webex/pages/confirm-contract.tsx:73
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:84
+#: src/webex/pages/confirm-contract.tsx:87
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:89
+#: src/webex/pages/confirm-contract.tsx:92
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:156
+#: src/webex/pages/confirm-contract.tsx:159
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
#. tslint:disable-next-line:max-line-length
-#: src/webex/pages/confirm-contract.tsx:158
+#: src/webex/pages/confirm-contract.tsx:161
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -56,37 +56,37 @@ msgid ""
"wallet."
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:214
+#: src/webex/pages/confirm-contract.tsx:217
#, c-format
msgid "The merchant%1$s offers you to purchase:\n"
msgstr ""
-#: src/webex/pages/confirm-contract.tsx:235
+#: src/webex/pages/confirm-contract.tsx:238
#, c-format
msgid "Confirm payment"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:121
+#: src/webex/pages/confirm-create-reserve.tsx:126
#, c-format
msgid "Select"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:137
+#: src/webex/pages/confirm-create-reserve.tsx:142
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:205
+#: src/webex/pages/confirm-create-reserve.tsx:210
#, c-format
msgid "The exchange is trusted by the wallet.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:211
+#: src/webex/pages/confirm-create-reserve.tsx:216
#, c-format
msgid "The exchange is audited by a trusted auditor.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:217
+#: src/webex/pages/confirm-create-reserve.tsx:222
#, c-format
msgid ""
"Warning: The exchange is neither directly trusted nor audited by a trusted "
@@ -94,7 +94,7 @@ msgid ""
"If you withdraw from this exchange, it will be trusted in the future.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:226
+#: src/webex/pages/confirm-create-reserve.tsx:231
#, c-format
msgid ""
"Using exchange provider%1$s.\n"
@@ -102,229 +102,230 @@ msgid ""
" %2$s in fees.\n"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:240
+#: src/webex/pages/confirm-create-reserve.tsx:245
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:257
+#: src/webex/pages/confirm-create-reserve.tsx:262
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:300
+#: src/webex/pages/confirm-create-reserve.tsx:307
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:305
+#: src/webex/pages/confirm-create-reserve.tsx:312
#, c-format
msgid "Change Exchange Provider"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:357
+#: src/webex/pages/confirm-create-reserve.tsx:364
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:442
+#: src/webex/pages/confirm-create-reserve.tsx:449
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:451
+#: src/webex/pages/confirm-create-reserve.tsx:458
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:465
+#: src/webex/pages/confirm-create-reserve.tsx:472
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/webex/pages/confirm-create-reserve.tsx:472
+#: src/webex/pages/confirm-create-reserve.tsx:479
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. #-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#
#. TODO:generic error reporting function or component.
-#: src/webex/pages/confirm-create-reserve.tsx:498 src/webex/pages/tip.tsx:148
+#: src/webex/pages/confirm-create-reserve.tsx:505 src/webex/pages/tip.tsx:155
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/webex/pages/popup.tsx:160
+#: src/webex/pages/popup.tsx:162
#, c-format
msgid "Balance"
msgstr ""
-#: src/webex/pages/popup.tsx:163
+#: src/webex/pages/popup.tsx:165
#, c-format
msgid "History"
msgstr ""
-#: src/webex/pages/popup.tsx:166
+#: src/webex/pages/popup.tsx:168
#, c-format
msgid "Debug"
msgstr ""
-#: src/webex/pages/popup.tsx:246
+#: src/webex/pages/popup.tsx:248
#, c-format
msgid "help"
msgstr ""
-#: src/webex/pages/popup.tsx:251
+#: src/webex/pages/popup.tsx:253
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/webex/pages/popup.tsx:268
+#: src/webex/pages/popup.tsx:270
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/webex/pages/popup.tsx:281
+#: src/webex/pages/popup.tsx:283
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/webex/pages/popup.tsx:307
+#: src/webex/pages/popup.tsx:309
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/webex/pages/popup.tsx:334
+#: src/webex/pages/popup.tsx:336
#, c-format
msgid "Payback"
msgstr ""
-#: src/webex/pages/popup.tsx:335
+#: src/webex/pages/popup.tsx:337
#, c-format
msgid "Return Electronic Cash to Bank Account"
msgstr ""
-#: src/webex/pages/popup.tsx:336
+#: src/webex/pages/popup.tsx:338
#, c-format
msgid "Manage Trusted Auditors and Exchanges"
msgstr ""
-#: src/webex/pages/popup.tsx:348
+#: src/webex/pages/popup.tsx:350
#, c-format
msgid ""
"Bank requested reserve (%1$s) for\n"
" %2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:358
+#: src/webex/pages/popup.tsx:360
#, c-format
msgid ""
"Started to withdraw\n"
" %1$s%2$sfrom%3$s(%4$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:367
+#: src/webex/pages/popup.tsx:369
#, c-format
msgid "Merchant%1$soffered%2$scontract%3$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:378
+#: src/webex/pages/popup.tsx:380
#, c-format
msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/webex/pages/popup.tsx:388
+#: src/webex/pages/popup.tsx:390
#, c-format
msgid ""
"Paid%1$sto merchant%2$s.\n"
"%3$s(%4$s)\n"
msgstr ""
-#: src/webex/pages/popup.tsx:398
+#: src/webex/pages/popup.tsx:400
#, c-format
msgid "Merchant%1$sgave a refund over%2$s.\n"
msgstr ""
-#: src/webex/pages/popup.tsx:408
+#: src/webex/pages/popup.tsx:410
#, c-format
msgid ""
-"Merchant%1$sgave a%2$sof%3$s.\n"
+"Merchant%1$sgave\n"
+"a%2$sof%3$s.\n"
"%4$s%5$s"
msgstr ""
-#: src/webex/pages/popup.tsx:417
+#: src/webex/pages/popup.tsx:420
#, c-format
msgid "Unknown event (%1$s)"
msgstr ""
-#: src/webex/pages/popup.tsx:460
+#: src/webex/pages/popup.tsx:463
#, c-format
msgid "Error: could not retrieve event history"
msgstr ""
-#: src/webex/pages/popup.tsx:485
+#: src/webex/pages/popup.tsx:488
#, c-format
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/webex/pages/return-coins.tsx:104
+#: src/webex/pages/return-coins.tsx:105
#, c-format
msgid "Wire to bank account"
msgstr ""
-#: src/webex/pages/return-coins.tsx:172
+#: src/webex/pages/return-coins.tsx:173
#, c-format
msgid "Confirm"
msgstr ""
-#: src/webex/pages/return-coins.tsx:175
+#: src/webex/pages/return-coins.tsx:176
#, c-format
msgid "Cancel"
msgstr ""
-#: src/webex/renderHtml.tsx:212
+#: src/webex/renderHtml.tsx:216
#, c-format
msgid "Withdrawal fees:"
msgstr ""
-#: src/webex/renderHtml.tsx:213
+#: src/webex/renderHtml.tsx:217
#, c-format
msgid "Rounding loss:"
msgstr ""
-#: src/webex/renderHtml.tsx:214
+#: src/webex/renderHtml.tsx:218
#, c-format
msgid "Earliest expiration (for deposit): %1$s"
msgstr ""
-#: src/webex/renderHtml.tsx:220
+#: src/webex/renderHtml.tsx:224
#, c-format
msgid "# Coins"
msgstr ""
-#: src/webex/renderHtml.tsx:221
+#: src/webex/renderHtml.tsx:225
#, c-format
msgid "Value"
msgstr ""
-#: src/webex/renderHtml.tsx:222
+#: src/webex/renderHtml.tsx:226
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:223
+#: src/webex/renderHtml.tsx:227
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/webex/renderHtml.tsx:224
+#: src/webex/renderHtml.tsx:228
#, c-format
msgid "Deposit Fee"
msgstr ""
diff --git a/src/talerTypes.ts b/src/talerTypes.ts
index 2ac2a5155..e83a0b6b6 100644
--- a/src/talerTypes.ts
+++ b/src/talerTypes.ts
@@ -630,3 +630,16 @@ export class TipToken {
*/
static checked: (obj: any) => TipToken;
}
+
+/**
+ * Wire detail, arbitrary object that must at least
+ * contain a "type" key.
+ */
+export type WireDetail = object & { type: string };
+
+/**
+ * Type guard for wire details.
+ */
+export function isWireDetail(x: any): x is WireDetail {
+ return x && typeof x === "object" && typeof x.type === "string";
+}
diff --git a/src/wallet.ts b/src/wallet.ts
index 41f8e7276..6ad9964c5 100644
--- a/src/wallet.ts
+++ b/src/wallet.ts
@@ -29,6 +29,7 @@ import {
canonicalJson,
canonicalizeBaseUrl,
getTalerStampSec,
+ hash,
} from "./helpers";
import {
HttpRequestLibrary,
@@ -62,6 +63,7 @@ import {
RefreshPreCoinRecord,
RefreshSessionRecord,
ReserveRecord,
+ SenderWireRecord,
TipRecord,
WireFee,
} from "./dbTypes";
@@ -79,6 +81,7 @@ import {
RefundPermission,
TipPlanchetDetail,
TipResponse,
+ isWireDetail,
} from "./talerTypes";
import {
CheckPayResult,
@@ -354,7 +357,7 @@ export const WALLET_PROTOCOL_VERSION = "2:0:0";
* In the future we might consider adding migration functions for
* each version increment.
*/
-export const WALLET_DB_VERSION = 23;
+export const WALLET_DB_VERSION = 24;
const builtinCurrencies: CurrencyRecord[] = [
{
@@ -533,7 +536,7 @@ function getWithdrawDenomList(amountAvailable: AmountJson,
export namespace Stores {
class ExchangeStore extends Store<ExchangeRecord> {
constructor() {
- super("exchanges", {keyPath: "baseUrl"});
+ super("exchanges", { keyPath: "baseUrl" });
}
pubKeyIndex = new Index<string, ExchangeRecord>(this, "pubKeyIndex", "masterPublicKey");
@@ -541,13 +544,13 @@ export namespace Stores {
class NonceStore extends Store<NonceRecord> {
constructor() {
- super("nonces", {keyPath: "pub"});
+ super("nonces", { keyPath: "pub" });
}
}
class CoinsStore extends Store<CoinRecord> {
constructor() {
- super("coins", {keyPath: "coinPub"});
+ super("coins", { keyPath: "coinPub" });
}
exchangeBaseUrlIndex = new Index<string, CoinRecord>(this, "exchangeBaseUrl", "exchangeBaseUrl");
@@ -566,7 +569,7 @@ export namespace Stores {
class PurchasesStore extends Store<PurchaseRecord> {
constructor() {
- super("purchases", {keyPath: "contractTermsHash"});
+ super("purchases", { keyPath: "contractTermsHash" });
}
fulfillmentUrlIndex = new Index<string, PurchaseRecord>(this,
@@ -590,25 +593,25 @@ export namespace Stores {
class CurrenciesStore extends Store<CurrencyRecord> {
constructor() {
- super("currencies", {keyPath: "name"});
+ super("currencies", { keyPath: "name" });
}
}
class ConfigStore extends Store<ConfigRecord> {
constructor() {
- super("config", {keyPath: "key"});
+ super("config", { keyPath: "key" });
}
}
class ExchangeWireFeesStore extends Store<ExchangeWireFeesRecord> {
constructor() {
- super("exchangeWireFees", {keyPath: "exchangeBaseUrl"});
+ super("exchangeWireFees", { keyPath: "exchangeBaseUrl" });
}
}
class ReservesStore extends Store<ReserveRecord> {
constructor() {
- super("reserves", {keyPath: "reserve_pub"});
+ super("reserves", { keyPath: "reserve_pub" });
}
timestampCreatedIndex = new Index<string, ReserveRecord>(this, "timestampCreatedIndex", "created");
timestampConfirmedIndex = new Index<string, ReserveRecord>(this, "timestampConfirmedIndex", "timestamp_confirmed");
@@ -617,11 +620,17 @@ export namespace Stores {
class TipsStore extends Store<TipRecord> {
constructor() {
- super("tips", {keyPath: ["tipId", "merchantDomain"] as any as IDBKeyPath});
+ super("tips", { keyPath: ["tipId", "merchantDomain"] as any as IDBKeyPath });
}
coinPubIndex = new Index<string, TipRecord>(this, "coinPubIndex", "coinPubs", { multiEntry: true });
}
+ class SenderWiresStore extends Store<SenderWireRecord> {
+ constructor() {
+ super("senderWires", { keyPath: "id" });
+ }
+ }
+
export const coins = new CoinsStore();
export const coinsReturns = new Store<CoinsReturnRecord>("coinsReturns", {keyPath: "contractTermsHash"});
export const config = new ConfigStore();
@@ -636,6 +645,7 @@ export namespace Stores {
export const reserves = new ReservesStore();
export const purchases = new PurchasesStore();
export const tips = new TipsStore();
+ export const senderWires = new SenderWiresStore();
}
/* tslint:enable:completed-docs */
@@ -1338,6 +1348,15 @@ export class Wallet {
timestamp_depleted: 0,
};
+ const senderWire = req.senderWire;
+ if (isWireDetail(senderWire)) {
+ const rec = {
+ id: hash(senderWire),
+ senderWire,
+ };
+ await this.q().put(Stores.senderWires, rec);
+ }
+
await this.updateExchangeUsedTime(req.exchange);
const exchangeInfo = await this.updateExchangeFromUrl(req.exchange);
const {isAudited, isTrusted} = await this.getExchangeTrust(exchangeInfo);
@@ -2671,7 +2690,7 @@ export class Wallet {
Object.keys(m).map((e) => { exchangeWireTypes[e] = Array.from(m[e]); });
const senderWiresSet = new Set();
- await this.q().iter(Stores.reserves).map((x) => {
+ await this.q().iter(Stores.senderWires).map((x) => {
if (x.senderWire) {
senderWiresSet.add(canonicalJson(x.senderWire));
}
diff --git a/src/walletTypes.ts b/src/walletTypes.ts
index cd0eee4cc..15c004c62 100644
--- a/src/walletTypes.ts
+++ b/src/walletTypes.ts
@@ -315,7 +315,7 @@ export interface SenderWireInfos {
exchangeWireTypes: { [exchangeBaseUrl: string]: string[] };
/**
- * Sender wire types stored in the wallet.
+ * Sender wire information stored in the wallet.
*/
senderWires: object[];
}
diff --git a/src/webex/pages/return-coins.tsx b/src/webex/pages/return-coins.tsx
index 26db52ef4..ff998d869 100644
--- a/src/webex/pages/return-coins.tsx
+++ b/src/webex/pages/return-coins.tsx
@@ -15,7 +15,7 @@
*/
/**
- * View and edit auditors.
+ * Return coins to own bank account.
*
* @author Florian Dold
*/