
import { Metadata } from 'next';
import DocumentClient from './DocumentClient';
import { adminDb } from '@/lib/firebase-admin';

type Props = {
    params: Promise<{ id: string }>;
    searchParams: Promise<{ [key: string]: string | string[] | undefined }>;
};

export async function generateMetadata(
    { params }: Props
): Promise<Metadata> {
    // await params because it's a Promise in Next.js 15+ (though we are on 14/15 transition, treating as async is safer)
    const { id } = await params;

    // Handle "new-" or "daily-" virtual paths quickly
    if (id.startsWith('new-')) {
        return {
            title: '새 문서 - InsuWiki',
            description: '새로운 지식을 작성해보세요.',
        };
    }

    try {
        const docRef = adminDb.collection('documents').doc(id);
        const docSnap = await docRef.get();

        if (!docSnap.exists) {
            return {
                title: '문서를 찾을 수 없음 - InsuWiki',
                description: '존재하지 않거나 삭제된 문서입니다.',
            };
        }

        const data = docSnap.data();
        const isPublic = data?.visibility === 'public';

        if (!isPublic) {
            return {
                title: '비공개 문서 - InsuWiki',
                description: '이 문서는 비공개 상태입니다.',
            };
        }

        return {
            title: `${data?.title} - InsuWiki`,
            description: data?.content?.slice(0, 150) || '내용 없음',
            openGraph: {
                title: `${data?.title} - InsuWiki`,
                description: data?.content?.slice(0, 150) || '내용 없음',
                type: 'article',
            },
        };
    } catch (error) {
        console.error('Error generating metadata:', error);
        return {
            title: 'InsuWiki',
            description: '보험 전문가를 위한 집단지성 위키',
        };
    }
}

export default async function Page({ params }: Props) {
    const resolvedParams = await params;
    return <DocumentClient id={resolvedParams.id} />;
}
