[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] 05/07: better type signature for undefinedIfEmpty
From: |
gnunet |
Subject: |
[taler-wallet-core] 05/07: better type signature for undefinedIfEmpty |
Date: |
Fri, 04 Nov 2022 15:56:22 +0100 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository wallet-core.
commit a69e559890d888d10739c8e29549ff37b788743a
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Nov 4 11:18:30 2022 -0300
better type signature for undefinedIfEmpty
---
.../src/components/form/InputPaytoForm.tsx | 7 +------
.../src/paths/admin/create/CreatePage.tsx | 7 +------
.../src/paths/instance/orders/create/CreatePage.tsx | 7 +------
.../src/paths/instance/update/UpdatePage.tsx | 7 +------
packages/merchant-backoffice-ui/src/utils/table.ts | 16 ++++++++++++++++
5 files changed, 20 insertions(+), 24 deletions(-)
diff --git
a/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx
b/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx
index c2aa9c3e9..e8022ca15 100644
--- a/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx
+++ b/packages/merchant-backoffice-ui/src/components/form/InputPaytoForm.tsx
@@ -22,6 +22,7 @@ import { h, VNode, Fragment } from "preact";
import { useCallback, useState } from "preact/hooks";
import { Translate, Translator, useTranslator } from "../../i18n/index.js";
import { COUNTRY_TABLE } from "../../utils/constants.js";
+import { undefinedIfEmpty } from "../../utils/table.js";
import { FormErrors, FormProvider } from "./FormProvider.js";
import { Input } from "./Input.js";
import { InputGroup } from "./InputGroup.js";
@@ -154,12 +155,6 @@ const targets = [
const noTargetValue = targets[0];
const defaultTarget = { target: noTargetValue, options: {} };
-function undefinedIfEmpty<T>(obj: T): T | undefined {
- return Object.keys(obj).some((k) => (obj as any)[k] !== undefined)
- ? obj
- : undefined;
-}
-
export function InputPaytoForm<T>({
name,
readonly,
diff --git
a/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx
b/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx
index 16f22ea4b..0d7681e1d 100644
--- a/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/admin/create/CreatePage.tsx
@@ -33,6 +33,7 @@ import { Translate, useTranslator } from
"../../../i18n/index.js";
import { DefaultInstanceFormFields } from
"../../../components/instance/DefaultInstanceFormFields.js";
import { INSTANCE_ID_REGEX, PAYTO_REGEX } from "../../../utils/constants.js";
import { Amounts } from "@gnu-taler/taler-util";
+import { undefinedIfEmpty } from "../../../utils/table.js";
export type Entity = MerchantBackend.Instances.InstanceConfigurationMessage & {
auth_token?: string;
@@ -54,12 +55,6 @@ function with_defaults(id?: string): Partial<Entity> {
};
}
-function undefinedIfEmpty<T>(obj: T): T | undefined {
- return Object.keys(obj).some((k) => (obj as any)[k] !== undefined)
- ? obj
- : undefined;
-}
-
export function CreatePage({ onCreate, onBack, forceId }: Props): VNode {
const [value, valueHandler] = useState(with_defaults(forceId));
const [isTokenSet, updateIsTokenSet] = useState<boolean>(false);
diff --git
a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
index fa0dd7a5a..56bb65b90 100644
---
a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
+++
b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
@@ -42,6 +42,7 @@ import { InventoryProductForm } from
"../../../../components/product/InventoryPr
import { NonInventoryProductFrom } from
"../../../../components/product/NonInventoryProductForm.js";
import { InputNumber } from "../../../../components/form/InputNumber.js";
import { InputBoolean } from "../../../../components/form/InputBoolean.js";
+import { undefinedIfEmpty } from "../../../../utils/table.js";
interface Props {
onCreate: (d: MerchantBackend.Orders.PostOrderRequest) => void;
@@ -126,12 +127,6 @@ const stringIsValidJSON = (value: string) => {
}
};
-function undefinedIfEmpty<T>(obj: T): T | undefined {
- return Object.keys(obj).some((k) => (obj as any)[k] !== undefined)
- ? obj
- : undefined;
-}
-
export function CreatePage({
onCreate,
onBack,
diff --git
a/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
b/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
index fb4794bf0..b5328249a 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/update/UpdatePage.tsx
@@ -34,6 +34,7 @@ import { Translate, useTranslator } from
"../../../i18n/index.js";
import { DefaultInstanceFormFields } from
"../../../components/instance/DefaultInstanceFormFields.js";
import { PAYTO_REGEX } from "../../../utils/constants.js";
import { Amounts } from "@gnu-taler/taler-util";
+import { undefinedIfEmpty } from "../../../utils/table.js";
type Entity = MerchantBackend.Instances.InstanceReconfigurationMessage & {
auth_token?: string;
@@ -70,12 +71,6 @@ function getTokenValuePart(t?: string): string | undefined {
return match[1];
}
-function undefinedIfEmpty<T>(obj: T): T | undefined {
- return Object.keys(obj).some((k) => (obj as any)[k] !== undefined)
- ? obj
- : undefined;
-}
-
export function UpdatePage({
onUpdate,
onChangeAuth,
diff --git a/packages/merchant-backoffice-ui/src/utils/table.ts
b/packages/merchant-backoffice-ui/src/utils/table.ts
index 4ebd95807..199e5fda5 100644
--- a/packages/merchant-backoffice-ui/src/utils/table.ts
+++ b/packages/merchant-backoffice-ui/src/utils/table.ts
@@ -35,3 +35,19 @@ export function buildActions<T extends WithId>(instances:
T[], selected: string[
.filter(notEmpty)
.map(id => ({ element: id, type: action }))
}
+
+/**
+ * For any object or array, return the same object if is not empty.
+ * not empty:
+ * - for arrays: at least one element not undefined
+ * - for objects: at least one property not undefined
+ * @param obj
+ * @returns
+ */
+export function undefinedIfEmpty<T extends Record<string,
unknown>|Array<unknown>>(obj: T): T | undefined {
+ if (obj === undefined) return undefined
+ return Object.values(obj).some((v) => v !== undefined)
+ ? obj
+ : undefined;
+}
+
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-wallet-core] branch master updated (66460e565 -> f79bca0ab), gnunet, 2022/11/04
- [taler-wallet-core] 04/07: upgrade amount api, gnunet, 2022/11/04
- [taler-wallet-core] 02/07: es6 and ts lib, gnunet, 2022/11/04
- [taler-wallet-core] 01/07: fix imports, gnunet, 2022/11/04
- [taler-wallet-core] 07/07: fix dependecies version, gnunet, 2022/11/04
- [taler-wallet-core] 06/07: fix some test style and SWRConfig type compilation, gnunet, 2022/11/04
- [taler-wallet-core] 05/07: better type signature for undefinedIfEmpty,
gnunet <=
- [taler-wallet-core] 03/07: add index.js to import that point to folders, gnunet, 2022/11/04