diff --git a/docs/api.md b/docs/api.md index db34ae0..e3eec0c 100644 --- a/docs/api.md +++ b/docs/api.md @@ -111,7 +111,13 @@ ### GET /api/preferences - **Description** : Récupération des préférences utilisateur -- **Réponse** : `Preferences` +- **Réponse** : `{ showThumbnails: boolean, cacheMode: "memory" | "file", showOnlyUnread: boolean, debug: boolean }` + +### PUT /api/preferences + +- **Description** : Mise à jour des préférences utilisateur +- **Body** : `{ showThumbnails?: boolean, cacheMode?: "memory" | "file", showOnlyUnread?: boolean, debug?: boolean }` +- **Réponse** : `{ showThumbnails: boolean, cacheMode: "memory" | "file", showOnlyUnread: boolean, debug: boolean }` ## 🧪 Test diff --git a/src/components/settings/ClientSettings.tsx b/src/components/settings/ClientSettings.tsx index dfe2aa1..7680eb0 100644 --- a/src/components/settings/ClientSettings.tsx +++ b/src/components/settings/ClientSettings.tsx @@ -339,6 +339,39 @@ export function ClientSettings({ initialConfig, initialTTLConfig }: ClientSettin }} /> +
+
+ +

+ Afficher les informations de debug dans l'interface +

+
+ { + try { + await updatePreferences({ debug: checked }); + toast({ + title: "Préférences sauvegardées", + description: `Le mode debug est maintenant ${ + checked ? "activé" : "désactivé" + }`, + }); + } catch (error) { + console.error("Erreur détaillée:", error); + toast({ + variant: "destructive", + title: "Erreur", + description: + error instanceof Error + ? error.message + : "Une erreur est survenue lors de la mise à jour des préférences", + }); + } + }} + /> +
diff --git a/src/contexts/PreferencesContext.tsx b/src/contexts/PreferencesContext.tsx index ed7a401..d85ef4c 100644 --- a/src/contexts/PreferencesContext.tsx +++ b/src/contexts/PreferencesContext.tsx @@ -6,12 +6,14 @@ export interface UserPreferences { showThumbnails: boolean; cacheMode: "memory" | "file"; showOnlyUnread: boolean; + debug: boolean; } const defaultPreferences: UserPreferences = { showThumbnails: true, cacheMode: "memory", showOnlyUnread: false, + debug: false, }; interface PreferencesContextType { @@ -67,11 +69,9 @@ export function PreferencesProvider({ children }: { children: React.ReactNode }) ...prev, ...updatedPreferences, }; - console.log("Nouvel état des préférences:", newState); return newState; }); } catch (error) { - console.error("Erreur lors de la mise à jour des préférences:", error); throw error; } }; diff --git a/src/lib/models/preferences.model.ts b/src/lib/models/preferences.model.ts index d367ad1..86cdd06 100644 --- a/src/lib/models/preferences.model.ts +++ b/src/lib/models/preferences.model.ts @@ -21,39 +21,48 @@ const preferencesSchema = new mongoose.Schema( default: false, required: false, }, + debug: { + type: Boolean, + default: false, + required: false, + }, }, { timestamps: true, strict: true, toObject: { transform: function (doc, ret) { - // Assurez-vous que showOnlyUnread est toujours un booléen - ret.showOnlyUnread = ret.showOnlyUnread === true; + // Force la conversion en booléen + ret.showOnlyUnread = Boolean(ret.showOnlyUnread); + ret.debug = Boolean(ret.debug); return ret; }, }, } ); -// Middleware pour s'assurer que showOnlyUnread est toujours un booléen +// Middleware pour s'assurer que les booléens sont toujours des booléens preferencesSchema.pre("save", function (next) { if (this.showOnlyUnread === undefined) { this.showOnlyUnread = false; } - this.showOnlyUnread = this.showOnlyUnread === true; + if (this.debug === undefined) { + this.debug = false; + } + this.showOnlyUnread = Boolean(this.showOnlyUnread); + this.debug = Boolean(this.debug); next(); }); preferencesSchema.pre("findOneAndUpdate", function (next) { const update = this.getUpdate() as mongoose.UpdateQuery; - if ( - update && - "$set" in update && - update.$set && - typeof update.$set === "object" && - "showOnlyUnread" in update.$set - ) { - update.$set.showOnlyUnread = update.$set.showOnlyUnread === true; + if (update && "$set" in update && update.$set && typeof update.$set === "object") { + if ("showOnlyUnread" in update.$set) { + update.$set.showOnlyUnread = Boolean(update.$set.showOnlyUnread); + } + if ("debug" in update.$set) { + update.$set.debug = Boolean(update.$set.debug); + } } next(); }); diff --git a/src/lib/services/preferences.service.ts b/src/lib/services/preferences.service.ts index 46af9f9..6dc2c44 100644 --- a/src/lib/services/preferences.service.ts +++ b/src/lib/services/preferences.service.ts @@ -10,12 +10,14 @@ export interface UserPreferences { showThumbnails: boolean; cacheMode: "memory" | "file"; showOnlyUnread: boolean; + debug: boolean; } const defaultPreferences: UserPreferences = { showThumbnails: true, cacheMode: "memory", showOnlyUnread: false, + debug: false, }; export class PreferencesService { @@ -53,7 +55,6 @@ export class PreferencesService { static async updatePreferences(preferences: Partial): Promise { try { - console.log("Service - Préférences reçues pour mise à jour:", preferences); const user = await this.getCurrentUser(); const updatedPreferences = await PreferencesModel.findOneAndUpdate( { userId: user.id }, @@ -61,12 +62,10 @@ export class PreferencesService { { new: true, upsert: true } ); - console.log("Service - Document MongoDB après mise à jour:", updatedPreferences); const result = { ...defaultPreferences, ...updatedPreferences.toObject(), }; - console.log("Service - Résultat final:", result); return result; } catch (error) { console.error("Error updating preferences:", error);