gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-merchant-backoffice] branch master updated (9695020 -> 5de299e)


From: gnunet
Subject: [taler-merchant-backoffice] branch master updated (9695020 -> 5de299e)
Date: Sat, 08 Jan 2022 11:04:05 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a change to branch master
in repository merchant-backoffice.

    from 9695020  employ language switch
     new 5189b9d  Wrap more strings into i18n().
     new 483d6da  partially addressing state persistence
     new 5de299e  mocking local storage in tests

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 packages/bank/build-bank-translations.sh   |   5 +-
 packages/bank/package.json                 |  12 ++-
 packages/bank/src/context/translation.ts   |   1 +
 packages/bank/src/i18n/bank.pot            |  90 ++++++++++++++++------
 packages/bank/src/i18n/de.po               |  94 ++++++++++++++++-------
 packages/bank/src/i18n/en.po               |  94 ++++++++++++++++-------
 packages/bank/src/i18n/{bank.pot => it.po} |  97 +++++++++++++++++-------
 packages/bank/src/i18n/strings.ts          | 118 ++++++++++++++++++++++++++---
 packages/bank/src/pages/home/index.tsx     |  66 ++++++++--------
 packages/bank/tests/__tests__/homepage.js  |  12 +++
 10 files changed, 435 insertions(+), 154 deletions(-)
 copy packages/bank/src/i18n/{bank.pot => it.po} (52%)

diff --git a/packages/bank/build-bank-translations.sh 
b/packages/bank/build-bank-translations.sh
index 86a1716..85c8ad0 100755
--- a/packages/bank/build-bank-translations.sh
+++ b/packages/bank/build-bank-translations.sh
@@ -2,11 +2,14 @@
 
 set -eu
 
