|
import React, { useEffect, useState } from "react"; |
|
import { useParams, useNavigate } from "react-router-dom"; |
|
import BlogPageSection from "../sections/blogs/BlogPageSection"; |
|
import blogData from "../data/blogdata"; |
|
|
|
const BlogPage = () => { |
|
const { slug } = useParams(); |
|
const navigate = useNavigate(); |
|
const [post, setPost] = useState(null); |
|
const [error, setError] = useState(null); |
|
|
|
useEffect(() => { |
|
|
|
if (!/^\d+$/.test(slug)) { |
|
setError("Invalid blog slug. Redirecting..."); |
|
setTimeout(() => navigate("/error"), 2000); |
|
return; |
|
} |
|
|
|
|
|
const foundPost = blogData.find((item) => item.id === parseInt(slug, 10)); |
|
if (!foundPost) { |
|
setError("Blog post not found. Redirecting..."); |
|
setTimeout(() => navigate("/blogs"), 2000); |
|
} else { |
|
setPost(foundPost); |
|
} |
|
}, [slug, navigate]); |
|
|
|
|
|
if (error) return <div>{error}</div>; |
|
|
|
|
|
if (!post) { |
|
return <div>Loading...</div>; |
|
} |
|
|
|
|
|
return ( |
|
<div> |
|
<BlogPageSection post={post} /> {/* Pass the post data to BlogPageSection */} |
|
</div> |
|
); |
|
}; |
|
|
|
export default BlogPage; |