import React, { useState, useEffect } from "react"; import { Link, useParams } from "react-router-dom"; import { useLanguage } from "../context/LanguageContext"; import { BlogPost, blogService } from "../services/blog.service"; import { format } from "date-fns"; import { tr } from "date-fns/locale"; interface PostData { image?: string; author?: { id: string; name: string; avatar?: string; }; } const BlogDetail: React.FC = () => { const { id } = useParams<{ id: string }>(); const { language, setLanguage, t } = useLanguage(); const [blogPost, setBlogPost] = useState(null); const [postData, setPostData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchBlogPost = async () => { setLoading(true); setError(null); try { if (id) { const response = await blogService.getPostBySlug(id); setBlogPost(response); setPostData({ image: response.coverImage, author: response.author, }); } else { setError("Blog post ID is missing."); } } catch (error: any) { setError(error.message || "Failed to fetch blog post."); } finally { setLoading(false); } }; fetchBlogPost(); }, [id]); if (loading) { return (

Loading...

); } if (error) { return (

Error: {error}

); } if (!blogPost || !postData) { return (

{t("blog.notFound")}

); } return (
← {t("blog.backToBlog")} {postData.image && ( {t(blogPost.title)} )}

{t(blogPost.title)}

{postData.author?.name}
{blogPost.publishedAt && format(new Date(blogPost.publishedAt), "dd MMM yyyy", { locale: tr, })}
); }; export default BlogDetail;