import React, { useEffect, useMemo, useState } from 'react' import { Link, useParams } from 'react-router-dom' import { Helmet } from 'react-helmet' 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 { APP_NAME } from '@/constants/app.constant' import { translateLabel } from './designer' import { PublicPageLoader } from './shared' const CenteredMessage: React.FC<{ children: React.ReactNode }> = ({ children }) => (

{children}

) const BlogDetail: React.FC = () => { const { id } = useParams<{ id: string }>() const { translate } = useLocalization() const { currentLang } = useStoreState((state) => state.locale) const [blogPost, setBlogPost] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { const fetchBlogPost = async () => { setLoading(true) setError(null) if (!id) { setError(translateLabel(translate, 'Public.blog.notFound', 'Blog yazisi bulunamadi.')) setLoading(false) return } try { setBlogPost(await blogService.getPostBySlug(id)) } catch (fetchError) { console.error('Blog yazisi alinamadi:', fetchError) setError(translateLabel(translate, 'Public.blog.notFound', 'Blog yazisi bulunamadi.')) } finally { setLoading(false) } } fetchBlogPost() // `translate` yalnizca hata metni icin kullanilir; dil degisiminde yeniden istek atilmaz. // eslint-disable-next-line react-hooks/exhaustive-deps }, [id]) const title = blogPost ? translate('::Public.' + blogPost.title) : '' // Icerik anahtari yoksa `'::' + undefined` cevirisi "undefined" basiyordu. const content = useMemo(() => { if (!blogPost) { return '' } const contentKey = currentLang === 'tr' ? blogPost.contentTr : blogPost.contentEn return contentKey ? translate('::' + contentKey) : '' }, [blogPost, currentLang, translate]) if (loading) { return } if (error) { return {error} } if (!blogPost) { return {translate('::Public.blog.notFound')} } return (
← {translate('::App.BlogManagement')} {blogPost.coverImage && ( {title} )}

{title}

{blogPost.author} {showDbDateAsIs(blogPost.publishedAt || blogPost.creationTime)}
) } export default BlogDetail