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 #8839


From: gnunet
Subject: [taler-wallet-core] branch master updated: fix #8839
Date: Fri, 02 Aug 2024 15:37:12 +0200

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 8031e4bb5 fix #8839
8031e4bb5 is described below

commit 8031e4bb5dc09fa479cf4df86b815e4b86ec587b
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Aug 2 10:37:05 2024 -0300

    fix #8839
---
 .../src/components/form/InputArray.tsx             |  2 +-
 .../src/components/product/ProductForm.tsx         | 28 +++++++++++++++------
 .../instance/categories/update/UpdatePage.tsx      | 29 +++++++++++++---------
 .../src/paths/instance/categories/update/index.tsx | 21 ----------------
 .../src/paths/instance/products/update/index.tsx   |  3 ++-
 5 files changed, 41 insertions(+), 42 deletions(-)

diff --git a/packages/merchant-backoffice-ui/src/components/form/InputArray.tsx 
b/packages/merchant-backoffice-ui/src/components/form/InputArray.tsx
index 3d6b92295..6dbcdc523 100644
--- a/packages/merchant-backoffice-ui/src/components/form/InputArray.tsx
+++ b/packages/merchant-backoffice-ui/src/components/form/InputArray.tsx
@@ -136,7 +136,7 @@ export function InputArray<T>({
                 class="tag is-medium is-danger is-delete mb-0"
                 onClick={() => {
                   onChange(array.filter((f) => f !== v) as T[keyof T]);
-                  setCurrentValue(toStr(v));
+                  setCurrentValue(getSuggestion ? (v as any).description : 
toStr(v));
                 }}
               />
             </div>
diff --git 
a/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx 
b/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx
index b618ecda4..c8a7fe911 100644
--- a/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx
+++ b/packages/merchant-backoffice-ui/src/components/product/ProductForm.tsx
@@ -19,8 +19,13 @@
  * @author Sebastian Javier Marchano (sebasjm)
  */
 
-import { AmountString, Amounts, TalerMerchantApi } from 
"@gnu-taler/taler-util";
-import { useTranslationContext } from "@gnu-taler/web-util/browser";
+import {
+  AmountString,
+  Amounts,
+  TalerError,
+  TalerMerchantApi,
+} from "@gnu-taler/taler-util";
+import { Loading, useTranslationContext } from "@gnu-taler/web-util/browser";
 import { h } from "preact";
 import { useCallback, useEffect, useState } from "preact/hooks";
 import { useSessionContext } from "../../context/session.js";
@@ -34,6 +39,8 @@ import { InputStock, Stock } from "../form/InputStock.js";
 import { InputTaxes } from "../form/InputTaxes.js";
 import { InputWithAddon } from "../form/InputWithAddon.js";
 import { InputArray } from "../form/InputArray.js";
+import { useInstanceCategories } from "../../hooks/category.js";
+import { ErrorLoadingMerchant } from "../ErrorLoadingMerchant.js";
 
 type Entity = TalerMerchantApi.ProductDetail & {
   product_id: string;
@@ -48,7 +55,15 @@ interface Props {
 export function ProductForm({ onSubscribe, initial, alreadyExist }: Props) {
   const { i18n } = useTranslationContext();
   const { state, lib } = useSessionContext();
-
+  // FIXME: if the category list is big the will bring a lot of info
+  // we could find a lazy way to add up on searchs
+  const categoriesResult = useInstanceCategories();
+  if (!categoriesResult) return <Loading />;
+  if (categoriesResult instanceof TalerError) {
+    return <ErrorLoadingMerchant error={categoriesResult} />;
+  }
+  const categories =
+    categoriesResult.type === "fail" ? [] : categoriesResult.body.categories;
   const [value, valueHandler] = useState<
     Partial<
       Entity & {
@@ -64,6 +79,7 @@ export function ProductForm({ onSubscribe, initial, 
alreadyExist }: Props) {
     next_restock: { t_s: "never" },
     price: ":0" as AmountString,
     ...initial,
+    minimum_age: !initial?.minimum_age ? undefined : initial?.minimum_age,
     stock:
       !initial || initial.total_stock === -1
         ? undefined
@@ -133,7 +149,7 @@ export function ProductForm({ onSubscribe, initial, 
alreadyExist }: Props) {
       value.address = stock.address;
     }
     delete value.stock;
-    value.categories = value.categories_map?.map((d) => parseInt(d.id, 10))!;
+    value.categories = value.categories_map?.map((d) => parseInt(d.id, 10));
     delete value.categories_map;
 
     if (typeof value.minimum_age !== "undefined" && value.minimum_age < 1) {
@@ -208,9 +224,7 @@ export function ProductForm({ onSubscribe, initial, 
alreadyExist }: Props) {
           name="categories_map"
           label={i18n.str`Categories`}
           getSuggestion={async () => {
-            const resp = await lib.instance.listCategories(state.token);
-            if (resp.type === "fail") return [];
-            return resp.body.categories.map((cat) => {
+            return categories.map((cat) => {
               return { description: cat.name, id: String(cat.category_id) };
             });
           }}
diff --git 
a/packages/merchant-backoffice-ui/src/paths/instance/categories/update/UpdatePage.tsx
 
b/packages/merchant-backoffice-ui/src/paths/instance/categories/update/UpdatePage.tsx
index 15bca0df6..069892766 100644
--- 
a/packages/merchant-backoffice-ui/src/paths/instance/categories/update/UpdatePage.tsx
+++ 
b/packages/merchant-backoffice-ui/src/paths/instance/categories/update/UpdatePage.tsx
@@ -19,17 +19,19 @@
  * @author Sebastian Javier Marchano (sebasjm)
  */
 
-import { TalerMerchantApi } from "@gnu-taler/taler-util";
+import { TalerError, TalerMerchantApi } from "@gnu-taler/taler-util";
 import { useTranslationContext } from "@gnu-taler/web-util/browser";
-import { h, VNode } from "preact";
+import { VNode, h } from "preact";
 import { useEffect, useState } from "preact/hooks";
 import { AsyncButton } from "../../../../components/exception/AsyncButton.js";
 import { FormProvider } from "../../../../components/form/FormProvider.js";
 import { Input } from "../../../../components/form/Input.js";
-import { WithId } from "../../../../declaration.js";
 import { InputArray } from "../../../../components/form/InputArray.js";
 import { useSessionContext } from "../../../../context/session.js";
-import { ProductWithId } from "../../../../hooks/product.js";
+import { WithId } from "../../../../declaration.js";
+import {
+  useInstanceProducts
+} from "../../../../hooks/product.js";
 
 type Entity = TalerMerchantApi.CategoryProductList & WithId;
 
@@ -37,20 +39,23 @@ interface Props {
   onUpdate: (d: Entity) => Promise<void>;
   onBack?: () => void;
   category: Entity;
-  instanceInventory: ProductWithId[];
 }
-export function UpdatePage({
-  category,
-  instanceInventory,
-  onUpdate,
-  onBack,
-}: Props): VNode {
+export function UpdatePage({ category, onUpdate, onBack }: Props): VNode {
   const { i18n } = useTranslationContext();
   const {
     state: { token },
     lib,
   } = useSessionContext();
+  // FIXME: if the product list is big the will bring a lot of info
+  const inventoryResult = useInstanceProducts();
 
+  const inventory =
+    !inventoryResult ||
+    inventoryResult instanceof TalerError ||
+    inventoryResult.type === "fail"
+      ? []
+      : inventoryResult.body;
+  
   const [state, setState] = useState<
     Partial<Entity & { product_map: { id: string; description: string }[] }>
   >({
@@ -119,7 +124,7 @@ export function UpdatePage({
                   name="product_map"
                   label={i18n.str`Products`}
                   getSuggestion={async () => {
-                    return instanceInventory.map((prod) => {
+                    return inventory.map((prod) => {
                       return {
                         description: prod.description,
                         id: prod.id,
diff --git 
a/packages/merchant-backoffice-ui/src/paths/instance/categories/update/index.tsx
 
b/packages/merchant-backoffice-ui/src/paths/instance/categories/update/index.tsx
index 6b1fcf8e7..19352ca3e 100644
--- 
a/packages/merchant-backoffice-ui/src/paths/instance/categories/update/index.tsx
+++ 
b/packages/merchant-backoffice-ui/src/paths/instance/categories/update/index.tsx
@@ -36,7 +36,6 @@ import { Notification } from "../../../../utils/types.js";
 import { LoginPage } from "../../../login/index.js";
 import { NotFoundPageOrAdminCreate } from "../../../notfound/index.js";
 import { UpdatePage } from "./UpdatePage.js";
-import { useInstanceProducts } from "../../../../hooks/product.js";
 
 interface Props {
   onBack?: () => void;
@@ -49,8 +48,6 @@ export default function UpdateCategory({
   onBack,
 }: Props): VNode {
   const result = useCategoryDetails(cid);
-  // FIXME: if the product list is big the will bring a lot of info
-  const inventoryResult = useInstanceProducts();
   const [notif, setNotif] = useState<Notification | undefined>(undefined);
   const { state, lib } = useSessionContext();
 
@@ -73,23 +70,6 @@ export default function UpdateCategory({
       }
     }
   }
-  if (!inventoryResult) return <Loading />;
-  if (inventoryResult instanceof TalerError) {
-    return <ErrorLoadingMerchant error={inventoryResult} />;
-  }
-  if (inventoryResult.type === "fail") {
-    switch (inventoryResult.case) {
-      case HttpStatusCode.NotFound: {
-        return <NotFoundPageOrAdminCreate />;
-      }
-      case HttpStatusCode.Unauthorized: {
-        return <LoginPage />;
-      }
-      default: {
-        assertUnreachable(inventoryResult);
-      }
-    }
-  }
 
   return (
     <Fragment>
@@ -99,7 +79,6 @@ export default function UpdateCategory({
           ...result.body,
           id: cid,
         }}
-        instanceInventory={inventoryResult.body}
         onBack={onBack}
         onUpdate={async (newInfo) => {
           return lib.instance
diff --git 
a/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx 
b/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx
index 06e140680..33db7021f 100644
--- 
a/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx
+++ 
b/packages/merchant-backoffice-ui/src/paths/instance/products/update/index.tsx
@@ -49,7 +49,7 @@ export default function UpdateProduct({
   const result = useProductDetails(pid);
   const [notif, setNotif] = useState<Notification | undefined>(undefined);
   const { state, lib } = useSessionContext();
-
+  
   const { i18n } = useTranslationContext();
 
   if (!result) return <Loading />;
@@ -70,6 +70,7 @@ export default function UpdateProduct({
     }
   }
 
+
   return (
     <Fragment>
       <NotificationCard notification={notif} />

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