feat: jira config in database
This commit is contained in:
80
hooks/useJiraConfig.ts
Normal file
80
hooks/useJiraConfig.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
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
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user