gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated (369016c5a -> 1961f4744)


From: gnunet
Subject: [taler-wallet-core] branch master updated (369016c5a -> 1961f4744)
Date: Fri, 02 Jun 2023 19:26:44 +0200

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

sebasjm pushed a change to branch master
in repository wallet-core.

    from 369016c5a -fully remove
     new c41d7e043 removing peerPullCreditReadyCond
     new e3ec395b3 memory key should be string
     new 9853f5420 from spa to pwa
     new 1961f4744 remove deprecated notifications, implement isOffline

The 4 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:
 .../exchange-backoffice-ui/src/hooks/useOfficer.ts |   4 +-
 .../src/integrationtests/test-peer-to-peer-pull.ts |   6 -
 .../build-fast-with-linaria.mjs                    | 143 ---------------------
 packages/taler-wallet-webextension/dev.mjs         |   2 +-
 .../src/components/styled/index.tsx                |  11 ++
 .../src/cta/InvoicePay/state.ts                    |   6 +-
 .../src/cta/Payment/state.ts                       |   2 +-
 .../src/cta/Payment/test.ts                        |   4 +-
 .../src/cta/PaymentTemplate/state.ts               |   2 +-
 .../src/hooks/useIsOnline.ts                       |  14 ++
 .../taler-wallet-webextension/src/platform/api.ts  |   7 +
 .../src/platform/chrome.ts                         |  18 +++
 .../taler-wallet-webextension/src/platform/dev.ts  |  18 +++
 .../src/{spa => pwa}/index.html                    |  23 +++-
 .../src/pwa/manifest.json                          |  31 +++++
 .../src/{spa => pwa}/popup.html                    |   0
 .../src/{spa => pwa}/static/font/import.css        |   0
 .../{spa => pwa}/static/font/roboto-italic-400.ttf | Bin
 .../{spa => pwa}/static/font/roboto-normal-300.tff | Bin
 .../{spa => pwa}/static/font/roboto-normal-400.ttf | Bin
 .../{spa => pwa}/static/font/roboto-normal-500.ttf | Bin
 .../{spa => pwa}/static/font/roboto-normal-700.ttf | Bin
 .../src/{spa => pwa}/static/img/taler-logo-128.png | Bin
 .../{spa => pwa}/static/img/taler-logo-2022.svg    |   0
 .../src/{spa => pwa}/static/img/taler-logo-48.png  | Bin
 .../{ => src/pwa}/static/img/taler-logo-512.png    | Bin
 .../src/{spa => pwa}/stories.html                  |   0
 packages/taler-wallet-webextension/src/pwa/sw.js   |   6 +
 .../src/{spa => pwa}/tests.html                    |   0
 .../src/{spa => pwa}/wallet.html                   |   0
 .../src/spa/manifest.json                          |  78 -----------
 .../src/spa/service_worker.js                      |  11 --
 .../src/spa/static/img/taler-alert-128.png         | Bin 8944 -> 0 bytes
 .../src/spa/static/img/taler-alert-48.png          | Bin 2811 -> 0 bytes
 .../src/wallet/Application.tsx                     |   9 ++
 .../src/wallet/DeveloperPage.tsx                   |   6 +-
 packages/taler-wallet-webextension/test.mjs        |   2 +-
 packages/web-util/src/hooks/useMemoryStorage.ts    |  20 +--
 38 files changed, 161 insertions(+), 262 deletions(-)
 delete mode 100755 
