import { cookies } from 'next/headers'
import { getDb } from '@/server/db'
import { USER_AUTH_SQL } from '@/server/userAuthSql'
import HomeClient from '../HomeClient'
import { SESSION_ID_COOKIE } from '../_helpers/constants'
import type { UserInfo } from '../_helpers/types'

export default async function HomePageWrapper() {
    let userInfo: UserInfo | null = null
    try {
        const jar = cookies()
        const sessionId = jar.get(SESSION_ID_COOKIE)?.value
        if (sessionId) {
            const db = await getDb()
            const session = await db.get<{
                userId: string
            }>(
                USER_AUTH_SQL.selectSessionUserId,
                [sessionId]
            )
            if (session) {
                const user = await db.get<{
                    id: string
                    displayName: string
                    avatar: string | null
                }>(
                    `SELECT user_id AS id, display_name AS displayName, avatar_url AS avatar
                     FROM users
                     WHERE user_id = ?`,
                    [session.userId]
                )
                if (user) {
                    userInfo = {
                        nickname: user.displayName,
                        id: user.id,
                        avatarUrl: user.avatar || null,
                    }
                }
            }
        }
    } catch (error) {
        console.error('Failed to get user info:', error)
    }
    return <HomeClient initialUserInfo={userInfo} />
}