+# NOTE: the <Translate> node somehow didn't get
+# the strings extracted.  Only i18n`` did
+
 function build {
   POTGEN=node_modules/@gnu-taler/pogen/bin/pogen
   PACKAGE_NAME=$1
 
-  find \( -name "*.ts" -or -name "*.tsx" \) ! -name "*.d.ts" \
+  find src/ \( -type f -name "*.ts" -or -name "*.tsx" \) ! -name "*.d.ts" \
       | xargs node $POTGEN \
       | msguniq \
       | msgmerge src/i18n/poheader - \
diff --git a/packages/bank/package.json b/packages/bank/package.json
index 8218878..c153dd5 100644
--- a/packages/bank/package.json
+++ b/packages/bank/package.json
@@ -37,23 +37,25 @@
   },
   "devDependencies": {
     "@babel/core": "^7.13.16",
+    "@babel/plugin-transform-react-jsx": "^7.12.13",
+    "@babel/plugin-transform-react-jsx-source": "^7.12.13",
+    "@babel/preset-env": "^7.16.7",
     "@creativebulma/bulma-tooltip": "^1.2.0",
+    "@gnu-taler/pogen": "^0.0.5",
     "@storybook/addon-a11y": "6.2.9",
     "@storybook/addon-actions": "6.2.9",
     "@storybook/addon-essentials": "6.2.9",
     "@storybook/addon-links": "6.2.9",
     "@storybook/preact": "6.2.9",
     "@storybook/preset-scss": "^1.0.3",
+    "@testing-library/jest-dom": "^5.16.1",
     "@testing-library/preact": "^2.0.1",
     "@testing-library/preact-hooks": "^1.1.0",
-    "@testing-library/jest-dom": "^5.16.1",
     "@types/enzyme": "^3.10.10",
     "@types/jest": "^27.0.2",
     "@typescript-eslint/eslint-plugin": "^5.3.0",
     "@typescript-eslint/parser": "^5.3.0",
-    "jest-fetch-mock": "^3.0.3",
     "bulma": "^0.9.3",
-    "@gnu-taler/pogen": "^0.0.5",
     "bulma-checkbox": "^1.1.1",
     "bulma-radio": "^1.1.1",
     "enzyme": "^3.11.0",
@@ -61,9 +63,11 @@
     "eslint": "^8.1.0",
     "eslint-config-preact": "^1.2.0",
     "jest": "^27.3.1",
+    "jest-fetch-mock": "^3.0.3",
     "jest-preset-preact": "^4.0.5",
-    "po2json": "^0.4.5",
+    "jest-watch-typeahead": "^1.0.0",
     "jssha": "^3.2.0",
+    "po2json": "^0.4.5",
     "preact-cli": "3.0.5",
     "sass": "1.32.13",
     "sass-loader": "^10",
diff --git a/packages/bank/src/context/translation.ts 
b/packages/bank/src/context/translation.ts
index a47864d..ceff7b6 100644
--- a/packages/bank/src/context/translation.ts
+++ b/packages/bank/src/context/translation.ts
@@ -50,6 +50,7 @@ export const TranslationProvider = ({
   children,
   forceLang,
 }: Props): VNode => {
+
   const [lang, changeLanguage] = useLang(initial);
   useEffect(() => {
     if (forceLang) {
diff --git a/packages/bank/src/i18n/bank.pot b/packages/bank/src/i18n/bank.pot
index 63aa3b6..766bfa2 100644
--- a/packages/bank/src/i18n/bank.pot
+++ b/packages/bank/src/i18n/bank.pot
@@ -1,28 +1,3 @@
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:55
-#, c-format
-msgid "days"
-msgstr ""
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:65
-#, c-format
-msgid "hours"
-msgstr ""
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:76
-#, c-format
-msgid "minutes"
-msgstr ""
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:87
-#, c-format
-msgid "seconds"
-msgstr ""
-
-#: /home/job/merchant-backoffice/packages/bank/src/pages/home/index.tsx:549
-#, c-format
-msgid "Page has a problem:"
-msgstr ""
-
 #  This file is part of GNU Taler
 #  (C) 2021 Taler Systems S.A.
 #  GNU Taler is free software; you can redistribute it and/or modify it under 
the
@@ -48,3 +23,68 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/components/picker/DurationPicker.tsx:55
+#, c-format
+msgid "days"
+msgstr ""
+
+#: src/components/picker/DurationPicker.tsx:65
+#, c-format
+msgid "hours"
+msgstr ""
+
+#: src/components/picker/DurationPicker.tsx:76
+#, c-format
+msgid "minutes"
+msgstr ""
+
+#: src/components/picker/DurationPicker.tsx:87
+#, c-format
+msgid "seconds"
+msgstr ""
+
+#: src/pages/home/index.tsx:561
+#, c-format
+msgid "Page has a problem:"
+msgstr ""
+
+#: src/pages/home/index.tsx:564
+#, c-format
+msgid "Go back"
+msgstr ""
+
+#: src/pages/home/index.tsx:576
+#, c-format
+msgid "Page has a problem: logged in but backend state is lost."
+msgstr ""
+
+#: src/pages/home/index.tsx:604
+#, c-format
+msgid "Charge Taler wallet"
+msgstr ""
+
+#: src/pages/home/index.tsx:610
+#, c-format
+msgid "Close"
+msgstr ""
+
+#: src/pages/home/index.tsx:617
+#, c-format
+msgid "Confirm withdrawal"
+msgstr ""
+
+#: src/pages/home/index.tsx:622
+#, c-format
+msgid "Abort withdrawal"
+msgstr ""
+
+#: src/pages/home/index.tsx:632
+#, c-format
+msgid "Welcome to euFin bank: Taler+IBAN now possible!"
+msgstr ""
+
+#: src/pages/home/index.tsx:673
+#, c-format
+msgid "Sign in"
+msgstr ""
diff --git a/packages/bank/src/i18n/de.po b/packages/bank/src/i18n/de.po
index 2ffe0b8..6ad200e 100644
--- a/packages/bank/src/i18n/de.po
+++ b/packages/bank/src/i18n/de.po
@@ -1,28 +1,3 @@
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:55
-#, c-format
-msgid "days"
-msgstr ""
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:65
-#, c-format
-msgid "hours"
-msgstr ""
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:76
-#, c-format
-msgid "minutes"
-msgstr ""
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:87
-#, c-format
-msgid "seconds"
-msgstr ""
-
-#: /home/job/merchant-backoffice/packages/bank/src/pages/home/index.tsx:549
-#, c-format
-msgid "Page has a problem:"
-msgstr "Es gibt ein Problem:"
-
 #  This file is part of GNU Taler
 #  (C) 2021 Taler Systems S.A.
 #  GNU Taler is free software; you can redistribute it and/or modify it under 
the
@@ -39,11 +14,76 @@ msgstr ""
 "Project-Id-Version: Taler Wallet\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-11-23 00:00+0100\n"
-"PO-Revision-Date: 2022-01-06 19:44+0100\n"
-"Last-Translator:  <translations@taler.net>\n"
+"PO-Revision-Date: 2022-01-08 09:57+0100\n"
+"Last-Translator:  <translate@taler.net>\n"
 "Language-Team: German\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/components/picker/DurationPicker.tsx:55
+#, c-format
+msgid "days"
+msgstr ""
+
+#: src/components/picker/DurationPicker.tsx:65
+#, c-format
+msgid "hours"
+msgstr ""
+
+#: src/components/picker/DurationPicker.tsx:76
+#, c-format
+msgid "minutes"
+msgstr ""
+
+#: src/components/picker/DurationPicker.tsx:87
+#, c-format
+msgid "seconds"
+msgstr ""
+
+#: src/pages/home/index.tsx:561
+#, c-format
+msgid "Page has a problem:"
+msgstr ""
+
+#: src/pages/home/index.tsx:564
+#, c-format
+msgid "Go back"
+msgstr ""
+
+#: src/pages/home/index.tsx:576
+#, c-format
+msgid "Page has a problem: logged in but backend state is lost."
+msgstr ""
+
+#: src/pages/home/index.tsx:604
+#, c-format
+msgid "Charge Taler wallet"
+msgstr ""
+
+#: src/pages/home/index.tsx:610
+#, c-format
+msgid "Close"
+msgstr ""
+
+#: src/pages/home/index.tsx:617
+#, c-format
+msgid "Confirm withdrawal"
+msgstr ""
+
+#: src/pages/home/index.tsx:622
+#, c-format
+msgid "Abort withdrawal"
+msgstr ""
+
+#: src/pages/home/index.tsx:632
+#, c-format
+msgid "Welcome to euFin bank: Taler+IBAN now possible!"
+msgstr ""
+
+#: src/pages/home/index.tsx:673
+#, c-format
+msgid "Sign in"
+msgstr ""
diff --git a/packages/bank/src/i18n/en.po b/packages/bank/src/i18n/en.po
index a145923..3c4da4d 100644
--- a/packages/bank/src/i18n/en.po
+++ b/packages/bank/src/i18n/en.po
@@ -1,28 +1,3 @@
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:55
-#, c-format
-msgid "days"
-msgstr "days"
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:65
-#, c-format
-msgid "hours"
-msgstr "hours"
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:76
-#, c-format
-msgid "minutes"
-msgstr "minutes"
-
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:87
-#, c-format
-msgid "seconds"
-msgstr "seconds"
-
-#: /home/job/merchant-backoffice/packages/bank/src/pages/home/index.tsx:549
-#, c-format
-msgid "Page has a problem:"
-msgstr ""
-
 #  This file is part of GNU Taler
 #  (C) 2021 Taler Systems S.A.
 #  GNU Taler is free software; you can redistribute it and/or modify it under 
the
@@ -39,11 +14,76 @@ msgstr ""
 "Project-Id-Version: Taler Wallet\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-11-23 00:00+0100\n"
-"PO-Revision-Date: 2022-01-06 19:43+0100\n"
-"Last-Translator:  <translations@taler.net>\n"
+"PO-Revision-Date: 2022-01-08 09:57+0100\n"
+"Last-Translator:  <translate@taler.net>\n"
 "Language-Team: English\n"
 "Language: en\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/components/picker/DurationPicker.tsx:55
+#, c-format
+msgid "days"
+msgstr "days"
+
+#: src/components/picker/DurationPicker.tsx:65
+#, c-format
+msgid "hours"
+msgstr "hours"
+
+#: src/components/picker/DurationPicker.tsx:76
+#, c-format
+msgid "minutes"
+msgstr "minutes"
+
+#: src/components/picker/DurationPicker.tsx:87
+#, c-format
+msgid "seconds"
+msgstr "seconds"
+
+#: src/pages/home/index.tsx:561
+#, c-format
+msgid "Page has a problem:"
+msgstr "Page has a problem:"
+
+#: src/pages/home/index.tsx:564
+#, c-format
+msgid "Go back"
+msgstr "Go back"
+
+#: src/pages/home/index.tsx:576
+#, c-format
+msgid "Page has a problem: logged in but backend state is lost."
+msgstr "Page has a problem: logged in but backend state is lost."
+
+#: src/pages/home/index.tsx:604
+#, c-format
+msgid "Charge Taler wallet"
+msgstr "Charge Taler wallet"
+
+#: src/pages/home/index.tsx:610
+#, c-format
+msgid "Close"
+msgstr "Close"
+
+#: src/pages/home/index.tsx:617
+#, c-format
+msgid "Confirm withdrawal"
+msgstr "Confirm withdrawal"
+
+#: src/pages/home/index.tsx:622
+#, c-format
+msgid "Abort withdrawal"
+msgstr "Abort withdrawal"
+
+#: src/pages/home/index.tsx:632
+#, c-format
+msgid "Welcome to euFin bank: Taler+IBAN now possible!"
+msgstr "Welcome to euFin bank: Taler+IBAN now possible!"
+
+#: src/pages/home/index.tsx:673
+#, c-format
+msgid "Sign in"
+msgstr "Sign in"
diff --git a/packages/bank/src/i18n/bank.pot b/packages/bank/src/i18n/it.po
similarity index 52%
copy from packages/bank/src/i18n/bank.pot
copy to packages/bank/src/i18n/it.po
index 63aa3b6..ef2d328 100644
--- a/packages/bank/src/i18n/bank.pot
+++ b/packages/bank/src/i18n/it.po
@@ -1,50 +1,89 @@
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:55
+#  This file is part of GNU Taler
+#  (C) 2021 Taler Systems S.A.
+#  GNU Taler is free software; you can redistribute it and/or modify it under 
the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 3, or (at your option) any later version.
+#  GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#  You should have received a copy of the GNU General Public License along with
+#  GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Taler Wallet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-11-23 00:00+0100\n"
+"PO-Revision-Date: 2022-01-08 10:05+0100\n"
+"Last-Translator:  <translate@taler.net>\n"
+"Language-Team: Italian\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/components/picker/DurationPicker.tsx:55
 #, c-format
 msgid "days"
 msgstr ""
 
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:65
+#: src/components/picker/DurationPicker.tsx:65
 #, c-format
 msgid "hours"
 msgstr ""
 
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:76
+#: src/components/picker/DurationPicker.tsx:76
 #, c-format
 msgid "minutes"
 msgstr ""
 
-#: 
/home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:87
+#: src/components/picker/DurationPicker.tsx:87
 #, c-format
 msgid "seconds"
 msgstr ""
 
-#: /home/job/merchant-backoffice/packages/bank/src/pages/home/index.tsx:549
+#: src/pages/home/index.tsx:561
 #, c-format
 msgid "Page has a problem:"
 msgstr ""
 
-#  This file is part of GNU Taler
-#  (C) 2021 Taler Systems S.A.
-#  GNU Taler is free software; you can redistribute it and/or modify it under 
the
-#  terms of the GNU General Public License as published by the Free Software
-#  Foundation; either version 3, or (at your option) any later version.
-#  GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
-#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
-#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-#  You should have received a copy of the GNU General Public License along with
-#  GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
-#
-#, fuzzy
-msgid ""
+#: src/pages/home/index.tsx:564
+#, c-format
+msgid "Go back"
+msgstr ""
+
+#: src/pages/home/index.tsx:576
+#, c-format
+msgid "Page has a problem: logged in but backend state is lost."
+msgstr ""
+
+#: src/pages/home/index.tsx:604
+#, c-format
+msgid "Charge Taler wallet"
+msgstr ""
+
+#: src/pages/home/index.tsx:610
+#, c-format
+msgid "Close"
+msgstr ""
+
+#: src/pages/home/index.tsx:617
+#, c-format
+msgid "Confirm withdrawal"
+msgstr ""
+
+#: src/pages/home/index.tsx:622
+#, c-format
+msgid "Abort withdrawal"
+msgstr ""
+
+#: src/pages/home/index.tsx:632
+#, c-format
+msgid "Welcome to euFin bank: Taler+IBAN now possible!"
+msgstr "Benvenuti da banca euFin: prova Taler+IBAN!"
+
+#: src/pages/home/index.tsx:673
+#, c-format
+msgid "Sign in"
 msgstr ""
-"Project-Id-Version: Taler Wallet\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-11-23 00:00+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
diff --git a/packages/bank/src/i18n/strings.ts 
b/packages/bank/src/i18n/strings.ts
index c36254d..0a3bd73 100644
--- a/packages/bank/src/i18n/strings.ts
+++ b/packages/bank/src/i18n/strings.ts
@@ -21,6 +21,11 @@ strings['de'] = {
   "domain": "messages",
   "locale_data": {
     "messages": {
+      "": {
+        "domain": "messages",
+        "plural_forms": "nplurals=2; plural=(n != 1);",
+        "lang": "de"
+      },
       "days": [
         ""
       ],
@@ -34,13 +39,32 @@ strings['de'] = {
         ""
       ],
       "Page has a problem:": [
-        "Es gibt ein Problem:"
+        ""
       ],
-      "": {
-        "domain": "messages",
-        "plural_forms": "nplurals=2; plural=(n != 1);",
-        "lang": "de"
-      }
+      "Go back": [
+        ""
+      ],
+      "Page has a problem: logged in but backend state is lost.": [
+        ""
+      ],
+      "Charge Taler wallet": [
+        ""
+      ],
+      "Close": [
+        ""
+      ],
+      "Confirm withdrawal": [
+        ""
+      ],
+      "Abort withdrawal": [
+        ""
+      ],
+      "Welcome to euFin bank: Taler+IBAN now possible!": [
+        ""
+      ],
+      "Sign in": [
+        ""
+      ]
     }
   }
 };
@@ -49,6 +73,11 @@ strings['en'] = {
   "domain": "messages",
   "locale_data": {
     "messages": {
+      "": {
+        "domain": "messages",
+        "plural_forms": "nplurals=2; plural=(n != 1);",
+        "lang": "en"
+      },
       "days": [
         "days"
       ],
@@ -62,13 +91,84 @@ strings['en'] = {
         "seconds"
       ],
       "Page has a problem:": [
-        ""
+        "Page has a problem:"
+      ],
+      "Go back": [
+        "Go back"
+      ],
+      "Page has a problem: logged in but backend state is lost.": [
+        "Page has a problem: logged in but backend state is lost."
+      ],
+      "Charge Taler wallet": [
+        "Charge Taler wallet"
+      ],
+      "Close": [
+        "Close"
       ],
+      "Confirm withdrawal": [
+        "Confirm withdrawal"
+      ],
+      "Abort withdrawal": [
+        "Abort withdrawal"
+      ],
+      "Welcome to euFin bank: Taler+IBAN now possible!": [
+        "Welcome to euFin bank: Taler+IBAN now possible!"
+      ],
+      "Sign in": [
+        "Sign in"
+      ]
+    }
+  }
+};
+
+strings['it'] = {
+  "domain": "messages",
+  "locale_data": {
+    "messages": {
       "": {
         "domain": "messages",
         "plural_forms": "nplurals=2; plural=(n != 1);",
-        "lang": "en"
-      }
+        "lang": "it"
+      },
+      "days": [
+        ""
+      ],
+      "hours": [
+        ""
+      ],
+      "minutes": [
+        ""
+      ],
+      "seconds": [
+        ""
+      ],
+      "Page has a problem:": [
+        ""
+      ],
+      "Go back": [
+        ""
+      ],
+      "Page has a problem: logged in but backend state is lost.": [
+        ""
+      ],
+      "Charge Taler wallet": [
+        ""
+      ],
+      "Close": [
+        ""
+      ],
+      "Confirm withdrawal": [
+        ""
+      ],
+      "Abort withdrawal": [
+        ""
+      ],
+      "Welcome to euFin bank: Taler+IBAN now possible!": [
+        "Benvenuti da banca euFin: prova Taler+IBAN!"
+      ],
+      "Sign in": [
+        ""
+      ]
     }
   }
 };
diff --git a/packages/bank/src/pages/home/index.tsx 
b/packages/bank/src/pages/home/index.tsx
index 27e9f11..50c8c1d 100644
--- a/packages/bank/src/pages/home/index.tsx
+++ b/packages/bank/src/pages/home/index.tsx
@@ -2,8 +2,9 @@ import useSWR, { SWRConfig, useSWRConfig } from "swr";
 import { h, Fragment, ComponentChildren, VNode } from "preact";
 import { useState, useEffect, StateUpdater } from "preact/hooks";
 import { Buffer } from "buffer";
-import { useTranslator } from "../../i18n";
+import { useTranslator, Translate } from "../../i18n";
 import { QR } from "../../components/QR";
+import { useNotNullLocalStorage } from "../../hooks";
 
 /**********************************************
  * Type definitions for states and API calls. *
@@ -107,6 +108,10 @@ function useAccountState(
   return useState<AccountStateTypeOpt>();
 }
 
+
+/**
+ * Wrapper providing defaults.
+ */
 function usePageState(
   state: PageStateType = {
     isLoggedIn: false,
@@ -114,7 +119,13 @@ function usePageState(
     withdrawalInProgress: false,
   }
 ): [PageStateType, StateUpdater<PageStateType>] {
-  return useState<PageStateType>(state);
+  const ret = useNotNullLocalStorage("page-state", JSON.stringify(state));
+  const retObj: PageStateType = JSON.parse(ret[0]);
+  const retSetter: StateUpdater<PageStateType> = function(val) {
+    const newVal = val instanceof Function ? JSON.stringify(val(retObj)) : 
JSON.stringify(val)
+    ret[1](newVal)
+  }
+  return [retObj, retSetter];
 }
 
 /**
@@ -478,10 +489,10 @@ function Account(props: any) {
 
   if (!data) return <p>Retrieving the profile page...</p>;
   if (withdrawalOutcome) {
-    return <div>
+    return <Fragment>
       <p>{withdrawalOutcome}</p>
       {props.children}
-    </div>
+    </Fragment>
   }
   /**
    * A Taler withdrawal replaces everything in the page and
@@ -493,18 +504,18 @@ function Account(props: any) {
    * the outcome.
    */
   if (talerWithdrawUri) {
-    return (<div>
+    return (<Fragment>
       <p>Scan the following QR code, and then confirm!</p>
       <div>{QR({text: talerWithdrawUri})}</div>
       <a href={talerWithdrawUri}></a>
       <p>Withdraw address: <pre>{talerWithdrawUri}</pre></p>
       {props.children}
-    </div>);
+    </Fragment>);
   }
-  return (<div>
+  return (<Fragment>
     <p>Your balance is {data.balance.amount}.</p>
     {props.children}
-  </div>);
+  </Fragment>);
 }
 
 /**
@@ -546,7 +557,12 @@ export function BankHome(): VNode {
   var i18n = useTranslator();
 
   if (pageState.hasError) {
-    return <p>{i18n`Page has a problem:`} {pageState.error}</p>;
+    return <Fragment>
+      <p>{i18n`Page has a problem:`} {pageState.error}</p>
+      <a onClick={() => {
+        pageStateSetter((prevState) => ({...prevState, hasError: false}))
+      }}>{i18n`Go back`}</a>
+    </Fragment>;
   }
 
   /**
@@ -557,7 +573,7 @@ export function BankHome(): VNode {
   if (pageState.isLoggedIn) {
     if (typeof backendState === "undefined") {
       pageStateSetter((prevState) => ({ ...prevState, hasError: true }));
-      return <p>Page has a problem: logged in but backend state is lost.</p>;
+      return <p>{i18n`Page has a problem: logged in but backend state is 
lost.`}</p>;
     }
     return (
       <SWRWithCredentials
@@ -585,47 +601,35 @@ export function BankHome(): VNode {
               "EUR:5",
               backendState,
               pageStateSetter
-            )}}>Charge Taler wallet</button>
+            )}}>{i18n`Charge Taler wallet`}</button>
          }
 
          {pageState.withdrawalOutcome && <button onClick={() => {
               pageStateSetter((prevState) => {
                const { withdrawalOutcome, ...rest } = prevState;
-               return {...rest, withdrawalInProgress: 
false};})}}>Close</button>
+               return {...rest, withdrawalInProgress: 
false};})}}>{i18n`Close`}</button>
          }
 
          {pageState.talerWithdrawUri && <div><button onClick={() => {
             confirmWithdrawalCall(
               backendState,
              pageState.withdrawalId,
-             pageStateSetter);}}>Confirm withdrawal</button>
+             pageStateSetter);}}>{i18n`Confirm withdrawal`}</button>
             <button onClick={() => {
               abortWithdrawalCall(
                 backendState,
                pageState.withdrawalId,
-               pageStateSetter);}}>Abort withdrawal</button>
+               pageStateSetter);}}>{i18n`Abort withdrawal`}</button>
          </div>}
-
        </Account>
       </SWRWithCredentials>
     );
-
-    /**
-     * FIXME: need to offer a Taler withdraw button here.
-     */
-
-    /**
-     * FIXME: need to offer the withdraw confirmation page,
-     * after the wallet has 'selected' an exchange and a reserve.
-     *
-     * The selection can be detected by asking the withdrawal
-     * status to the bank's backend.
-     */
   }
 
   var submitData: CredentialsRequestType;
   return (
-    <div>
+    <Fragment>
+      <p>{i18n`Welcome to euFin bank: Taler+IBAN now possible!`}</p>
       <input
         type="text"
         placeholder="username"
@@ -666,9 +670,7 @@ export function BankHome(): VNode {
             backendStateSetter,
             pageStateSetter
           );
-        }}>
-        Sign in 
-      </button>
-    </div>
+        }}>{i18n`Sign in`}</button>
+    </Fragment>
   );
 }
diff --git a/packages/bank/tests/__tests__/homepage.js 
b/packages/bank/tests/__tests__/homepage.js
index 458bc2a..0145522 100644
--- a/packages/bank/tests/__tests__/homepage.js
+++ b/packages/bank/tests/__tests__/homepage.js
@@ -7,6 +7,14 @@ import { waitFor, cleanup, render, fireEvent, screen } from 
'@testing-library/pr
 import expect from 'expect';
 import fetchMock from "jest-fetch-mock";
 
+/**
+ * This mock makes the translator always return the
+ * english string.  It didn't work within the 'beforeAll'
+ * function...
+ */
+jest.mock("../../src/i18n")
+const i18n = require("../../src/i18n")
+i18n.useTranslator.mockImplementation(() => function(arg) {return arg})
 
 beforeAll(() => {
   Object.defineProperty(window, 'location', {
@@ -15,6 +23,10 @@ beforeAll(() => {
       pathname: "/demobanks/default"
     }
   })
+  // Invalidating local storage: makes it more difficult
+  // to isolate the individual tests, and it doesn't really
+  // participate in the SPA logic.
+  global.Storage.prototype.setItem = jest.fn((key, value) => {})
 })
 
 /**

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]