feat: implement project ignore list for Jira synchronization
- Updated `JiraConfigForm` to include an input for ignored projects, allowing users to specify projects to exclude from synchronization. - Enhanced `JiraService` with a method to filter out tasks from ignored projects, improving task management. - Modified user preferences to store ignored projects, ensuring persistence across sessions. - Updated API routes to handle ignored projects in configuration, enhancing overall functionality. - Marked the corresponding task as complete in TODO.md.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { createJiraService } from '@/services/jira';
|
||||
import { createJiraService, JiraService } from '@/services/jira';
|
||||
import { userPreferencesService } from '@/services/user-preferences';
|
||||
|
||||
/**
|
||||
* Route POST /api/jira/sync
|
||||
@@ -7,11 +8,27 @@ import { createJiraService } from '@/services/jira';
|
||||
*/
|
||||
export async function POST() {
|
||||
try {
|
||||
const jiraService = createJiraService();
|
||||
// Essayer d'abord la config depuis la base de données
|
||||
const jiraConfig = await userPreferencesService.getJiraConfig();
|
||||
|
||||
let jiraService: JiraService | null = null;
|
||||
|
||||
if (jiraConfig.enabled && jiraConfig.baseUrl && jiraConfig.email && jiraConfig.apiToken) {
|
||||
// Utiliser la config depuis la base de données
|
||||
jiraService = new JiraService({
|
||||
baseUrl: jiraConfig.baseUrl,
|
||||
email: jiraConfig.email,
|
||||
apiToken: jiraConfig.apiToken,
|
||||
ignoredProjects: jiraConfig.ignoredProjects || []
|
||||
});
|
||||
} else {
|
||||
// Fallback sur les variables d'environnement
|
||||
jiraService = createJiraService();
|
||||
}
|
||||
|
||||
if (!jiraService) {
|
||||
return NextResponse.json(
|
||||
{ error: 'Configuration Jira manquante. Vérifiez les variables d\'environnement JIRA_BASE_URL, JIRA_EMAIL et JIRA_API_TOKEN.' },
|
||||
{ error: 'Configuration Jira manquante. Configurez Jira dans les paramètres ou vérifiez les variables d\'environnement.' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
@@ -64,7 +81,23 @@ export async function POST() {
|
||||
*/
|
||||
export async function GET() {
|
||||
try {
|
||||
const jiraService = createJiraService();
|
||||
// Essayer d'abord la config depuis la base de données
|
||||
const jiraConfig = await userPreferencesService.getJiraConfig();
|
||||
|
||||
let jiraService: JiraService | null = null;
|
||||
|
||||
if (jiraConfig.enabled && jiraConfig.baseUrl && jiraConfig.email && jiraConfig.apiToken) {
|
||||
// Utiliser la config depuis la base de données
|
||||
jiraService = new JiraService({
|
||||
baseUrl: jiraConfig.baseUrl,
|
||||
email: jiraConfig.email,
|
||||
apiToken: jiraConfig.apiToken,
|
||||
ignoredProjects: jiraConfig.ignoredProjects || []
|
||||
});
|
||||
} else {
|
||||
// Fallback sur les variables d'environnement
|
||||
jiraService = createJiraService();
|
||||
}
|
||||
|
||||
if (!jiraService) {
|
||||
return NextResponse.json(
|
||||
|
||||
Reference in New Issue
Block a user