"use client"; import BreadCrumb from "@/components/BreadCrumb/BreadCrumb"; import { setBreadcrumbPath } from "@/redux/reducer/breadCrumbSlice"; import { formatDateMonthYear, t, truncate } from "@/utils"; import { getBlogsApi } from "@/utils/api"; import { useEffect, useState } from "react"; import { FaEye, FaRegCalendarCheck } from "react-icons/fa"; import { useDispatch, useSelector } from "react-redux"; import parse from "html-react-parser"; import { FacebookShareButton, TwitterShareButton, WhatsappShareButton, } from "react-share"; import { BiLink, BiLogoFacebook, BiLogoWhatsapp } from "react-icons/bi"; import { RiTwitterXLine } from "react-icons/ri"; import { usePathname } from "next/navigation"; import { toast } from "sonner"; import BlogCard from "../LandingPage/BlogCard"; import { Badge } from "@/components/ui/badge"; import Layout from "@/components/Layout/Layout"; import { getCompanyName } from "@/redux/reducer/settingSlice"; import PopularPosts from "../Blogs/PopularPosts"; import { CurrentLanguageData } from "@/redux/reducer/languageSlice"; import NoData from "@/components/EmptyStates/NoData"; import PageLoader from "@/components/Common/PageLoader"; import CustomImage from "@/components/Common/CustomImage"; const BlogDetailPage = ({ slug }) => { const CurrentLanguage = useSelector(CurrentLanguageData); const path = usePathname(); const dispatch = useDispatch(); const admin = useSelector((state) => state?.Settings?.data?.data?.admin); const CompanyName = useSelector(getCompanyName); const [blogData, setBlogData] = useState([]); const [relatedBlogs, setRelatedBlogs] = useState([]); const [isLoading, setIsLoading] = useState(false); const currentUrl = `${process.env.NEXT_PUBLIC_WEB_URL}${path}`; const langCode = CurrentLanguage?.code?.toUpperCase(); useEffect(() => { getBlogsData(); }, [CurrentLanguage.id]); const getBlogsData = async () => { try { setIsLoading(true); const res = await getBlogsApi.getBlogs({ slug: slug, views: 1 }); setBlogData(res?.data?.data?.data[0]); const title = res?.data?.data?.data[0]?.title; dispatch( setBreadcrumbPath([ { name: t("ourBlogs"), slug: "/blogs", }, { name: truncate(title, 30), }, ]) ); setRelatedBlogs(res?.data?.other_blogs); } catch (error) { console.log(error); } finally { setIsLoading(false); } }; const handleCopyUrl = async () => { try { await navigator.clipboard.writeText(currentUrl); toast(t("copyToClipboard")); } catch (error) { console.error("Error copying to clipboard:", error); } }; return (
{isLoading ? (
) : blogData ? (

{blogData?.translated_title || blogData?.title}

{admin?.name}

{t("views")}: {blogData?.views}
{t("postedOn")}: {formatDateMonthYear(blogData?.created_at)}
{parse( blogData?.translated_description || blogData?.description || "" )}
{t("shareThis")}
{blogData?.translated_tags && (
{blogData?.translated_tags?.map((e) => ( {e} ))}
)}
) : (
)}

{t("relatedArticle")}

{relatedBlogs && relatedBlogs?.map((blog, index) => (
))}
); }; export default BlogDetailPage;