From e39df475203ebe05fc915dd5ee3b2dc9d738b37d Mon Sep 17 00:00:00 2001 From: AlexSserb Date: Sat, 25 Oct 2025 19:35:00 +0400 Subject: [PATCH] refactor: refactored products utils --- src/app/products/hooks/useProductsList.tsx | 20 ----------- .../components/ProductFieldsList.tsx | 32 ++---------------- .../utils/getProductFieldList.tsx | 33 +++++++++++++++++++ .../utils/renderProductOption.tsx | 5 ++- 4 files changed, 37 insertions(+), 53 deletions(-) delete mode 100644 src/app/products/hooks/useProductsList.tsx create mode 100644 src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList.tsx diff --git a/src/app/products/hooks/useProductsList.tsx b/src/app/products/hooks/useProductsList.tsx deleted file mode 100644 index 7ce21a1..0000000 --- a/src/app/products/hooks/useProductsList.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useQuery } from "@tanstack/react-query"; -import { ProductService } from "../../../client"; - -type Props = { - clientId: number; - page?: number; - itemsPerPage?: number; - searchInput: string; -}; -const useProductsList = (props: Props) => { - const { clientId, page, itemsPerPage, searchInput } = props; - const { data, refetch, isLoading } = useQuery({ - queryKey: ["getAllServices", clientId, page, itemsPerPage, searchInput], - queryFn: () => ProductService.getProductsByClientId(props), - }); - const products = !data ? [] : data.products; - const paginationInfo = data?.paginationInfo; - return { products, paginationInfo, refetch, isLoading }; -}; -export default useProductsList; diff --git a/src/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList.tsx b/src/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList.tsx index 884049f..196c265 100644 --- a/src/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList.tsx +++ b/src/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList.tsx @@ -1,39 +1,11 @@ -import { FC } from "react"; -import { isNil } from "lodash"; -import { Text } from "@mantine/core"; +import React, { FC } from "react"; import { ProductSchema } from "@/lib/client"; - -type ProductFieldNames = { - [K in keyof ProductSchema]: string; -}; - -export const ProductFieldNames: Partial = { - color: "Цвет", - article: "Артикул", - size: "Размер", - brand: "Бренд", - composition: "Состав", - additionalInfo: "Доп. информация", -}; +import getProductFieldList from "@/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList"; type Props = { product: ProductSchema; }; -export const getProductFieldList = (product: ProductSchema) => { - return Object.entries(product) - .map(([key, value]) => { - const fieldName = ProductFieldNames[key as keyof ProductSchema]; - if (!fieldName || isNil(value) || value === "") return null; - return ( - - {fieldName}: {value.toString()}{" "} - - ); - }) - .filter(obj => !!obj); -}; - const ProductFieldsList: FC = ({ product }) => { const fieldList = getProductFieldList(product); diff --git a/src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList.tsx b/src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList.tsx new file mode 100644 index 0000000..0ca2ab1 --- /dev/null +++ b/src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList.tsx @@ -0,0 +1,33 @@ +import React from "react"; +import { isNil } from "lodash"; +import { Text } from "@mantine/core"; +import { ProductSchema } from "@/lib/client"; + +type ProductFieldNames = { + [K in keyof ProductSchema]: string; +}; + +export const ProductFieldNames: Partial = { + color: "Цвет", + article: "Артикул", + size: "Размер", + brand: "Бренд", + composition: "Состав", + additionalInfo: "Доп. информация", +}; + +const getProductFieldList = (product: ProductSchema): React.JSX.Element[] => { + return Object.entries(product) + .map(([key, value]) => { + const fieldName = ProductFieldNames[key as keyof ProductSchema]; + if (!fieldName || isNil(value) || value === "") return null; + return ( + + {fieldName}: {value.toString()}{" "} + + ); + }) + .filter(obj => !!obj); +}; + +export default getProductFieldList; diff --git a/src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/renderProductOption.tsx b/src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/renderProductOption.tsx index 9c3b9f3..f0e3122 100644 --- a/src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/renderProductOption.tsx +++ b/src/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/renderProductOption.tsx @@ -10,9 +10,8 @@ import { Tooltip, } from "@mantine/core"; import { ProductSchema } from "@/lib/client"; -import ProductFieldsList, { - getProductFieldList, -} from "@/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList"; +import ProductFieldsList from "@/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList"; +import getProductFieldList from "@/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList"; const renderProductOption = ( products: ProductSchema[]