import { NextResponse } from 'next/server';
import { cookies } from 'next/headers';
import { serverApiClient } from '@/utils/serverApiClient';

// Cache sidebar menu for 10 minutes
export const revalidate = 600;
export const dynamic = 'force-dynamic'; // Uses cookies for auth

/**
 * Get sidebar menu (server-side with caching)
 * Automatically includes auth token from cookies
 */
export async function GET() {
  try {
    // Check authentication first
    const cookieStore = await cookies();
    const token = cookieStore.get('token')?.value;

    if (!token) {
      console.log('❌ No auth token found in cookies');
      return NextResponse.json(
        {
          success: false,
          message: 'Authentication required',
          data: [], // Return empty array instead of undefined
        },
        { status: 401 }
      );
    }

    console.log('✅ Token found, fetching sidebar menu...');
    
    const result = await serverApiClient('sidebar-menu', {
      method: 'GET',
      revalidate: 600, // Cache for 10 minutes
    });

    console.log('📊 API Response:', result);

    if (!result.success) {
      console.log('❌ API call failed:', result.message);
      return NextResponse.json(
        {
          success: false,
          message: result.message || 'Failed to fetch sidebar menu',
          data: [], // Return empty array
        },
        { status: 401 }
      );
    }

    console.log('✅ Returning data:', result.data);

    return NextResponse.json(
      {
        success: true,
        data: result.data,
      },
      {
        headers: {
          'Cache-Control': 'private, s-maxage=600, stale-while-revalidate=1200',
        },
      }
    );
  } catch (error: any) {
    console.error('❌ Error fetching sidebar menu:', error);
    return NextResponse.json(
      {
        success: false,
        message: error.message || 'Failed to fetch sidebar menu',
        data: [], // Return empty array
      },
      { status: 500 }
    );
  }
}
