import { useState } from 'react'; import { Layout } from '@/components/Layout'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { useToast } from '@/hooks/use-toast'; import { Plus, Trash2, Key, Copy } from 'lucide-react'; import { mockApiKeys, ApiKey, ApiKeyCreateAnswere, ApiKeyCreateResponse, useKeyApiUpdater} from '@/data/mockData'; import api from '@/lib/axios'; const ApiKeys = () => { const [apiKeys, setApiKeys] = useState([]); const { isLoading, error, fetchAndApplyApiKey } = useKeyApiUpdater(setApiKeys); const [newKeyName, setNewKeyName] = useState(''); const { toast } = useToast(); const handleCreateKey = () => { const currentName = newKeyName.trim(); if (!currentName) { toast({ title: 'Erreur', description: 'Le nom de la clé API est requis.', variant: 'destructive', }); return; } const createApiKey = async () => { try { const response = await api.post(`/createApiKey`, { key_name: currentName }); const newKey: ApiKey = { id: response.data.id, key_name: response.data.key_name, key: response.data.key, }; setApiKeys([...apiKeys, newKey]); setNewKeyName(''); toast({ title: 'Clé API créée', description: `La clé "${currentName}" a été créée avec succès.`, }); } catch (err: any) { console.error("Erreur lors de la mise à jour: Ajouter /api devant toutes tes routes dans ton routeur Go.", err); } } createApiKey(); }; const handleDeleteKey = (id: number, name: string) => { setApiKeys(apiKeys.filter((key) => key.id !== id)); toast({ title: 'Clé API supprimée', description: `La clé "${name}" a été supprimée.`, variant: 'destructive', }); }; const handleCopyKey = (key: string) => { navigator.clipboard.writeText(key); toast({ title: 'Copié', description: 'La clé API a été copiée dans le presse-papier.', }); }; return (

Clés API

Gérez les clés API pour les services tiers

{/* Create new API key */} Créer une nouvelle clé API
setNewKeyName(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && handleCreateKey()} />
{/* API keys list */} Clés API existantes {apiKeys.length === 0 ? (

Aucune clé API n'a été créée.

) : (
Nom Clé Actions {apiKeys.map((apiKey) => ( {apiKey.key_name}
{apiKey.key}
))}
)}
); }; export default ApiKeys;