packages/taler-wallet-webextension/build-fast-with-linaria.mjs
 create mode 100644 packages/taler-wallet-webextension/src/hooks/useIsOnline.ts
 rename packages/taler-wallet-webextension/src/{spa => pwa}/index.html (74%)
 create mode 100644 packages/taler-wallet-webextension/src/pwa/manifest.json
 rename packages/taler-wallet-webextension/src/{spa => pwa}/popup.html (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/font/import.css (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/font/roboto-italic-400.ttf (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/font/roboto-normal-300.tff (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/font/roboto-normal-400.ttf (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/font/roboto-normal-500.ttf (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/font/roboto-normal-700.ttf (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/img/taler-logo-128.png (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/img/taler-logo-2022.svg (100%)
 rename packages/taler-wallet-webextension/src/{spa => 
pwa}/static/img/taler-logo-48.png (100%)
 copy packages/taler-wallet-webextension/{ => 
src/pwa}/static/img/taler-logo-512.png (100%)
 rename packages/taler-wallet-webextension/src/{spa => pwa}/stories.html (100%)
 create mode 100644 packages/taler-wallet-webextension/src/pwa/sw.js
 rename packages/taler-wallet-webextension/src/{spa => pwa}/tests.html (100%)
 rename packages/taler-wallet-webextension/src/{spa => pwa}/wallet.html (100%)
 delete mode 100644 packages/taler-wallet-webextension/src/spa/manifest.json
 delete mode 100644 packages/taler-wallet-webextension/src/spa/service_worker.js
 delete mode 100644 
packages/taler-wallet-webextension/src/spa/static/img/taler-alert-128.png
 delete mode 100644 
packages/taler-wallet-webextension/src/spa/static/img/taler-alert-48.png

diff --git a/packages/exchange-backoffice-ui/src/hooks/useOfficer.ts 
b/packages/exchange-backoffice-ui/src/hooks/useOfficer.ts
index 2ed375846..4ec43569b 100644
--- a/packages/exchange-backoffice-ui/src/hooks/useOfficer.ts
+++ b/packages/exchange-backoffice-ui/src/hooks/useOfficer.ts
@@ -49,10 +49,10 @@ interface OfficerReady {
 }
 
 const OFFICER_KEY = buildStorageKey("officer", codecForOfficer());
-const ACCOUNT_KEY = buildStorageKey<Account>("account");
+const ACCOUNT_KEY = "account";
 
 export function useOfficer(): OfficerState {
-  const accountStorage = useMemoryStorage(ACCOUNT_KEY);
+  const accountStorage = useMemoryStorage<Account>(ACCOUNT_KEY);
   const officerStorage = useLocalStorage(OFFICER_KEY);
 
   const officer = officerStorage.value;
diff --git 
a/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts 
b/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts
index 557954f66..1e33afa34 100644
--- a/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts
+++ b/packages/taler-harness/src/integrationtests/test-peer-to-peer-pull.ts
@@ -82,10 +82,6 @@ export async function runPeerToPeerPullTest(t: 
GlobalTestState) {
     ),
   );
 
-  const peerPullCreditReadyCond = wallet2.waitForNotificationCond(
-    (x) => x.type === NotificationType.PeerPullCreditReady,
-  );
-
   const resp = await wallet1.client.call(
     WalletApiOperation.InitiatePeerPullCredit,
     {
@@ -98,8 +94,6 @@ export async function runPeerToPeerPullTest(t: 
GlobalTestState) {
     },
   );
 
-  await peerPullCreditReadyCond;
-
   const checkResp = await wallet2.client.call(
     WalletApiOperation.PreparePeerPullDebit,
     {
diff --git a/packages/taler-wallet-webextension/build-fast-with-linaria.mjs 
b/packages/taler-wallet-webextension/build-fast-with-linaria.mjs
deleted file mode 100755
index 9f31fa49c..000000000
--- a/packages/taler-wallet-webextension/build-fast-with-linaria.mjs
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env node
-/*
- This file is part of GNU Taler
- (C) 2022 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/>
- */
-
-import linaria from "@linaria/esbuild";
-import esbuild from "esbuild";
-import path from "path";
-import fs from "fs";
-
-function getFilesInDirectory(startPath, regex) {
-  if (!fs.existsSync(startPath)) {
-    return;
-  }
-  const files = fs.readdirSync(startPath);
-  const result = files
-    .flatMap((file) => {
-      const filename = path.join(startPath, file);
-
-      const stat = fs.lstatSync(filename);
-      if (stat.isDirectory()) {
-        return getFilesInDirectory(filename, regex);
-      } else if (regex.test(filename)) {
-        return filename;
-      }
-    })
-    .filter((x) => !!x);
-
-  return result;
-}
-
-// eslint-disable-next-line no-undef
-const BASE = process.cwd();
-const allTestFiles = getFilesInDirectory(path.join(BASE, "src"), /.test.ts$/);
-
-const preact = path.join(
-  BASE,
-  "node_modules",
-  "preact",
-  "compat",
-  "dist",
-  "compat.module.js",
-);
-const preactCompatPlugin = {
-  name: "preact-compat",
-  setup(build) {
-    build.onResolve({ filter: /^(react-dom|react)$/ }, (args) => ({
-      path: preact,
-    }));
-  },
-};
-
-const entryPoints = [
-  "src/popupEntryPoint.tsx",
-  "src/popupEntryPoint.dev.tsx",
-  "src/walletEntryPoint.tsx",
-  "src/walletEntryPoint.dev.tsx",
-  "src/background.ts",
-  "src/stories.tsx",
-  "src/background.dev.ts",
-  "src/taler-wallet-interaction-loader.ts",
-  "src/taler-wallet-interaction-support.ts",
-  "src/browserWorkerEntry.ts",
-];
-
-let GIT_ROOT = BASE;
-while (!fs.existsSync(path.join(GIT_ROOT, ".git")) && GIT_ROOT !== "/") {
-  GIT_ROOT = path.join(GIT_ROOT, "../");
-}
-if (GIT_ROOT === "/") {
-  // eslint-disable-next-line no-undef
-  console.log("not found");
-  // eslint-disable-next-line no-undef
-  process.exit(1);
-}
-const GIT_HASH = GIT_ROOT === "/" ? undefined : git_hash();
-
-let _package = JSON.parse(fs.readFileSync(path.join(BASE, "package.json")));
-
-function git_hash() {
-  const rev = fs
-    .readFileSync(path.join(GIT_ROOT, ".git", "HEAD"))
-    .toString()
-    .trim()
-    .split(/.*[: ]/)
-    .slice(-1)[0];
-  if (rev.indexOf("/") === -1) {
-    return rev;
-  } else {
-    return fs.readFileSync(path.join(GIT_ROOT, ".git", rev)).toString().trim();
-  }
-}
-
-export const buildConfig = {
-  entryPoints: [...entryPoints, ...allTestFiles],
-  bundle: true,
-  outdir: "dist",
-  minify: false,
-  loader: {
-    ".svg": "text",
-    ".png": "dataurl",
-    ".jpeg": "dataurl",
-  },
-  target: ["es6"],
-  format: "iife",
-  platform: "browser",
-  sourcemap: true,
-  jsxFactory: "h",
-  jsxFragment: "Fragment",
-  define: {
-    __VERSION__: `"${_package.version}"`,
-    __GIT_HASH__: `"${GIT_HASH}"`,
-  },
-  plugins: [
-    preactCompatPlugin,
-    linaria.default({
-      babelOptions: {
-        babelrc: false,
-        configFile: "./babel.config-linaria.json",
-      },
-      sourceMap: true,
-    }),
-  ],
-};
-
-await esbuild.build(buildConfig).catch((e) => {
-  // eslint-disable-next-line no-undef
-  console.log(e);
-  // eslint-disable-next-line no-undef
-  process.exit(1);
-});
diff --git a/packages/taler-wallet-webextension/dev.mjs 
b/packages/taler-wallet-webextension/dev.mjs
index 5577b1f0e..dc597c248 100755
--- a/packages/taler-wallet-webextension/dev.mjs
+++ b/packages/taler-wallet-webextension/dev.mjs
@@ -19,7 +19,7 @@ import { getFilesInDirectory, initializeDev } from 
"@gnu-taler/web-util/build";
 import { serve } from "@gnu-taler/web-util/node";
 import linaria from "@linaria/esbuild";
 
-const allStaticFiles = getFilesInDirectory("src/spa");
+const allStaticFiles = getFilesInDirectory("src/pwa");
 
 const devEntryPoints = [
   "src/popupEntryPoint.dev.tsx",
diff --git a/packages/taler-wallet-webextension/src/components/styled/index.tsx 
b/packages/taler-wallet-webextension/src/components/styled/index.tsx
index 92b8d2667..47b3c8e08 100644
--- a/packages/taler-wallet-webextension/src/components/styled/index.tsx
+++ b/packages/taler-wallet-webextension/src/components/styled/index.tsx
@@ -799,6 +799,17 @@ export const ErrorBox = styled.div`
   }
 `;
 
+export const RedBanner = styled.div`
+  width: 80%;
+  padding: 4px;
+  text-align: center;
+  background: red;
+  border: 1px solid #df3a3a;
+  border-radius: 4px;
+  font-weight: bold;
+  margin: 4px;
+`;
+
 export const InfoBox = styled(ErrorBox)`
   color: black;
   background-color: #d1e7dd;
diff --git a/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts 
b/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts
index 10f1ee849..c6512cd12 100644
--- a/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts
@@ -49,7 +49,7 @@ export function useComponentState({
 
   useEffect(() =>
     api.listener.onUpdateNotification(
-      [NotificationType.CoinWithdrawn],
+      [NotificationType.TransactionStateTransition],
       hook?.retry,
     ),
   );
@@ -123,7 +123,9 @@ export function useComponentState({
     raw,
     goToWalletManualWithdraw,
     summary,
-    expiration: expiration ? AbsoluteTime.fromProtocolTimestamp(expiration) : 
undefined,
+    expiration: expiration
+      ? AbsoluteTime.fromProtocolTimestamp(expiration)
+      : undefined,
   };
 
   if (!foundBalance) {
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/state.ts 
b/packages/taler-wallet-webextension/src/cta/Payment/state.ts
index 586ef377c..4468438d1 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/state.ts
@@ -54,7 +54,7 @@ export function useComponentState({
   useEffect(
     () =>
       api.listener.onUpdateNotification(
-        [NotificationType.CoinWithdrawn],
+        [NotificationType.TransactionStateTransition],
         hook?.retry,
       ),
     [hook],
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/test.ts 
b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
index 655f21eb9..e2935fc4e 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
@@ -541,7 +541,9 @@ describe("Payment CTA states", () => {
           // expect(r.totalFees).deep.equal(Amounts.parseOrThrow("USD:1"));
           expect(state.payHandler.onClick).not.undefined;
 
-          handler.notifyEventFromWallet(NotificationType.CoinWithdrawn);
+          handler.notifyEventFromWallet(
+            NotificationType.TransactionStateTransition,
+          );
         },
         (state) => {
           if (state.status !== "ready") expect.fail();
diff --git 
a/packages/taler-wallet-webextension/src/cta/PaymentTemplate/state.ts 
b/packages/taler-wallet-webextension/src/cta/PaymentTemplate/state.ts
index a33361be8..4a0b2911a 100644
--- a/packages/taler-wallet-webextension/src/cta/PaymentTemplate/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/PaymentTemplate/state.ts
@@ -128,7 +128,7 @@ export function useComponentState({
   }
   const errors = undefinedIfEmpty({
     amount: amount && Amounts.isZero(amount) ? i18n.str`required` : undefined,
-    summary: !summary ? i18n.str`required` : undefined,
+    summary: summary !== undefined && !summary ? i18n.str`required` : 
undefined,
   });
   return {
     status: "fill-template",
diff --git a/packages/taler-wallet-webextension/src/hooks/useIsOnline.ts 
b/packages/taler-wallet-webextension/src/hooks/useIsOnline.ts
new file mode 100644
index 000000000..8d26bf3b6
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/hooks/useIsOnline.ts
@@ -0,0 +1,14 @@
+import { codecForBoolean } from "@gnu-taler/taler-util";
+import { buildStorageKey, useMemoryStorage } from 
"@gnu-taler/web-util/browser";
+import { platform } from "../platform/foreground.js";
+import { useEffect } from "preact/hooks";
+
+export function useIsOnline(): boolean {
+  const { value, update } = useMemoryStorage("online", true);
+  useEffect(() => {
+    return platform.listenNetworkConnectionState((state) => {
+      update(state === "on");
+    });
+  });
+  return value;
+}
diff --git a/packages/taler-wallet-webextension/src/platform/api.ts 
b/packages/taler-wallet-webextension/src/platform/api.ts
index f985cc4f8..e3e97264d 100644
--- a/packages/taler-wallet-webextension/src/platform/api.ts
+++ b/packages/taler-wallet-webextension/src/platform/api.ts
@@ -286,4 +286,11 @@ export interface ForegroundPlatformAPI {
   listenToWalletBackground(
     listener: (message: MessageFromBackend) => void,
   ): () => void;
+
+  /**
+   * Notify when platform went offline
+   */
+  listenNetworkConnectionState(
+    listener: (state: "on" | "off") => void,
+  ): () => void;
 }
diff --git a/packages/taler-wallet-webextension/src/platform/chrome.ts 
b/packages/taler-wallet-webextension/src/platform/chrome.ts
index 0f6b5fb0d..34057a310 100644
--- a/packages/taler-wallet-webextension/src/platform/chrome.ts
+++ b/packages/taler-wallet-webextension/src/platform/chrome.ts
@@ -58,6 +58,7 @@ const api: BackgroundPlatformAPI & ForegroundPlatformAPI = {
   sendMessageToBackground,
   useServiceWorkerAsBackgroundProcess,
   keepAlive,
+  listenNetworkConnectionState,
 };
 
 export default api;
@@ -762,3 +763,20 @@ async function findTalerUriInActiveTab(): Promise<string | 
undefined> {
   if (!tab || tab.id === undefined) return;
   return findTalerUriInTab(tab.id);
 }
+
+function listenNetworkConnectionState(
+  notify: (state: "on" | "off") => void,
+): () => void {
+  function notifyOffline() {
+    notify("off");
+  }
+  function notifyOnline() {
+    notify("on");
+  }
+  window.addEventListener("offline", notifyOffline);
+  window.addEventListener("online", notifyOnline);
+  return () => {
+    window.removeEventListener("offline", notifyOffline);
+    window.removeEventListener("online", notifyOnline);
+  };
+}
diff --git a/packages/taler-wallet-webextension/src/platform/dev.ts 
b/packages/taler-wallet-webextension/src/platform/dev.ts
index 005421876..976ac05f5 100644
--- a/packages/taler-wallet-webextension/src/platform/dev.ts
+++ b/packages/taler-wallet-webextension/src/platform/dev.ts
@@ -34,6 +34,7 @@ const api: BackgroundPlatformAPI & ForegroundPlatformAPI = {
   keepAlive: (cb: VoidFunction) => cb(),
   findTalerUriInActiveTab: async () => undefined,
   findTalerUriInClipboard: async () => undefined,
+  listenNetworkConnectionState,
   getPermissionsApi: () => ({
     addPermissionsListener: () => undefined,
     containsHostPermissions: async () => true,
@@ -197,3 +198,20 @@ interface IframeMessageCommand {
 }
 
 export default api;
+
+function listenNetworkConnectionState(
+  notify: (state: "on" | "off") => void,
+): () => void {
+  function notifyOffline() {
+    notify("off");
+  }
+  function notifyOnline() {
+    notify("on");
+  }
+  window.addEventListener("offline", notifyOffline);
+  window.addEventListener("online", notifyOnline);
+  return () => {
+    window.removeEventListener("offline", notifyOffline);
+    window.removeEventListener("online", notifyOnline);
+  };
+}
diff --git a/packages/taler-wallet-webextension/src/spa/index.html 
b/packages/taler-wallet-webextension/src/pwa/index.html
similarity index 74%
rename from packages/taler-wallet-webextension/src/spa/index.html
rename to packages/taler-wallet-webextension/src/pwa/index.html
index 0d2cf0e0b..abc6f97ba 100644
--- a/packages/taler-wallet-webextension/src/spa/index.html
+++ b/packages/taler-wallet-webextension/src/pwa/index.html
@@ -85,6 +85,25 @@ justify-content: center;
     <iframe src="tests.html" name="wallet" width="800" height="100%"> 
</iframe> -->
     <!-- <hr />
     <iframe src="stories.html" name="wallet" width="800" height="100%"> -->
-    <script type="module" src="background.dev.js"></script>
-  </body>
+      <script type="module" src="background.dev.js"></script>
+      <script type="module">
+          if ("serviceWorker" in navigator) {
+            try {
+              const registration = await 
navigator.serviceWorker.register("sw.js", {
+                scope: "/app/",
+              });
+              if (registration.installing) {
+                console.log("Service worker installing");
+              } else if (registration.waiting) {
+                console.log("Service worker installed");
+              } else if (registration.active) {
+                console.log("Service worker active");
+              }
+            } catch (error) {
+              console.error(`Registration failed with ${error}`);
+            }
+          }
+
+      </script>
+    </body>
 </html>
diff --git a/packages/taler-wallet-webextension/src/pwa/manifest.json 
b/packages/taler-wallet-webextension/src/pwa/manifest.json
new file mode 100644
index 000000000..6823483bf
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/pwa/manifest.json
@@ -0,0 +1,31 @@
+{
+  "name": "GNU Taler Wallet",
+  "description": "Privacy preserving and transparent payments",
+  "author": "GNU Taler Developers",
+  "version": "0.9.3.13",
+  "id": "gnu-taler-wallet-web-spa-development",
+  "version_name": "0.9.3-dev.13",
+  "display": "minimal-ui",
+  "start_url": "./",
+  "manifest_version": 3,
+  "minimum_chrome_version": "88",
+  "icons": [{
+    "src": "./static/img/taler-logo-48.png",
+    "type": "image/png",
+    "sizes": "48x48"
+  },{
+    "src": "./static/img/taler-logo-128.png",
+    "type": "image/png",
+    "sizes": "128x128"
+  },{
+    "src": "./static/img/taler-logo-512.png",
+    "type": "image/png",
+    "sizes": "512x512"
+  }],
+  "protocol_handlers": [
+    {
+      "protocol": "web+taler",
+      "url": "./wallet.html?type=%s"
+    }
+  ]
+}
diff --git a/packages/taler-wallet-webextension/src/spa/popup.html 
b/packages/taler-wallet-webextension/src/pwa/popup.html
similarity index 100%
rename from packages/taler-wallet-webextension/src/spa/popup.html
rename to packages/taler-wallet-webextension/src/pwa/popup.html
diff --git a/packages/taler-wallet-webextension/src/spa/static/font/import.css 
b/packages/taler-wallet-webextension/src/pwa/static/font/import.css
similarity index 100%
rename from packages/taler-wallet-webextension/src/spa/static/font/import.css
rename to packages/taler-wallet-webextension/src/pwa/static/font/import.css
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/font/roboto-italic-400.ttf 
b/packages/taler-wallet-webextension/src/pwa/static/font/roboto-italic-400.ttf
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/font/roboto-italic-400.ttf
rename to 
packages/taler-wallet-webextension/src/pwa/static/font/roboto-italic-400.ttf
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-300.tff 
b/packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-300.tff
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-300.tff
rename to 
packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-300.tff
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-400.ttf 
b/packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-400.ttf
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-400.ttf
rename to 
packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-400.ttf
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-500.ttf 
b/packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-500.ttf
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-500.ttf
rename to 
packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-500.ttf
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-700.ttf 
b/packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-700.ttf
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/font/roboto-normal-700.ttf
rename to 
packages/taler-wallet-webextension/src/pwa/static/font/roboto-normal-700.ttf
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/img/taler-logo-128.png 
b/packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-128.png
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/img/taler-logo-128.png
rename to 
packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-128.png
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/img/taler-logo-2022.svg 
b/packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-2022.svg
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/img/taler-logo-2022.svg
rename to 
packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-2022.svg
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/img/taler-logo-48.png 
b/packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-48.png
similarity index 100%
rename from 
packages/taler-wallet-webextension/src/spa/static/img/taler-logo-48.png
rename to 
packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-48.png
diff --git a/packages/taler-wallet-webextension/static/img/taler-logo-512.png 
b/packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-512.png
similarity index 100%
copy from packages/taler-wallet-webextension/static/img/taler-logo-512.png
copy to packages/taler-wallet-webextension/src/pwa/static/img/taler-logo-512.png
diff --git a/packages/taler-wallet-webextension/src/spa/stories.html 
b/packages/taler-wallet-webextension/src/pwa/stories.html
similarity index 100%
rename from packages/taler-wallet-webextension/src/spa/stories.html
rename to packages/taler-wallet-webextension/src/pwa/stories.html
diff --git a/packages/taler-wallet-webextension/src/pwa/sw.js 
b/packages/taler-wallet-webextension/src/pwa/sw.js
new file mode 100644
index 000000000..2b2219578
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/pwa/sw.js
@@ -0,0 +1,6 @@
+console.log("sw: Service worker installed");
+
+self.addEventListener("fetch", (event) => {
+  // console.log("fetch event", event);
+  // event.respondWith(/* custom content goes here */);
+});
diff --git a/packages/taler-wallet-webextension/src/spa/tests.html 
b/packages/taler-wallet-webextension/src/pwa/tests.html
similarity index 100%
rename from packages/taler-wallet-webextension/src/spa/tests.html
rename to packages/taler-wallet-webextension/src/pwa/tests.html
diff --git a/packages/taler-wallet-webextension/src/spa/wallet.html 
b/packages/taler-wallet-webextension/src/pwa/wallet.html
similarity index 100%
rename from packages/taler-wallet-webextension/src/spa/wallet.html
rename to packages/taler-wallet-webextension/src/pwa/wallet.html
diff --git a/packages/taler-wallet-webextension/src/spa/manifest.json 
b/packages/taler-wallet-webextension/src/spa/manifest.json
deleted file mode 100644
index 49b7f05e2..000000000
--- a/packages/taler-wallet-webextension/src/spa/manifest.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "name": "GNU Taler Wallet",
-  "description": "Privacy preserving and transparent payments",
-  "author": "GNU Taler Developers",
-  "version": "0.9.3.13",
-  "id": "gnu-taler-wallet-web-spa-development",
-  "version_name": "0.9.3-dev.13",
-  "icons": [{
-    "src": "static/img/taler-logo-48.png",
-    "sizes": "48x48"
-  },{
-    "src": "static/img/taler-logo-128.png",
-    "sizes": "128x128"
-  }],
-  "display": "minimal-ui",
-  "start_url": "http://localhost:8080/app/index.html";,
-  "manifest_version": 3,
-  "minimum_chrome_version": "88",
-  "permissions": [
-    "unlimitedStorage",
-    "storage",
-    "activeTab",
-    "scripting",
-    "declarativeContent",
-    "alarms"
-  ],
-  "commands": {
-    "_execute_action": {
-      "suggested_key": {
-        "default": "Alt+W"
-      }
-    }
-  },
-  "content_scripts": [
-    {
-      "id": "taler-wallet-interaction",
-      "matches": [
-        "file://*/*",
-        "http://*/*";,
-        "https://*/*";
-      ],
-      "js": [
-        "dist/taler-wallet-interaction-loader.js"
-      ]
-    }
-  ],
-  "web_accessible_resources": [
-    {
-      "resources": [
-        "static/wallet.html",
-        "dist/taler-wallet-interaction-loader.js.map",
-        "dist/taler-wallet-interaction-loader.js",
-        "dist/taler-wallet-interaction-support.js.map",
-        "dist/taler-wallet-interaction-support.js"
-      ],
-      "matches": [
-        "https://*/*";,
-        "http://*/*";,
-        "file://*/*"
-      ]
-    }
-  ],
-  "action": {
-    "default_icon": {
-      "16": "static/img/taler-logo-16.png",
-      "19": "static/img/taler-logo-19.png",
-      "32": "static/img/taler-logo-32.png",
-      "38": "static/img/taler-logo-38.png",
-      "48": "static/img/taler-logo-48.png",
-      "64": "static/img/taler-logo-64.png",
-      "128": "static/img/taler-logo-128.png",
-      "256": "static/img/taler-logo-256.png",
-      "512": "static/img/taler-logo-512.png"
-    },
-    "default_title": "GNU Taler Wallet",
-    "default_popup": "static/popup.html"
-  }
-}
diff --git a/packages/taler-wallet-webextension/src/spa/service_worker.js 
b/packages/taler-wallet-webextension/src/spa/service_worker.js
deleted file mode 100644
index 38064e245..000000000
--- a/packages/taler-wallet-webextension/src/spa/service_worker.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/* eslint-disable no-undef */
-/**
- * Wrapper to catch any initialization error and show it in the logs
- */
-try {
-  importScripts("dist/background.js");
-  self.skipWaiting();
-  console.log("SERVICE WORKER init: ok");
-} catch (e) {
-  console.error("SERVICE WORKER failed:", e);
-}
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/img/taler-alert-128.png 
b/packages/taler-wallet-webextension/src/spa/static/img/taler-alert-128.png
deleted file mode 100644
index b49347936..000000000
Binary files 
a/packages/taler-wallet-webextension/src/spa/static/img/taler-alert-128.png and 
/dev/null differ
diff --git 
a/packages/taler-wallet-webextension/src/spa/static/img/taler-alert-48.png 
b/packages/taler-wallet-webextension/src/spa/static/img/taler-alert-48.png
deleted file mode 100644
index 67516b582..000000000
Binary files 
a/packages/taler-wallet-webextension/src/spa/static/img/taler-alert-48.png and 
/dev/null differ
diff --git a/packages/taler-wallet-webextension/src/wallet/Application.tsx 
b/packages/taler-wallet-webextension/src/wallet/Application.tsx
index 31a71e249..13afccb6c 100644
--- a/packages/taler-wallet-webextension/src/wallet/Application.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Application.tsx
@@ -44,6 +44,7 @@ import { LogoHeader } from "../components/LogoHeader.js";
 import PendingTransactions from "../components/PendingTransactions.js";
 import {
   LinkPrimary,
+  RedBanner,
   SubTitle,
   WalletAction,
   WalletBox,
@@ -80,6 +81,7 @@ import { QrReaderPage } from "./QrReader.js";
 import { SettingsPage } from "./Settings.js";
 import { TransactionPage } from "./Transaction.js";
 import { WelcomePage } from "./Welcome.js";
+import { useIsOnline } from "../hooks/useIsOnline.js";
 
 export function Application(): VNode {
   const { i18n } = useTranslationContext();
@@ -585,8 +587,15 @@ function WalletTemplate({
   children: ComponentChildren;
   goToTransaction?: (id: string) => Promise<void>;
 }): VNode {
+  const online = useIsOnline();
+  const { i18n } = useTranslationContext();
   return (
     <Fragment>
+      {!online && (
+        <div style={{ display: "flex", justifyContent: "center" }}>
+          <RedBanner>{i18n.str`Network is offline`}</RedBanner>
+        </div>
+      )}
       <LogoHeader />
       <WalletNavBar path={path} />
       {goToTransaction ? (
diff --git a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx 
b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
index 388a331e6..c5e5c3c07 100644
--- a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
@@ -47,8 +47,6 @@ export function DeveloperPage(): VNode {
   const [status, timedOut] = useDiagnostics();
 
   const listenAllEvents = Array.from<NotificationType>({ length: 1 });
-  //FIXME: waiting for retry notification make a always increasing loop of 
notifications
-  listenAllEvents.includes = (e) => e !== "waiting-for-retry"; // includes 
every event
 
   const api = useBackendContext();
 
@@ -405,7 +403,9 @@ export function View({
           <i18n.Translate>
             Database exported at
             <Time
-              
timestamp={AbsoluteTime.fromMilliseconds(downloadedDatabase.time.getTime())}
+              timestamp={AbsoluteTime.fromMilliseconds(
+                downloadedDatabase.time.getTime(),
+              )}
               format="yyyy/MM/dd HH:mm:ss"
             />
             <a
diff --git a/packages/taler-wallet-webextension/test.mjs 
b/packages/taler-wallet-webextension/test.mjs
index d0bf7dd48..2fd007c2a 100755
--- a/packages/taler-wallet-webextension/test.mjs
+++ b/packages/taler-wallet-webextension/test.mjs
@@ -22,7 +22,7 @@ const allTestFiles = getFilesInDirectory("src", 
/.test.tsx?$/);
 await build({
   type: "test",
   source: {
-    js: allTestFiles,
+    js: allTestFiles.files,
     assets: [],
   },
   destination: "./dist/test",
diff --git a/packages/web-util/src/hooks/useMemoryStorage.ts 
b/packages/web-util/src/hooks/useMemoryStorage.ts
index d8be24c1e..1dd263797 100644
--- a/packages/web-util/src/hooks/useMemoryStorage.ts
+++ b/packages/web-util/src/hooks/useMemoryStorage.ts
@@ -27,37 +27,37 @@ const storage: ObservableMap<string, any> = 
memoryMap<any>();
 
 //with initial value
 export function useMemoryStorage<Type = string>(
-  key: StorageKey<Type>,
+  key: string,
   defaultValue: Type,
 ): Required<StorageState<Type>>;
 //with initial value
 export function useMemoryStorage<Type = string>(
-  key: StorageKey<Type>,
+  key: string,
 ): StorageState<Type>;
 // impl
 export function useMemoryStorage<Type = string>(
-  key: StorageKey<Type>,
+  key: string,
   defaultValue?: Type,
 ): StorageState<Type> {
   const [storedValue, setStoredValue] = useState<Type | undefined>(
     (): Type | undefined => {
-      const prev = storage.get(key.id);
-      return prev;
+      const prev = storage.get(key);
+      return prev === undefined ? defaultValue : prev;
     },
   );
 
   useEffect(() => {
-    return storage.onUpdate(key.id, () => {
-      const newValue = storage.get(key.id);
-      setStoredValue(newValue);
+    return storage.onUpdate(key, () => {
+      const newValue = storage.get(key);
+      setStoredValue(newValue === undefined ? defaultValue : newValue);
     });
   }, []);
 
   const setValue = (value?: Type): void => {
     if (value === undefined) {
-      storage.delete(key.id);
+      storage.delete(key);
     } else {
-      storage.set(key.id, value);
+      storage.set(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]