import React, { useState, useEffect } from 'react' import { Link, useParams } from 'react-router-dom' import { showDbDateAsIs } from '@/utils/dateUtils' import { BlogPost } from '@/proxy/blog/blog' import { blogService } from '@/services/blog.service' import { useLocalization } from '@/utils/hooks/useLocalization' import { useStoreState } from '@/store/store' import { ROUTES_ENUM } from '@/routes/route.constant' import { Helmet } from 'react-helmet' import { Loading } from '@/components/shared' import { APP_NAME } from '@/constants/app.constant' interface PostData { image?: string author?: string } const BlogDetail: React.FC = () => { const { id } = useParams<{ id: string }>() const { translate } = useLocalization() const { currentLang } = useStoreState((state) => state.locale) 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 (
) } if (error) { return (

Error: {error}

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

{translate('::Public.blog.notFound')}

) } return (
← {translate('::App.BlogManagement')} {postData.image && ( {translate('::Public.' )}

{translate('::Public.' + blogPost.title)}

{postData.author}
{blogPost.publishedAt && showDbDateAsIs(blogPost.publishedAt)}
) } export default BlogDetail