import { useEffect, useState } from "react"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { TbTransferVertical } from "react-icons/tb"; import { IoGrid } from "react-icons/io5"; import { allItemApi } from "@/utils/api"; import ProductHorizontalCardSkeleton from "@/components/Common/ProductHorizontalCardSkeleton"; import ProductCardSkeleton from "@/components/Common/ProductCardSkeleton"; import ProductCard from "@/components/Common/ProductCard"; import NoData from "@/components/EmptyStates/NoData"; import ProductHorizontalCard from "@/components/Common/ProductHorizontalCard"; import { useSearchParams } from "next/navigation"; import { MdViewStream } from "react-icons/md"; import { Button } from "@/components/ui/button"; import { CurrentLanguageData } from "@/redux/reducer/languageSlice"; import { useSelector } from "react-redux"; import { t } from "@/utils"; const SellerLsitings = ({ id }) => { const searchParams = useSearchParams(); const view = searchParams.get("view") || "grid"; const sortBy = searchParams.get("sort") || "new-to-old"; const CurrentLanguage = useSelector(CurrentLanguageData); const [isSellerItemsLoading, setIsSellerItemsLoading] = useState(false); const [sellerItems, setSellerItems] = useState([]); const [isSellerItemLoadMore, setIsSellerItemLoadMore] = useState(false); const [CurrentPage, setCurrentPage] = useState(1); const [hasMore, setHasMore] = useState(true); useEffect(() => { getSellerItems(1); }, [sortBy, CurrentLanguage.id]); const getSellerItems = async (page) => { try { if (page === 1) { setIsSellerItemsLoading(true); } const res = await allItemApi.getItems({ user_id: id, sort_by: sortBy, page, }); if (page > 1) { // Append new data to existing sellerItems setSellerItems((prevItems) => [...prevItems, ...res?.data?.data?.data]); } else { // Set new data if CurrentPage is 1 or initial load setSellerItems(res?.data?.data?.data); } setCurrentPage(res?.data?.data?.current_page); if (res?.data?.data.current_page === res?.data?.data.last_page) { setHasMore(false); // Check if there's more data } } catch (error) { console.log(error); } finally { setIsSellerItemsLoading(false); setIsSellerItemLoadMore(false); } }; const handleLike = (id) => { const updatedItems = sellerItems.map((item) => { if (item.id === id) { return { ...item, is_liked: !item.is_liked }; } return item; }); setSellerItems(updatedItems); }; const handleProdLoadMore = () => { setIsSellerItemLoadMore(true); getSellerItems(CurrentPage + 1); }; const toggleView = (newView) => { const params = new URLSearchParams(searchParams); params.set("view", newView); window.history.pushState(null, "", `?${params.toString()}`); }; const handleSortBy = (value) => { const params = new URLSearchParams(searchParams); params.set("sort", value); window.history.pushState(null, "", `?${params.toString()}`); }; return ( <>
{t("sortBy")}
{isSellerItemsLoading ? ( Array.from({ length: 12 }).map((_, index) => view === "list" ? (
) : (
) ) ) : sellerItems && sellerItems.length > 0 ? ( sellerItems?.map((item, index) => view === "list" ? (
) : (
) ) ) : (
)}
{sellerItems && sellerItems.length > 0 && hasMore && (
)} ); }; export default SellerLsitings;