diff --git a/src/Favourite/liked.tsx b/src/Favourite/liked.tsx new file mode 100644 index 0000000..9c3c531 --- /dev/null +++ b/src/Favourite/liked.tsx @@ -0,0 +1,84 @@ +import { useEffect, useState } from "react"; +import { supabase } from "../utils/client"; // Adjust the path as necessary +import { useNavigate } from "react-router-dom"; + +interface LikedProduct { + id: number; + name: string; + image: string; + price: number; + desc: string; + created_at: string; +} + +function Liked() { + const [likedProducts, setLikedProducts] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + const fetchLikedProducts = async () => { + const { data, error } = await supabase + .from('liked_products') // Replace with your table name + .select('*'); + + if (error) { + setError('Failed to fetch liked products'); + console.error('Error fetching liked products:', error); + } else { + setLikedProducts(data || []); + } + setLoading(false); + }; + + fetchLikedProducts(); + }, []); + + const navigate = useNavigate(); + + const handleAddToCart = (product: LikedProduct) => { + navigate("/home/shop/product", { state: product }); + }; + + if (loading) { + return

Loading...

; + } + + if (error) { + return

{error}

; + } + + return ( +
+

Liked Products

+
+ {likedProducts.length === 0 ? ( +

No liked products found.

+ ) : ( + likedProducts.map((product) => ( +
+ {product.name} +
+

{product.name}

+

{product.desc}

+

₹{product.price}

+ +
+
+ )) + )} +
+
+ ); +} + +export default Liked; diff --git a/src/components/Product.tsx b/src/components/Product.tsx index bb3caf8..929ed41 100644 --- a/src/components/Product.tsx +++ b/src/components/Product.tsx @@ -1,4 +1,7 @@ +import { useState } from "react"; import { useNavigate } from "react-router-dom"; +import { HiHeart } from "react-icons/hi"; +import { supabase } from "../utils/client"; interface Data { name: string; @@ -9,27 +12,49 @@ interface Data { function Product({ name, image, price, desc }: Data) { const navigate = useNavigate(); + const [liked, setLiked] = useState(false); const handleNavigate = () => { navigate("/home/shop/product", { state: { name, image, price, desc } }); }; + const handleLike = async () => { + setLiked(!liked); + // If product is liked, add it to Supabase + if (!liked) { + const { error } = await supabase + .from("liked_products") + .insert([ + { name, image, price, desc, created_at: new Date().toISOString() } + ]); + if(error){ + console.error("error inserting product into supabase",error) + } + } + }; return ( <>
+
+ +
-
- ); } diff --git a/src/pages/Profile/Profile.tsx b/src/pages/Profile/Profile.tsx index 84d04bf..efd8487 100644 --- a/src/pages/Profile/Profile.tsx +++ b/src/pages/Profile/Profile.tsx @@ -6,6 +6,7 @@ import { useNavigate } from "react-router-dom"; import Head from "../../components/Head"; import Loader from "../../components/Loader/Loader"; import EditProfileModal from "./EditProfileModal"; +import Liked from "../../Favourite/liked"; interface USER { username: string; @@ -66,7 +67,14 @@ function Profile() {
- +
@@ -137,8 +145,10 @@ function Profile() {
+ + );