"use client"; import { useState, useEffect } from "react"; import { Trash2, Edit, Copy, QrCode } from "lucide-react"; import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Client } from "@/lib/types/client"; import QRCodeDisplay from "./QRCodeDisplay"; interface ClientListProps { onEdit: (client: Client) => void; onRefresh: () => void; } export default function ClientList({ onEdit, onRefresh }: ClientListProps) { const [clients, setClients] = useState([]); const [loading, setLoading] = useState(true); const [selectedClient, setSelectedClient] = useState(null); const [showQR, setShowQR] = useState(null); useEffect(() => { fetchClients(); }, []); const fetchClients = async () => { try { const adminPassword = localStorage.getItem("adminPassword") || ""; const response = await fetch("/api/admin/clients", { headers: { Authorization: `Bearer ${adminPassword}`, }, }); if (response.ok) { const data = await response.json(); setClients(data); } else if (response.status === 404) { // API non disponible (mode statique/APK) // Afficher un message d'information console.warn("API non disponible en mode statique"); setClients([]); } else { console.error("Erreur lors du chargement des clients:", response.status); setClients([]); } } catch (error) { // Erreur réseau (API non disponible en mode statique/APK) console.warn("API non disponible (mode statique/APK). Les fonctionnalités admin nécessitent un serveur."); setClients([]); } finally { setLoading(false); } }; const handleDelete = async (id: string) => { if (!confirm("Êtes-vous sûr de vouloir supprimer ce client ?")) { return; } try { const adminPassword = localStorage.getItem("adminPassword") || ""; const response = await fetch(`/api/admin/clients/${id}`, { method: "DELETE", headers: { Authorization: `Bearer ${adminPassword}`, }, }); if (response.ok) { fetchClients(); onRefresh(); } } catch (error) { console.error("Erreur lors de la suppression:", error); } }; const getClientUrl = (token: string) => { const baseUrl = typeof window !== "undefined" ? window.location.origin : ""; return `${baseUrl}/accueil?token=${token}`; }; if (loading) { return (

Chargement...

); } if (clients.length === 0) { return (

Aucun client pour le moment.

⚠️ Mode hors ligne

L'application admin nécessite une connexion au serveur pour fonctionner. Les API routes ne sont pas disponibles en mode statique.

); } return (
{clients.map((client) => (
{client.email}

Bungalow {client.bungalowNumber}

WiFi: {client.wifiName}
Message:{" "} {client.gerantMessage.substring(0, 50)} {client.gerantMessage.length > 50 ? "..." : ""}
Créé le {new Date(client.createdAt).toLocaleDateString("fr-FR")}
{showQR === client.id && (
)}
))}
); }