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);