import { useState, useEffect } from 'react'; import { jiraConfigClient, SaveJiraConfigRequest } from '@/clients/jira-config-client'; import { JiraConfig } from '@/lib/types'; export function useJiraConfig() { const [config, setConfig] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); // Charger la config au montage useEffect(() => { loadConfig(); }, []); const loadConfig = async () => { try { setIsLoading(true); setError(null); const jiraConfig = await jiraConfigClient.getJiraConfig(); setConfig(jiraConfig); } catch (err) { console.error('Erreur lors du chargement de la config Jira:', err); setError('Erreur lors du chargement de la configuration'); } finally { setIsLoading(false); } }; const saveConfig = async (configData: SaveJiraConfigRequest) => { try { setError(null); const response = await jiraConfigClient.saveJiraConfig(configData); if (response.success) { setConfig(response.jiraConfig); return { success: true, message: response.message }; } else { setError('Erreur lors de la sauvegarde'); return { success: false, message: 'Erreur lors de la sauvegarde' }; } } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Erreur lors de la sauvegarde de la configuration'; setError(errorMessage); return { success: false, message: errorMessage }; } }; const deleteConfig = async () => { try { setError(null); const response = await jiraConfigClient.deleteJiraConfig(); if (response.success) { setConfig({ baseUrl: '', email: '', apiToken: '', enabled: false, projectKey: '', ignoredProjects: [] }); return { success: true, message: response.message }; } else { setError('Erreur lors de la suppression'); return { success: false, message: 'Erreur lors de la suppression' }; } } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Erreur lors de la suppression de la configuration'; setError(errorMessage); return { success: false, message: errorMessage }; } }; return { config, isLoading, error, saveConfig, deleteConfig, refetch: loadConfig }; }