'use client'; import { useQuery } from '@tanstack/react-query'; import { AlertCircle, ArrowLeft, Calendar, ChevronLeft, ChevronRight, Loader2, User } from 'lucide-react'; import Image from 'next/image'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { getPost } from '@/api/posts'; import { getProfile } from '@/api/profile'; import CommentList from '@/components/comment/CommentList'; import MarkdownRenderer from '@/components/post/MarkdownRenderer'; import TOC from '@/components/post/TOC'; import StatusBadge from '@/components/ui/StatusBadge'; import Surface from '@/components/ui/Surface'; import WindowSurface from '@/components/ui/WindowSurface'; import { Post } from '@/types'; interface PostDetailClientProps { slug: string; initialPost: Post; } const getPostErrorInfo = (error: unknown) => { if (typeof error === 'object' && error !== null && 'response' in error) { const response = (error as { response?: { status?: number; data?: { message?: string } } }).response; return { status: response?.status, message: response?.data?.message, }; } return { status: undefined, message: error instanceof Error ? error.message : undefined, }; }; export default function PostDetailClient({ slug, initialPost }: PostDetailClientProps) { const router = useRouter(); const { data: post, isLoading: isPostLoading, error } = useQuery({ queryKey: ['post', slug], queryFn: () => getPost(slug), enabled: !!slug, initialData: initialPost, }); const { data: profile } = useQuery({ queryKey: ['profile'], queryFn: getProfile, }); if (isPostLoading) { return (
{isAuthError ? '로그인이 필요하거나 비공개 게시글일 수 있습니다.' : errorMessage}