From 6b6fed34fbe9b572c0c20773a780719ad9e2ca9d Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Sun, 7 Dec 2025 18:49:04 +0100 Subject: [PATCH] feat: integrate user preferences for unread series and books in PaginatedSeriesGrid and PaginatedBookGrid components --- src/components/library/PaginatedSeriesGrid.tsx | 9 +++++++++ src/components/series/PaginatedBookGrid.tsx | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/components/library/PaginatedSeriesGrid.tsx b/src/components/library/PaginatedSeriesGrid.tsx index 5def36a..372ee75 100644 --- a/src/components/library/PaginatedSeriesGrid.tsx +++ b/src/components/library/PaginatedSeriesGrid.tsx @@ -9,6 +9,7 @@ import type { KomgaSeries } from "@/types/komga"; import { SearchInput } from "./SearchInput"; import { useTranslate } from "@/hooks/useTranslate"; import { useDisplayPreferences } from "@/hooks/useDisplayPreferences"; +import { usePreferences } from "@/contexts/PreferencesContext"; import { PageSizeSelect } from "@/components/common/PageSizeSelect"; import { CompactModeButton } from "@/components/common/CompactModeButton"; import { ViewModeButton } from "@/components/common/ViewModeButton"; @@ -38,6 +39,7 @@ export function PaginatedSeriesGrid({ const searchParams = useSearchParams(); const [showOnlyUnread, setShowOnlyUnread] = useState(initialShowOnlyUnread); const { isCompact, itemsPerPage: displayItemsPerPage, viewMode } = useDisplayPreferences(); + const { updatePreferences } = usePreferences(); // Utiliser la taille de page effective (depuis l'URL ou les préférences) const effectivePageSize = pageSize || displayItemsPerPage; @@ -87,6 +89,13 @@ export function PaginatedSeriesGrid({ page: "1", unread: newUnreadState ? "true" : "false", }); + // Sauvegarder la préférence dans la base de données + try { + await updatePreferences({ showOnlyUnread: newUnreadState }); + } catch (error) { + // Log l'erreur mais ne bloque pas l'utilisateur + console.error("Erreur lors de la sauvegarde de la préférence:", error); + } }; const handlePageSizeChange = async (size: number) => { diff --git a/src/components/series/PaginatedBookGrid.tsx b/src/components/series/PaginatedBookGrid.tsx index eda7064..a59bb54 100644 --- a/src/components/series/PaginatedBookGrid.tsx +++ b/src/components/series/PaginatedBookGrid.tsx @@ -8,6 +8,7 @@ import { useState, useEffect, useCallback } from "react"; import type { KomgaBook } from "@/types/komga"; import { useTranslate } from "@/hooks/useTranslate"; import { useDisplayPreferences } from "@/hooks/useDisplayPreferences"; +import { usePreferences } from "@/contexts/PreferencesContext"; import { PageSizeSelect } from "@/components/common/PageSizeSelect"; import { CompactModeButton } from "@/components/common/CompactModeButton"; import { ViewModeButton } from "@/components/common/ViewModeButton"; @@ -35,6 +36,7 @@ export function PaginatedBookGrid({ const searchParams = useSearchParams(); const [showOnlyUnread, setShowOnlyUnread] = useState(initialShowOnlyUnread); const { isCompact, itemsPerPage, viewMode } = useDisplayPreferences(); + const { updatePreferences } = usePreferences(); const { t } = useTranslate(); const updateUrlParams = useCallback( @@ -81,6 +83,13 @@ export function PaginatedBookGrid({ page: "1", unread: newUnreadState ? "true" : "false", }); + // Sauvegarder la préférence dans la base de données + try { + await updatePreferences({ showOnlyUnread: newUnreadState }); + } catch (error) { + // Log l'erreur mais ne bloque pas l'utilisateur + console.error("Erreur lors de la sauvegarde de la préférence:", error); + } }; const handlePageSizeChange = async (size: number) => {