diff --git a/src/api/productApi.ts b/src/api/productApi.ts index 3e91d80..c14f1b7 100644 --- a/src/api/productApi.ts +++ b/src/api/productApi.ts @@ -19,12 +19,13 @@ type ProductData = { subDesc3: string; }; -const useGetProducts = () => { +const useGetProducts = (categoryId = 0) => { const fetcher = () => defaultApi.get(`/api/products`).then(({ data }) => data); + const categoryFetcher = () => defaultApi.get(`/api/categories/${categoryId}`).then(({ data }) => data); return useQuery({ - queryKey: ["products"], - queryFn: fetcher, + queryKey: ["products", categoryId], + queryFn: categoryId ? categoryFetcher : fetcher, }); }; diff --git a/src/components/features/MyPage/Order/CancelOrderModal.tsx b/src/components/features/MyPage/Order/CancelOrderModal.tsx index a211704..5c8df63 100644 --- a/src/components/features/MyPage/Order/CancelOrderModal.tsx +++ b/src/components/features/MyPage/Order/CancelOrderModal.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from "react"; import { Flex, ModalBody, ModalHeader, ModalCloseButton, Button, Text, Divider } from "@chakra-ui/react"; +import { useGetProductDetail } from "@api/productApi"; import BasicModal from "@components/common/modal/BasicModal"; -import useGetProduct from "./useGetProduct"; interface CancelOrderModalProps { isOpen: boolean; @@ -18,7 +18,7 @@ const CancelOrderModal: React.FC = ({ maxH = "800px", productId, }) => { - const { data: productData } = useGetProduct(productId); + const { data: productData } = useGetProductDetail(productId); const [totalRefundAmount, setTotalRefundAmount] = useState(0); diff --git a/src/components/features/MyPage/Order/RefundModal.tsx b/src/components/features/MyPage/Order/RefundModal.tsx index 7813e4a..5bd0f5c 100644 --- a/src/components/features/MyPage/Order/RefundModal.tsx +++ b/src/components/features/MyPage/Order/RefundModal.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from "react"; import { Flex, ModalBody, ModalHeader, ModalCloseButton, Button, Text, Divider } from "@chakra-ui/react"; +import { useGetProductDetail } from "@api/productApi"; import BasicModal from "@components/common/modal/BasicModal"; -import useGetProduct from "./useGetProduct"; interface RefundModalProps { isOpen: boolean; @@ -12,7 +12,7 @@ interface RefundModalProps { } const RefundModal: React.FC = ({ isOpen, onClose, maxW = "600px", maxH = "800px", productId }) => { - const { data: productData } = useGetProduct(productId); + const { data: productData } = useGetProductDetail(productId); const [totalRefundAmount, setTotalRefundAmount] = useState(0); diff --git a/src/components/features/MyPage/Order/useGetProduct.tsx b/src/components/features/MyPage/Order/useGetProduct.tsx deleted file mode 100644 index 0eb104a..0000000 --- a/src/components/features/MyPage/Order/useGetProduct.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { useQuery } from "@tanstack/react-query"; -import { defaultApi } from "@api/axiosInstance"; - -const useGetProduct = (productId: number) => { - const fetcher = () => defaultApi.get(`/product/${productId}`).then(({ data }) => data); - - return useQuery({ - queryKey: ["product", productId], - queryFn: fetcher, - enabled: !!productId, - }); -}; - -export default useGetProduct; diff --git a/src/components/features/RegisterPage/Farmer.tsx b/src/components/features/RegisterPage/Farmer.tsx index 57ffe5e..24b8d17 100644 --- a/src/components/features/RegisterPage/Farmer.tsx +++ b/src/components/features/RegisterPage/Farmer.tsx @@ -3,6 +3,7 @@ import { useNavigate } from "react-router-dom"; import { Button, Text, Flex, Input, Image } from "@chakra-ui/react"; import { useCreateFarmer } from "@api/emailApi"; import call from "@assets/logo/Call.png"; +import useLogin from "@hooks/useLogin"; type FarmerData = { name: string; @@ -26,10 +27,12 @@ const Farmer = () => { const { mutateAsync: createFarmer } = useCreateFarmer(); const navigate = useNavigate(); + const { refreshLogin } = useLogin(); + const handleRegister = () => { createFarmer(farmerData) .then(() => { - navigate("/"); + refreshLogin().then(() => navigate("/")); }) .catch(() => { alert("농부 등록에 실패했습니다."); diff --git a/src/components/features/StorePage/ProductList/ProductFilter/index.tsx b/src/components/features/StorePage/ProductList/ProductFilter/index.tsx index 66c6bb3..7b31e8b 100644 --- a/src/components/features/StorePage/ProductList/ProductFilter/index.tsx +++ b/src/components/features/StorePage/ProductList/ProductFilter/index.tsx @@ -1,24 +1,33 @@ import { Divider, Flex, Text } from "@chakra-ui/react"; +import { useGetProductCategories } from "@api/categoryApi"; import ProductGroupView from "@components/features/StorePage/ProductList/ProductFilter/ProductGroupView"; -import { ProductFilterItem } from "@components/features/StorePage/ProductList/ProductFilter/type"; import productGroup from "@constants/productGroup"; import useFilters, { UseFilters } from "@hooks/useFilters"; +import { encodeCategory } from "@utils/categoryParser"; type ProductFilterProps = { - items?: ProductFilterItem[]; filterState?: UseFilters; }; -const ProductFilter = ({ items = [], filterState = useFilters() }: ProductFilterProps) => ( - - - 필터 - - - {productGroup.map(group => ( - - ))} - -); +const ProductFilter = ({ filterState = useFilters() }: ProductFilterProps) => { + const { data: productCategories } = useGetProductCategories(); + + return ( + + + 필터 + + + {productGroup.map(group => ( + + ))} + + ); +}; export default ProductFilter; diff --git a/src/components/features/StorePage/ProductList/ProductsView.tsx b/src/components/features/StorePage/ProductList/ProductsView.tsx index 691d04d..1898017 100644 --- a/src/components/features/StorePage/ProductList/ProductsView.tsx +++ b/src/components/features/StorePage/ProductList/ProductsView.tsx @@ -1,6 +1,6 @@ +import { useGetProducts } from "@api/productApi"; import GridView, { GridViewProps } from "@components/ItemView/GridView"; import ProductCard from "@components/features/StorePage/ProductCard"; -import mockProducts from "@mocks/mockItem/mockProducts"; import { Product } from "@type/index"; type ProductsViewProps = { @@ -8,9 +8,9 @@ type ProductsViewProps = { } & Omit, "items" | "ItemComponent">; const ProductsView = ({ filters, ...props }: ProductsViewProps) => { - const filteredProducts = mockProducts.filter(() => filters.length === 0); + const { data: products } = useGetProducts(filters[0] ? Number(filters[0]) : 0); - return ; + return ; }; export default ProductsView; diff --git a/src/components/features/StorePage/ProductList/index.tsx b/src/components/features/StorePage/ProductList/index.tsx index abb04fc..6209d36 100644 --- a/src/components/features/StorePage/ProductList/index.tsx +++ b/src/components/features/StorePage/ProductList/index.tsx @@ -2,15 +2,13 @@ import { Flex } from "@chakra-ui/react"; import ProductFilter from "@components/features/StorePage/ProductList/ProductFilter"; import ProductsView from "@components/features/StorePage/ProductList/ProductsView"; import useFilters from "@hooks/useFilters"; -import mockCategory from "@mocks/mockItem/mockCategory"; -import { encodeCategory } from "@utils/categoryParser"; const ProductList = () => { const productFilterState = useFilters(); return ( - +