'use client'; import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/Button'; import { Badge } from '@/components/ui/Badge'; import { useJiraConfig } from '@/hooks/useJiraConfig'; export function JiraConfigForm() { const { config, isLoading: configLoading, saveConfig, deleteConfig } = useJiraConfig(); const [formData, setFormData] = useState({ baseUrl: '', email: '', apiToken: '', ignoredProjects: [] as string[] }); const [isSubmitting, setIsSubmitting] = useState(false); const [message, setMessage] = useState<{ type: 'success' | 'error', text: string } | null>(null); // Charger les données existantes dans le formulaire useEffect(() => { if (config) { setFormData({ baseUrl: config.baseUrl || '', email: config.email || '', apiToken: config.apiToken || '', ignoredProjects: config.ignoredProjects || [] }); } }, [config]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); setMessage(null); try { const result = await saveConfig(formData); if (result.success) { setMessage({ type: 'success', text: result.message }); } else { setMessage({ type: 'error', text: result.message }); } } catch (error) { setMessage({ type: 'error', text: error instanceof Error ? error.message : 'Erreur lors de la sauvegarde de la configuration' }); } finally { setIsSubmitting(false); } }; const handleDelete = async () => { if (!confirm('Êtes-vous sûr de vouloir supprimer la configuration Jira ?')) { return; } setIsSubmitting(true); setMessage(null); try { const result = await deleteConfig(); if (result.success) { setFormData({ baseUrl: '', email: '', apiToken: '', ignoredProjects: [] }); setMessage({ type: 'success', text: result.message }); } else { setMessage({ type: 'error', text: result.message }); } } catch (error) { setMessage({ type: 'error', text: error instanceof Error ? error.message : 'Erreur lors de la suppression de la configuration' }); } finally { setIsSubmitting(false); } }; const isJiraConfigured = config?.enabled && (config?.baseUrl || config?.email); const isLoading = configLoading || isSubmitting; return (
{isJiraConfigured ? 'Jira est configuré et prêt à être utilisé' : 'Jira n\'est pas configuré' }
{config?.baseUrl || 'Non définie'}
{config?.email || 'Non défini'}
{config?.apiToken ? '••••••••' : 'Non défini'}
{project}
))}
1. URL de base: Votre domaine Jira Cloud (ex: https://monentreprise.atlassian.net)
2. Email: L'email de votre compte Jira/Atlassian
3. Token API: Créez un token depuis votre profil Atlassian :
Note: Ces variables doivent être configurées dans l'environnement du serveur (JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN)