Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/Component/CartContext.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { createContext, useContext, useState, useEffect } from "react";
import React, { createContext, useContext, useState, useEffect, useCallback } from "react";
import { getLocalStoragedata } from "../helpers/Storage";

const CartContext = createContext();
Expand All @@ -8,7 +8,7 @@ export function CartProvider({ children }) {
const serviceURL = process.env.REACT_APP_API_URL;
const token = getLocalStoragedata("token");

const fetchCart = async () => {
const fetchCart = useCallback(async () => {
try {
const res = await fetch(`${serviceURL}carts/cart-items`, {
headers: { Authorization: `Bearer ${token}` },
Expand All @@ -18,11 +18,11 @@ export function CartProvider({ children }) {
} catch (err) {
console.error(err);
}
};
}, [serviceURL, token]);

useEffect(() => {
fetchCart();
}, [token]);
}, [fetchCart]);

const count = items.reduce((sum, i) => sum + (i.quantity || 1), 0);

Expand Down
36 changes: 28 additions & 8 deletions src/Pages/Cart.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useEffect, useState } from "react";
import { useEffect, useState, useCallback } from "react";
import { Link, useNavigate } from "react-router-dom";
import BgImg from "../assets/CartBg.png";
import { getLocalStoragedata } from "../helpers/Storage.js";
Expand All @@ -11,10 +11,30 @@ export default function Cart() {
const [items, setItems] = useState([]);
const [loading, setLoading] = useState(false);
const navigate = useNavigate();
const token = getLocalStoragedata("token");
// const token = getLocalStoragedata("token");
const serviceURL = process.env.REACT_APP_API_URL;

const fetchCart = async () => {
// const fetchCart = async () => {
// setLoading(true);
// try {
// const token = getLocalStoragedata("token");
// const res = await fetch(`${serviceURL}carts/cart-items`, {
// headers: { Authorization: `Bearer ${token}` },
// });
// const data = await res.json();
// if (res.ok) setItems(data);
// else console.error(data.message);
// } catch (error) {
// console.error(error);
// }
// setLoading(false);
// };

// useEffect(() => {
// fetchCart();
// }, [token]);

const fetchCart = useCallback(async () => {
setLoading(true);
try {
const token = getLocalStoragedata("token");
Expand All @@ -28,11 +48,11 @@ export default function Cart() {
console.error(error);
}
setLoading(false);
};
}, [serviceURL]);

useEffect(() => {
fetchCart();
}, [token]);
}, [fetchCart]);

// Update quantity
const setQty = async (itemId, quantity) => {
Expand All @@ -52,9 +72,9 @@ export default function Cart() {
prev.map((i) =>
i.itemId === itemId
? {
...i,
quantity,
}
...i,
quantity,
}
: i
)
);
Expand Down
54 changes: 40 additions & 14 deletions src/Pages/Menu.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useEffect, useMemo, useState } from "react";
import { useEffect, useMemo, useState, useCallback } from "react";
import NavSearchBar from "../Component/N-SearchBar.js";
import BannerImg from "../assets/Banner.png";
import BgImg from "../assets/MBg.png";
Expand All @@ -25,15 +25,38 @@ export default function MenuPage() {
const token = getLocalStoragedata("token");
const { fetchCart } = useCart();

useEffect(() => {
fetchMenuItemData();
}, [token]);
// useEffect(() => {
// fetchMenuItemData();
// }, [token]);

useEffect(() => {
fetchCart();
}, [token]);
}, [fetchCart]);

// const fetchMenuItemData = async () => {
// setLoading(true);
// const response = await getMenuService();

// if (response.success) {
// setItems(response.data);

// const uniqueCats = [...new Set(response.data.map((it) => it.category))];
// setCategories(["All", ...uniqueCats]);

// if (!category) {
// setCategory("All");
// }
// if (uniqueCats.length && !category) {
// setCategory(uniqueCats[0]);
// }
// } else {
// console.log("Error:", response.message);
// }

const fetchMenuItemData = async () => {
// setLoading(false);
// };

const fetchMenuItemData = useCallback(async () => {
setLoading(true);
const response = await getMenuService();

Expand All @@ -54,16 +77,20 @@ export default function MenuPage() {
}

setLoading(false);
};
}, [category]); // depends on category because you use it

useEffect(() => {
fetchMenuItemData();
}, [fetchMenuItemData]);

const filtered = useMemo(() => {
if (!category) return [];

let list =
category && category !== "All"
? items.filter(
(it) => it.category?.toLowerCase() === category.toLowerCase()
)
(it) => it.category?.toLowerCase() === category.toLowerCase()
)
: [...items];

if (search.trim()) {
Expand Down Expand Up @@ -176,11 +203,10 @@ export default function MenuPage() {
<button
key={c}
onClick={() => setCategory(c)}
className={`rounded-xl px-4 py-2 text-sm font-medium transition-all border ${
c === category
? "bg-emerald-600 text-white border-emerald-600 shadow"
: "bg-white text-gray-700 border-gray-300 hover:bg-gray-50"
}`}
className={`rounded-xl px-4 py-2 text-sm font-medium transition-all border ${c === category
? "bg-emerald-600 text-white border-emerald-600 shadow"
: "bg-white text-gray-700 border-gray-300 hover:bg-gray-50"
}`}
>
{c}
</button>
Expand Down
Loading