feat: update settings page and theme context for user preferences

- Replaced `SettingsPageClient` with `SettingsIndexPageClient` to fetch and display user preferences on the settings page.
- Integrated `userPreferencesService` to retrieve all preferences asynchronously, enhancing data handling.
- Refactored theme management in `ThemeContext` to use `updateViewPreferences` for saving theme changes, improving error handling and user feedback.
- Marked the task for creating dedicated config sub-pages as complete in TODO.md.
This commit is contained in:
Julien Froidefond
2025-09-18 13:50:49 +02:00
parent 93e72013f9
commit 8ce1eef6ae
10 changed files with 720 additions and 9 deletions

View File

@@ -1,7 +1,7 @@
'use client';
import { createContext, useContext, useEffect, useState, ReactNode } from 'react';
import { userPreferencesClient } from '@/clients/user-preferences-client';
import { updateViewPreferences } from '@/actions/preferences';
type Theme = 'light' | 'dark';
@@ -38,11 +38,14 @@ export function ThemeProvider({ children, initialTheme = 'dark' }: ThemeProvider
const newTheme = theme === 'dark' ? 'light' : 'dark';
setThemeState(newTheme);
// Sauvegarder en base de façon asynchrone via le client
// Sauvegarder en base de façon asynchrone via server action
try {
await userPreferencesClient.updateViewPreferences({
const result = await updateViewPreferences({
theme: newTheme
});
if (!result.success) {
console.error('Erreur lors de la sauvegarde du thème:', result.error);
}
} catch (error) {
console.error('Erreur lors de la sauvegarde du thème:', error);
}
@@ -51,11 +54,14 @@ export function ThemeProvider({ children, initialTheme = 'dark' }: ThemeProvider
const setTheme = async (newTheme: Theme) => {
setThemeState(newTheme);
// Sauvegarder en base de façon asynchrone via le client
// Sauvegarder en base de façon asynchrone via server action
try {
await userPreferencesClient.updateViewPreferences({
const result = await updateViewPreferences({
theme: newTheme
});
if (!result.success) {
console.error('Erreur lors de la sauvegarde du thème:', result.error);
}
} catch (error) {
console.error('Erreur lors de la sauvegarde du thème:', error);
}