dix_product_api

This commit is contained in:
karimalden 2024-06-10 12:16:04 +03:00
parent 36ffb8ef19
commit d5ad2a68ff
7 changed files with 37 additions and 20 deletions

View File

@ -19,14 +19,18 @@ const CartWithDrawer = () => {
const { t } = useTranslation(); const { t } = useTranslation();
const { Cart, calculateTotalPrice, calculateTotalQuantity, removeCart } = const { Cart, calculateTotalPrice, calculateTotalQuantity, removeCart } =
useCartState(); useCartState();
const { user } = useAuthState(); const { user ,isAuthenticated} = useAuthState();
const { mutate, isLoading, isSuccess } = useAddOrder(); const { mutate, isLoading, isSuccess } = useAddOrder();
const products = Cart?.map((item: any) => ({ const products = Cart?.map((item: any) => ({
quantity: item?.quantity, quantity: item?.quantity,
id: item?.id, id: item?.id,
})); }));
const addOrder = () => { const addOrder = () => {
if (!isAuthenticated) {
toast.error("sorry you need to be authenticated");
return;
}
mutate({ mutate({
email: user?.email, email: user?.email,
products: products, products: products,

View File

@ -1,6 +1,7 @@
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import ProductSwiper from "./ProductSwiper"; import ProductSwiper from "./ProductSwiper";
import { useGetBaseProduct } from "../../api/baseProduct";
const Products = () => { const Products = () => {
const {t} = useTranslation(); const {t} = useTranslation();
@ -9,6 +10,10 @@ const Products = () => {
const handelSeeAll = () => { const handelSeeAll = () => {
navigate(`/categories?type=best_sale`); navigate(`/categories?type=best_sale`);
}; };
const { data,isLoading } = useGetBaseProduct({
mostOrderd: "asc",
})
return ( return (
<div className="Products"> <div className="Products">
<header> <header>
@ -16,7 +21,7 @@ const Products = () => {
<h5 className="pointer" onClick={handelSeeAll}> {t("View all")} </h5> <h5 className="pointer" onClick={handelSeeAll}> {t("View all")} </h5>
</header> </header>
<main className="ProductCards"> <main className="ProductCards">
<ProductSwiper/> <ProductSwiper data={data} isLoading={isLoading} />
</main> </main>
</div> </div>
); );

View File

@ -40,10 +40,10 @@ const ProductCard = ({ item }: { item: Product }) => {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const handelChangeFavorite = (item: Product) => { const handelChangeFavorite = (item: Product) => {
if (!isAuthenticated) { // if (!isAuthenticated) {
toast.error("sorry you need to be authenticated"); // toast.error("sorry you need to be authenticated");
return; // return;
} // }
if (item?.favorite) { if (item?.favorite) {
@ -55,6 +55,8 @@ const ProductCard = ({ item }: { item: Product }) => {
id: item?.id, id: item?.id,
}); });
} }
queryClient.invalidateQueries('mainProduct');
}; };
useEffect(() => { useEffect(() => {
@ -71,11 +73,11 @@ const ProductCard = ({ item }: { item: Product }) => {
}, [Delete]); }, [Delete]);
const handelAddToCart = (item: Product) => { const handelAddToCart = (item: Product) => {
if (!isAuthenticated) { // if (!isAuthenticated) {
toast.error("sorry you need to be authenticated"); // toast.error("sorry you need to be authenticated");
return; // return;
} // }
setCart(item); setCart(item);

View File

@ -11,16 +11,14 @@ import { Spin } from 'antd';
const ProductSwiper = () => { const ProductSwiper = ({data,isLoading}:any) => {
const language = localStorage.getItem('language') ; const language = localStorage.getItem('language') ;
console.log(language); console.log(language);
const [swiperDirection, setSwiperDirection] = useState(language === "ar" ? "rtl" : "ltr"); const [swiperDirection, setSwiperDirection] = useState(language === "ar" ? "rtl" : "ltr");
const swiperRef = useRef<any>(null); const swiperRef = useRef<any>(null);
const { data, isLoading } = useGetBaseProduct({
mostOrderd: "asc",
});
const BaseProducts = (data?.products as Product[]) || ([] as []); const BaseProducts = (data?.products as Product[]) || ([] as []);
return ( return (

View File

@ -1,6 +1,7 @@
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import ProductSwiper from "./ProductSwiper"; import ProductSwiper from "./ProductSwiper";
import { useGetBaseProduct } from "../../api/baseProduct";
const Products = () => { const Products = () => {
const {t} = useTranslation(); const {t} = useTranslation();
@ -10,6 +11,11 @@ const Products = () => {
navigate(`/categories?type=new_product`); navigate(`/categories?type=new_product`);
}; };
const { data,isLoading } = useGetBaseProduct({
lastProducts:"asc"
});
return ( return (
<div className="Products"> <div className="Products">
<header> <header>
@ -17,7 +23,7 @@ const Products = () => {
<h5 className="pointer" onClick={handelSeeAll}> {t("View all")} </h5> <h5 className="pointer" onClick={handelSeeAll}> {t("View all")} </h5>
</header> </header>
<main className="ProductCards"> <main className="ProductCards">
<ProductSwiper/> <ProductSwiper data={data} isLoading={isLoading} />
</main> </main>
</div> </div>
); );

View File

@ -94,7 +94,7 @@ const Page = () => {
</div> </div>
</div> </div>
</main> </main>
<Similar/> <Similar category_id={product?.category?.id} />
</div> </div>
); );
}; };

View File

@ -1,8 +1,10 @@
import { useGetBaseProduct } from "../../api/baseProduct"; import { useGetBaseProduct } from "../../api/baseProduct";
import ProductSwiper from "../../Components/Home/ProductSwiper"; import ProductSwiper from "../../Components/Home/ProductSwiper";
const Similar = () => { const Similar = ({category_id}:any) => {
const { data } = useGetBaseProduct(); const { data,isLoading } = useGetBaseProduct({
category_id:category_id
});
return ( return (
<div className="Products"> <div className="Products">
@ -10,7 +12,7 @@ const Similar = () => {
<h1>Similar Products</h1> <h1>Similar Products</h1>
</header> </header>
<main className="ProductCards"> <main className="ProductCards">
<ProductSwiper/> <ProductSwiper data={data} isLoading={isLoading} />
</main> </main>
</div> </div>
); );