feat: refactor user preferences management

- Marked all user preferences actions as complete in TODO.md.
- Updated `user-preferences-client.ts` to remove outdated mutation methods, now handled by server actions.
- Deleted unused API routes for column visibility, kanban filters, and view preferences.
- Refactored `UserPreferencesContext.tsx` to utilize server actions for updates, improving performance with `useTransition`.
This commit is contained in:
Julien Froidefond
2025-09-18 13:10:04 +02:00
parent cece09d150
commit aeb4e17939
7 changed files with 347 additions and 270 deletions

View File

@@ -1,28 +0,0 @@
import { NextRequest, NextResponse } from 'next/server';
import { userPreferencesService } from '@/services/user-preferences';
/**
* PATCH /api/user-preferences/column-visibility - Met à jour partiellement la visibilité des colonnes
*/
export async function PATCH(request: NextRequest) {
try {
const updates = await request.json();
const current = await userPreferencesService.getColumnVisibility();
await userPreferencesService.saveColumnVisibility({ ...current, ...updates });
return NextResponse.json({
success: true,
message: 'Visibilité des colonnes mise à jour avec succès'
});
} catch (error) {
console.error('Erreur lors de la mise à jour de la visibilité des colonnes:', error);
return NextResponse.json(
{
success: false,
error: 'Erreur lors de la mise à jour de la visibilité des colonnes'
},
{ status: 500 }
);
}
}

View File

@@ -1,76 +0,0 @@
import { NextRequest, NextResponse } from 'next/server';
import { userPreferencesService } from '@/services/user-preferences';
/**
* GET /api/user-preferences/kanban-filters - Récupère les filtres Kanban
*/
export async function GET() {
try {
const filters = await userPreferencesService.getKanbanFilters();
return NextResponse.json({
success: true,
data: filters
});
} catch (error) {
console.error('Erreur lors de la récupération des filtres Kanban:', error);
return NextResponse.json(
{
success: false,
error: 'Erreur lors de la récupération des filtres Kanban'
},
{ status: 500 }
);
}
}
/**
* PUT /api/user-preferences/kanban-filters - Met à jour les filtres Kanban
*/
export async function PUT(request: NextRequest) {
try {
const filters = await request.json();
await userPreferencesService.saveKanbanFilters(filters);
return NextResponse.json({
success: true,
message: 'Filtres Kanban sauvegardés avec succès'
});
} catch (error) {
console.error('Erreur lors de la sauvegarde des filtres Kanban:', error);
return NextResponse.json(
{
success: false,
error: 'Erreur lors de la sauvegarde des filtres Kanban'
},
{ status: 500 }
);
}
}
/**
* PATCH /api/user-preferences/kanban-filters - Met à jour partiellement les filtres Kanban
*/
export async function PATCH(request: NextRequest) {
try {
const updates = await request.json();
const current = await userPreferencesService.getKanbanFilters();
await userPreferencesService.saveKanbanFilters({ ...current, ...updates });
return NextResponse.json({
success: true,
message: 'Filtres Kanban mis à jour avec succès'
});
} catch (error) {
console.error('Erreur lors de la mise à jour des filtres Kanban:', error);
return NextResponse.json(
{
success: false,
error: 'Erreur lors de la mise à jour des filtres Kanban'
},
{ status: 500 }
);
}
}

View File

@@ -1,28 +0,0 @@
import { NextRequest, NextResponse } from 'next/server';
import { userPreferencesService } from '@/services/user-preferences';
/**
* PATCH /api/user-preferences/view-preferences - Met à jour partiellement les préférences de vue
*/
export async function PATCH(request: NextRequest) {
try {
const updates = await request.json();
const current = await userPreferencesService.getViewPreferences();
await userPreferencesService.saveViewPreferences({ ...current, ...updates });
return NextResponse.json({
success: true,
message: 'Préférences de vue mises à jour avec succès'
});
} catch (error) {
console.error('Erreur lors de la mise à jour des préférences de vue:', error);
return NextResponse.json(
{
success: false,
error: 'Erreur lors de la mise à jour des préférences de vue'
},
{ status: 500 }
);
}
}