import { connection } from 'next/server';
import { setRequestLocale } from 'next-intl/server';
import type { Metadata } from 'next';
import { redirect } from 'next/navigation';
import DashboardContent from '@/components/auth/DashboardContent';
import { createClient } from '@/lib/supabase/server';

// Force dynamic rendering to ensure auth checks run on every request
export const dynamic = 'force-dynamic';

type Props = {
  params: Promise<{ locale: string }>;
};

export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const { locale } = await params;

  const titles: Record<string, string> = {
    de: 'Dashboard | Damjan Savić',
    en: 'Dashboard | Damjan Savić',
    sr: 'Dashboard | Damjan Savić',
  };

  return {
    title: titles[locale] || titles.de,
    robots: {
      index: false,
      follow: false,
      googleBot: {
        index: false,
        follow: false,
      },
    },
  };
}

export default async function DashboardPage({ params }: Props) {
  // CRITICAL: Use connection() API to guarantee dynamic rendering in Next.js 15
  await connection();

  const { locale } = await params;
  setRequestLocale(locale);

  // Server-side auth check (defense-in-depth)
  const supabase = await createClient();
  const { data: { user } } = await supabase.auth.getUser();

  if (!user) {
    redirect(`/${locale}/login`);
  }

  return <DashboardContent />;
}
