feat: pref for default filter showUnread

This commit is contained in:
Julien Froidefond
2025-02-21 23:18:41 +01:00
parent c62cff07d2
commit 72e28ed27b
8 changed files with 188 additions and 44 deletions

View File

@@ -9,8 +9,15 @@ interface User {
export interface UserPreferences {
showThumbnails: boolean;
cacheMode: "memory" | "file";
showOnlyUnread: boolean;
}
const defaultPreferences: UserPreferences = {
showThumbnails: true,
cacheMode: "memory",
showOnlyUnread: false,
};
export class PreferencesService {
static async getCurrentUser(): Promise<User> {
const userCookie = cookies().get("stripUser");
@@ -32,26 +39,21 @@ export class PreferencesService {
const user = await this.getCurrentUser();
const preferences = await PreferencesModel.findOne({ userId: user.id });
if (!preferences) {
return {
showThumbnails: true,
cacheMode: "memory",
};
return defaultPreferences;
}
return {
showThumbnails: preferences.showThumbnails,
cacheMode: preferences.cacheMode || "memory",
...defaultPreferences,
...preferences.toObject(),
};
} catch (error) {
console.error("Error getting preferences:", error);
return {
showThumbnails: true,
cacheMode: "memory",
};
return defaultPreferences;
}
}
static async updatePreferences(preferences: Partial<UserPreferences>): Promise<UserPreferences> {
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 },
@@ -59,10 +61,13 @@ export class PreferencesService {
{ new: true, upsert: true }
);
return {
showThumbnails: updatedPreferences.showThumbnails,
cacheMode: updatedPreferences.cacheMode || "memory",
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);
throw error;