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}
{blogPost.author}
{showDbDateAsIs(blogPost.publishedAt || blogPost.creationTime)}
)
}
export default BlogDetail