gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: fix #8356: warn about no acco


From: gnunet
Subject: [taler-wallet-core] branch master updated: fix #8356: warn about no accounts for admin, prevent using the instance without bank account for non-admin
Date: Fri, 09 Feb 2024 16:17:52 +0100

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

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

The following commit(s) were added to refs/heads/master by this push:
     new 59fa89ab7 fix #8356: warn about no accounts for admin, prevent using 
the instance without bank account for non-admin
59fa89ab7 is described below

commit 59fa89ab7a824f4c372896aba09dc247f048adf0
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Feb 9 12:17:30 2024 -0300

    fix #8356: warn about no accounts for admin, prevent using the instance 
without bank account for non-admin
---
 .../merchant-backoffice-ui/src/Application.tsx     | 10 ++++-----
 .../merchant-backoffice-ui/src/InstanceRoutes.tsx  | 26 ++++++++++++++++++++++
 packages/merchant-backoffice-ui/src/hooks/bank.ts  | 18 +++++----------
 .../src/paths/instance/accounts/list/index.tsx     |  8 ++++++-
 4 files changed, 43 insertions(+), 19 deletions(-)

diff --git a/packages/merchant-backoffice-ui/src/Application.tsx 
b/packages/merchant-backoffice-ui/src/Application.tsx
index e78a6fc0b..57ecb5299 100644
--- a/packages/merchant-backoffice-ui/src/Application.tsx
+++ b/packages/merchant-backoffice-ui/src/Application.tsx
@@ -19,16 +19,14 @@
  * @author Sebastian Javier Marchano (sebasjm)
  */
 
-import { HttpStatusCode, LibtoolVersion, TranslatedString } from 
"@gnu-taler/taler-util";
+import { HttpStatusCode, LibtoolVersion } from "@gnu-taler/taler-util";
 import {
   ErrorType,
   TranslationProvider,
-  notifyError,
-  notifyException,
-  useTranslationContext,
+  useTranslationContext
 } from "@gnu-taler/web-util/browser";
 import { Fragment, VNode, h } from "preact";
-import { useEffect, useErrorBoundary, useMemo } from "preact/hooks";
+import { useMemo } from "preact/hooks";
 import { ApplicationReadyRoutes } from "./ApplicationReadyRoutes.js";
 import { Loading } from "./components/exception/loading.js";
 import {
@@ -140,7 +138,7 @@ function ApplicationStatusRoutes(): VNode {
     );
   }
 
-  const SUPPORTED_VERSION = "5:0:1"
+  const SUPPORTED_VERSION = "8:1:4"
   if (result.data && !LibtoolVersion.compare(
     SUPPORTED_VERSION,
     result.data.version,
diff --git a/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx 
b/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx
index a7fd3eb0f..1f3a2b1f8 100644
--- a/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx
+++ b/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx
@@ -76,6 +76,7 @@ import { LoginToken, MerchantBackend } from 
"./declaration.js";
 import { Settings } from "./paths/settings/index.js";
 import { dateFormatForSettings, useSettings } from "./hooks/useSettings.js";
 import { TranslatedString } from "@gnu-taler/taler-util";
+import { useInstanceBankAccounts } from "./hooks/bank.js";
 
 export enum InstancePaths {
   error = "/error",
@@ -170,6 +171,9 @@ export function InstanceRoutes({
     [id, token, admin],
   );
 
+  const instance = useInstanceBankAccounts();
+  const accounts = !instance.ok ? undefined : instance.data.accounts;
+
   function ServerErrorRedirectTo(to: InstancePaths | AdminPaths) {
     return function ServerErrorRedirectToImpl(
       error: HttpError<MerchantBackend.ErrorDetail>,
@@ -247,6 +251,28 @@ export function InstanceRoutes({
     updateDefaultToken(undefined)
   };
 
+  if (accounts !== undefined && !admin && accounts.length < 1) {
+    return <InstanceContextProvider value={value}>
+      <Menu
+        instance={id}
+        admin={admin}
+        onShowSettings={() => {
+          route(InstancePaths.interface)
+        }}
+        path={path}
+        onLogout={clearTokenAndGoToRoot}
+        setInstanceName={setInstanceName}
+        isPasswordOk={defaultToken !== undefined}
+      />
+      <NotificationCard notification={{
+        type: "INFO",
+        message: i18n.str`You need to associate a bank account to receive 
revenue.`,
+        description: i18n.str`Without this the merchant backend will refuse to 
create new orders.`
+      }} />
+      <BankAccountCreatePage onConfirm={() => { }} />
+    </InstanceContextProvider>
+  }
+
   return (
     <InstanceContextProvider value={value}>
       <Menu
diff --git a/packages/merchant-backoffice-ui/src/hooks/bank.ts 
b/packages/merchant-backoffice-ui/src/hooks/bank.ts
index 03b064646..5d5785442 100644
--- a/packages/merchant-backoffice-ui/src/hooks/bank.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/bank.ts
@@ -25,7 +25,7 @@ import { MAX_RESULT_SIZE, PAGE_SIZE } from 
"../utils/constants.js";
 import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
 
 // FIX default import https://github.com/microsoft/TypeScript/issues/49189
-import _useSWR, { SWRHook } from "swr";
+import _useSWR, { SWRHook, mutate } from "swr";
 const useSWR = _useSWR as unknown as SWRHook;
 
 // const MOCKED_ACCOUNTS: Record<string, 
MerchantBackend.BankAccounts.AccountAddDetails> = {
@@ -106,6 +106,10 @@ export interface BankAccountAPI {
 export interface InstanceBankAccountFilter {
 }
 
+export function revalidateInstanceBankAccounts() {
+  // mutate(key => key instanceof)
+  return mutate((key) => Array.isArray(key) && key[key.length - 1] === 
"/private/accounts", undefined, { revalidate: true });
+}
 export function useInstanceBankAccounts(
   args?: InstanceBankAccountFilter,
   updatePosition?: (id: string) => void,
@@ -113,17 +117,7 @@ export function useInstanceBankAccounts(
   MerchantBackend.BankAccounts.AccountsSummaryResponse,
   MerchantBackend.ErrorDetail
 > {
-  // return {
-  //   ok: true,
-  //   loadMore() { },
-  //   loadMorePrev() { },
-  //   data: {
-  //     accounts: Object.values(MOCKED_ACCOUNTS).map(e => ({
-  //       ...e,
-  //       active: true,
-  //     }))
-  //   }
-  // }
+
   const { fetcher } = useBackendInstanceRequest();
 
   const [pageAfter, setPageAfter] = useState(1);
diff --git 
a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx 
b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx
index 100241e22..04b6c51fd 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/list/index.tsx
@@ -74,7 +74,13 @@ export default function ListOtpDevices({
   return (
     <Fragment>
       <NotificationCard notification={notif} />
-
+      {result.data.accounts.length < 1 &&
+        <NotificationCard notification={{
+          type: "WARN",
+          message: i18n.str`You need to associate a bank account to receive 
revenue.`,
+          description: i18n.str`Without this the merchant backend will refuse 
to create new orders.`
+        }} />
+      }
       <ListPage
         devices={result.data.accounts}
         onLoadMoreBefore={

-- 
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]