import React, { useState, useEffect, useRef } from 'react'; import { useParams, useNavigate, Link } from 'react-router-dom'; import { useDispatch } from 'react-redux'; import { message } from 'antd'; import Lenis from "@studio-freight/lenis"; import { RiArrowLeftLine, RiCalendarLine, RiTimeLine, RiUserLine, RiHomeLine, RiArticleLine, RiShareLine, RiCloseLine, } from 'react-icons/ri'; import { RxHamburgerMenu } from 'react-icons/rx'; import { FaFacebook, FaInstagram, FaWhatsapp, FaCopy, FaLinkedin, FaTelegram } from "react-icons/fa"; import { FaXTwitter } from "react-icons/fa6"; import { getPublishedBlogs, getPublishedBlogsBySlug } from '../../features/Blog/Blog.js'; import Loader from '../../PozoApp/Components/Loader/PozoLoader'; import PozoAppLogo from '../../Images/PozoAppLogo.svg'; import "./BlogDetail.scss" import BlogExtras from "./BlogExtras.jsx"; import SEO from '../../Components/SEO/SEO.jsx'; const mainDirectory = import.meta.env.ENV_MAIN_BASE_URL const subDirectory = import.meta.env.ENV_BASE_URL const BlogDetail = () => { const { slug } = useParams(); const navigate = useNavigate(); const dispatch = useDispatch(); const [blog, setBlog] = useState(null); const [loading, setLoading] = useState(true); const [drawerOpen, setDrawerOpen] = useState(false); const [shareOpen, setShareOpen] = useState(false); const shareRef = useRef(null); console.log(blog, "blogblogblogblogblog") useEffect(() => { const handleClickOutside = (event) => { if (shareRef.current && !shareRef.current.contains(event.target)) { setShareOpen(false); } }; const handleEscKey = (event) => { if (event.key === 'Escape') { setShareOpen(false); } }; if (shareOpen) { document.addEventListener('mousedown', handleClickOutside); document.addEventListener('keydown', handleEscKey); } return () => { document.removeEventListener('mousedown', handleClickOutside); document.removeEventListener('keydown', handleEscKey); }; }, [shareOpen]); useEffect(() => { fetchBlogDetail(); }, [slug]); useEffect(() => { const lenis = new Lenis({ duration: 1, easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)), smoothWheel: true, smoothTouch: true, }); function raf(time) { lenis.raf(time); requestAnimationFrame(raf); } requestAnimationFrame(raf); return () => lenis.destroy(); }, []); const fetchBlogDetail = async () => { try { const response = await dispatch(getPublishedBlogsBySlug({ slug })).unwrap(); if (response?.data?.statusCode === 1) { const blogs = response.data.data?.[0]; setBlog(blogs); } else { message.error('Failed to load blog posts'); } setLoading(false); } catch (error) { console.error('Error fetching blog:', error); message.error('Failed to load blog post'); setLoading(false); } }; const handleBack = () => { navigate('/blog'); }; if (loading) { return ; } if (!blog) { return (
Blog post not found
); } const handleBackHome = () => { navigate(`${subDirectory}`); } const handleBackBlog = () => { navigate(`${subDirectory}blog`); } const handlePrivacyPolicy = () => { navigate(`${subDirectory}privacy-policy`); } const handleNavigateCookie = () => { navigate(`${subDirectory}cookie-policy`); } return ( <> {drawerOpen &&
setDrawerOpen(false)}>
}
{/* setDrawerOpen(false)}> */}
Home
{/* */} {/* setDrawerOpen(false)}> */}
Blog
{/* */}

{blog.BlogTitle}

{blog.BlogSubtitle}

{blog.Author || "Admin"}
{blog.CreatedDate && (
{(() => { if (!blog?.CreatedDate) return ''; const dateStr = blog.CreatedDate.split('T')[0]; // Get date part const [year, month, day] = dateStr.split('-'); const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; const monthName = months[parseInt(month) - 1]; return `${parseInt(day)} ${monthName} ${year}`; })()}
)} {/*
{blog.IsPublished === 'Y' ? 'Published' : 'Draft'}
*/}
{blog.HeaderImage && (
{blog.BlogTitle}
)}
{blog.BlogContent && blog.BlogContent.map((block, index) => { switch (block.type) { case 'header': case "oldHeader": const HeaderTag = `h${block.data.level || 2}`; return ( ); case 'paragraph': return (

); case 'list': if (block.data.style === 'checklist') { return (

    {block.data.items.map((item, i) => (
  • {item.content}
  • ))}
); } else if (block.data.style === 'ordered') { return (
    {block.data.items.map((item, i) => (
  1. {item.content}
  2. ))}
); } else { return (
    {block.data.items.map((item, i) => (
  • {item.content}
  • ))}
); } case "image": return (
{block.data.caption {block.data.caption && (

{block.data.caption}

)}
); case "separator": return (
); case "video": return (
{block.data.file?.url && (
); case "link": return ( ); case "quote": return (

{block.data.text}

{block.data.caption && ( {block.data.caption} )}
); case "code": return (
                                                {block.data.code}
                                            
); case "cta": return (

{block.data.heading}

{block.data.subheading}

{block.data.buttonText}
); case "email": return (

Subject: {block.data.subject}

); case "bookmark": return ( ); case "callout": return (
{block.data.emoji || "💡"}

{block.data.text}

); case "index": const IndexListTag = block.data.style === "numbered" ? "ol" : "ul"; return (

Table of Contents

{(block.data.items || []).map((item, i) => (
  • {item.title}
  • ))}
    ); default: return null; } })}
    {shareOpen && (
    Share to
    )}
    © 2025 PozoApp
    Privacy Policy
    Cookie Policy

    For queries contact us: Manager, No 51 Step Colony, Dharga,Hosur, Krishnagiri, Tamilnadu-635126, India

    ); }; export default BlogDetail;