feat: integrate Jira ticket linking in TaskCard
- Added functionality to generate Jira ticket URLs based on user preferences, enhancing task interactivity. - Updated UserPreferences to include Jira configuration, ensuring seamless integration with Jira settings. - Refactored TaskCard to conditionally render Jira links, improving user experience when interacting with Jira tasks.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { TaskStatus, KanbanFilters, ViewPreferences, ColumnVisibility, UserPreferences } from '@/lib/types';
|
||||
import { TaskStatus, KanbanFilters, ViewPreferences, ColumnVisibility, UserPreferences, JiraConfig } from '@/lib/types';
|
||||
import { prisma } from './database';
|
||||
import { getConfig } from '@/lib/config';
|
||||
|
||||
// Valeurs par défaut
|
||||
const DEFAULT_PREFERENCES: UserPreferences = {
|
||||
@@ -21,6 +22,9 @@ const DEFAULT_PREFERENCES: UserPreferences = {
|
||||
},
|
||||
columnVisibility: {
|
||||
hiddenStatuses: []
|
||||
},
|
||||
jiraConfig: {
|
||||
enabled: false
|
||||
}
|
||||
};
|
||||
|
||||
@@ -161,31 +165,51 @@ class UserPreferencesService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère la configuration Jira depuis les variables d'environnement
|
||||
*/
|
||||
async getJiraConfig(): Promise<JiraConfig> {
|
||||
try {
|
||||
const config = getConfig();
|
||||
return {
|
||||
baseUrl: config.integrations.jira.baseUrl,
|
||||
email: config.integrations.jira.email,
|
||||
enabled: config.integrations.jira.enabled
|
||||
};
|
||||
} catch (error) {
|
||||
console.warn('Erreur lors de la récupération de la config Jira:', error);
|
||||
return DEFAULT_PREFERENCES.jiraConfig;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère toutes les préférences utilisateur
|
||||
*/
|
||||
async getAllPreferences(): Promise<UserPreferences> {
|
||||
const [kanbanFilters, viewPreferences, columnVisibility] = await Promise.all([
|
||||
const [kanbanFilters, viewPreferences, columnVisibility, jiraConfig] = await Promise.all([
|
||||
this.getKanbanFilters(),
|
||||
this.getViewPreferences(),
|
||||
this.getColumnVisibility()
|
||||
this.getColumnVisibility(),
|
||||
this.getJiraConfig()
|
||||
]);
|
||||
|
||||
return {
|
||||
kanbanFilters,
|
||||
viewPreferences,
|
||||
columnVisibility
|
||||
columnVisibility,
|
||||
jiraConfig
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Sauvegarde toutes les préférences utilisateur
|
||||
* Sauvegarde toutes les préférences utilisateur (jiraConfig ignorée car elle vient des env vars)
|
||||
*/
|
||||
async saveAllPreferences(preferences: UserPreferences): Promise<void> {
|
||||
await Promise.all([
|
||||
this.saveKanbanFilters(preferences.kanbanFilters),
|
||||
this.saveViewPreferences(preferences.viewPreferences),
|
||||
this.saveColumnVisibility(preferences.columnVisibility)
|
||||
// jiraConfig n'est pas sauvegardée car elle vient des variables d'environnement
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user