"use client"; import BreadCrumb from "@/components/BreadCrumb/BreadCrumb"; import { t } from "@/utils"; import { getBlogsApi } from "@/utils/api"; import { useEffect, useState } from "react"; import BlogCardSkeleton from "@/components/Skeletons/BlogCardSkeleton"; import BlogCard from "../LandingPage/BlogCard"; import Layout from "@/components/Layout/Layout"; import { Button } from "@/components/ui/button"; import NoData from "@/components/EmptyStates/NoData"; import Tags from "./Tags"; import { useSearchParams } from "next/navigation"; import { useSelector } from "react-redux"; import { getCurrentLangCode } from "@/redux/reducer/languageSlice"; const Blogs = () => { const searchParams = useSearchParams(); const tag = searchParams?.get("tag"); const langCode = useSelector(getCurrentLangCode); const [blogs, setBlogs] = useState([]); const [isLoading, setIsLoading] = useState(false); const [currentPage, setCurrentPage] = useState(1); const [hasMore, setHasMore] = useState(false); const [isLoadMore, setIsLoadMore] = useState(false); useEffect(() => { getBlogsData(currentPage); }, [tag, langCode]); const getBlogsData = async (page) => { try { page > 1 ? setIsLoadMore(true) : setIsLoading(true); const res = await getBlogsApi.getBlogs({ sort_by: "new-to-old", page, ...(tag && { tag }), }); if (res?.data?.error === false) { page === 1 ? setBlogs(res?.data?.data?.data) : setBlogs([...blogs, ...res?.data?.data?.data]); setCurrentPage(res?.data?.data?.current_page); setHasMore(res?.data?.data?.current_page < res?.data?.data?.last_page); } else { console.error(res?.data?.message); } } catch (error) { console.log(error); } finally { setIsLoading(false); setIsLoadMore(false); } }; const handleLoadMore = () => { getBlogsData(currentPage + 1); }; return (

{t("ourBlogs")}

{isLoading ? ( Array.from({ length: 6 })?.map((_, index) => ( )) ) : blogs && blogs?.length > 0 ? ( blogs?.map((blog) => ) ) : (
)}
{hasMore && (
)}
); }; export default Blogs;