81 lines
2.4 KiB
TypeScript
81 lines
2.4 KiB
TypeScript
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<JiraConfig | null>(null);
|
|
const [isLoading, setIsLoading] = useState(true);
|
|
const [error, setError] = useState<string | null>(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
|
|
});
|
|
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
|
|
};
|
|
}
|