'use client'

import { usePathname, useRouter } from 'next/navigation'
import { useEffect } from 'react'
import AdminSidebar from '@/components/admin/AdminSidebar'
import AdminHeader from '@/components/admin/AdminHeader'
import { ToastProvider } from '@/components/admin/Toast'
import { getAdminToken, isTokenExpired, isRememberMeEnabled, refreshAccessToken, clearAdminAuth } from '@/lib/auth'

export default function AdminLayout({
  children,
}: {
  children: React.ReactNode
}) {
  const pathname = usePathname()
  const router = useRouter()
  
  // Don't show sidebar/header on login page
  const isLoginPage = pathname === '/admin' || pathname === '/admin/forgot-password'

  // Check token expiration on mount and periodically
  useEffect(() => {
    if (isLoginPage) return

    const checkTokenExpiration = async () => {
      const token = getAdminToken()
      if (!token) {
        router.push('/admin')
        return
      }

      if (isTokenExpired(token)) {
        // If remember me is enabled, try to refresh the token
        if (isRememberMeEnabled()) {
          const refreshed = await refreshAccessToken()
          if (!refreshed) {
            // Refresh failed, logout user
            clearAdminAuth()
            router.push('/admin')
          }
        } else {
          // Remember me not enabled, logout user
          clearAdminAuth()
          router.push('/admin')
        }
      }
    }

    // Check immediately
    checkTokenExpiration()

    // Check every 5 minutes
    const interval = setInterval(checkTokenExpiration, 5 * 60 * 1000)

    return () => clearInterval(interval)
  }, [isLoginPage, router])

  if (isLoginPage) {
    return <ToastProvider>{children}</ToastProvider>
  }

  return (
    <ToastProvider>
      <div className="min-h-screen bg-gradient-to-br from-gray-900 via-gray-800 to-gray-900">
        <AdminHeader />
        <div className="flex relative">
          {/* Sidebar - Fixed on the left */}
          <AdminSidebar />
          {/* Main content - Offset for sidebar */}
          <main className="flex-1 p-6 ml-64 mt-16 min-h-[calc(100vh-4rem)]">
            {children}
          </main>
        </div>
      </div>
    </ToastProvider>
  )
}
