refactor: refactored products utils

This commit is contained in:
2025-10-25 19:35:00 +04:00
parent d9da3d1bc5
commit e39df47520
4 changed files with 37 additions and 53 deletions

View File

@ -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;

View File

@ -1,39 +1,11 @@
import { FC } from "react"; import React, { FC } from "react";
import { isNil } from "lodash";
import { Text } from "@mantine/core";
import { ProductSchema } from "@/lib/client"; import { ProductSchema } from "@/lib/client";
import getProductFieldList from "@/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList";
type ProductFieldNames = {
[K in keyof ProductSchema]: string;
};
export const ProductFieldNames: Partial<ProductFieldNames> = {
color: "Цвет",
article: "Артикул",
size: "Размер",
brand: "Бренд",
composition: "Состав",
additionalInfo: "Доп. информация",
};
type Props = { type Props = {
product: ProductSchema; 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 (
<Text key={fieldName}>
{fieldName}: {value.toString()}{" "}
</Text>
);
})
.filter(obj => !!obj);
};
const ProductFieldsList: FC<Props> = ({ product }) => { const ProductFieldsList: FC<Props> = ({ product }) => {
const fieldList = getProductFieldList(product); const fieldList = getProductFieldList(product);

View File

@ -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<ProductFieldNames> = {
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 (
<Text key={fieldName}>
{fieldName}: {value.toString()}{" "}
</Text>
);
})
.filter(obj => !!obj);
};
export default getProductFieldList;

View File

@ -10,9 +10,8 @@ import {
Tooltip, Tooltip,
} from "@mantine/core"; } from "@mantine/core";
import { ProductSchema } from "@/lib/client"; import { ProductSchema } from "@/lib/client";
import ProductFieldsList, { import ProductFieldsList from "@/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList";
getProductFieldList, import getProductFieldList from "@/modules/dealModularEditorTabs/FulfillmentBase/shared/components/ProductSelect/utils/getProductFieldList";
} from "@/modules/dealModularEditorTabs/FulfillmentBase/desktop/components/ProductView/components/ProductFieldsList";
const renderProductOption = ( const renderProductOption = (
products: ProductSchema[] products: ProductSchema[]