"use client";

import { useEffect, useState } from "react";
import { useRouter } from "next/navigation";

export default function Home() {
  const router = useRouter();
  const [checked, setChecked] = useState(false);

  useEffect(() => {
    // Détecter si on est dans l'app admin
    let isAdminApp = false;
    
    if (typeof window !== "undefined") {
      const Capacitor = (window as any).Capacitor;
      
      // Méthode 1: Vérifier l'appId de Capacitor via le package name Android
      if (Capacitor) {
        try {
          const platform = Capacitor.getPlatform();
          
          if (platform === "android") {
            // En Android, on peut récupérer le package name via Capacitor.getApp()
            // APK admin: com.pensionmarama.admin
            // APK client: com.pensionmarama.app
            const App = Capacitor.Plugins?.App;
            if (App) {
              App.getInfo().then((info: any) => {
                // Le package name est dans info.id ou info.appId
                const appId = info.id || info.appId || "";
                if (appId.includes("admin")) {
                  isAdminApp = true;
                }
              }).catch(() => {
                // Fallback si getInfo() échoue
              });
            }
            
            // Fallback: Vérifier le localStorage (si adminPassword existe, c'est admin)
            const hasAdminPassword = localStorage.getItem("adminPassword") !== null;
            if (hasAdminPassword) {
              isAdminApp = true;
            }
          } else {
            // Pour web, vérifier le localStorage
            const hasAdminPassword = localStorage.getItem("adminPassword") !== null;
            if (hasAdminPassword) {
              isAdminApp = true;
            }
          }
        } catch (e) {
          // En cas d'erreur, fallback sur les autres méthodes
          console.warn("Erreur lors de la détection Capacitor:", e);
        }
      }
      
      // Méthode 2: Vérifier le path ou query string (pour web)
      if (!isAdminApp && (
        window.location.pathname.startsWith("/admin") || 
        window.location.search.includes("admin=true")
      )) {
        isAdminApp = true;
      }
      
      // Méthode 3: Si on est dans Capacitor Android sans adminPassword,
      // on considère que c'est l'app client (redirige vers /accueil)
      // Sauf si le pathname commence par /admin
    }

    if (isAdminApp) {
      // Vérifier si l'admin est connecté
      const adminPassword = typeof window !== "undefined" ? 
        localStorage.getItem("adminPassword") : null;
      
      if (adminPassword) {
        // Tester la connexion (si API disponible)
        fetch("/api/admin/clients", {
          headers: {
            Authorization: `Bearer ${adminPassword}`,
          },
        })
          .then((res) => {
            if (res.ok) {
              router.replace("/admin");
            } else if (res.status === 404) {
              // API non disponible (mode statique) - accepter quand même
              router.replace("/admin");
            } else {
              localStorage.removeItem("adminPassword");
              router.replace("/admin/login");
            }
          })
          .catch(() => {
            // Erreur réseau (API non disponible en mode statique)
            // Accepter quand même et rediriger vers /admin
            router.replace("/admin");
          });
      } else {
        // Pas de mot de passe, rediriger vers login
        router.replace("/admin/login");
      }
    } else {
      // App client normale
      router.replace("/accueil");
    }
    setChecked(true);
  }, [router]);

  if (!checked) {
    return (
      <div className="flex items-center justify-center min-h-screen bg-background dark:bg-background-dark">
        <div className="text-center">
          <p className="text-gray-600 dark:text-gray-400">Chargement...</p>
        </div>
      </div>
    );
  }

  return null;
}

