feat: integrate user preferences for unread series and books in PaginatedSeriesGrid and PaginatedBookGrid components

This commit is contained in:
Julien Froidefond
2025-12-07 18:49:04 +01:00
parent feb8444b35
commit 6b6fed34fb
2 changed files with 18 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import type { KomgaSeries } from "@/types/komga";
import { SearchInput } from "./SearchInput"; import { SearchInput } from "./SearchInput";
import { useTranslate } from "@/hooks/useTranslate"; import { useTranslate } from "@/hooks/useTranslate";
import { useDisplayPreferences } from "@/hooks/useDisplayPreferences"; import { useDisplayPreferences } from "@/hooks/useDisplayPreferences";
import { usePreferences } from "@/contexts/PreferencesContext";
import { PageSizeSelect } from "@/components/common/PageSizeSelect"; import { PageSizeSelect } from "@/components/common/PageSizeSelect";
import { CompactModeButton } from "@/components/common/CompactModeButton"; import { CompactModeButton } from "@/components/common/CompactModeButton";
import { ViewModeButton } from "@/components/common/ViewModeButton"; import { ViewModeButton } from "@/components/common/ViewModeButton";
@@ -38,6 +39,7 @@ export function PaginatedSeriesGrid({
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const [showOnlyUnread, setShowOnlyUnread] = useState(initialShowOnlyUnread); const [showOnlyUnread, setShowOnlyUnread] = useState(initialShowOnlyUnread);
const { isCompact, itemsPerPage: displayItemsPerPage, viewMode } = useDisplayPreferences(); const { isCompact, itemsPerPage: displayItemsPerPage, viewMode } = useDisplayPreferences();
const { updatePreferences } = usePreferences();
// Utiliser la taille de page effective (depuis l'URL ou les préférences) // Utiliser la taille de page effective (depuis l'URL ou les préférences)
const effectivePageSize = pageSize || displayItemsPerPage; const effectivePageSize = pageSize || displayItemsPerPage;
@@ -87,6 +89,13 @@ export function PaginatedSeriesGrid({
page: "1", page: "1",
unread: newUnreadState ? "true" : "false", 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) => { const handlePageSizeChange = async (size: number) => {

View File

@@ -8,6 +8,7 @@ import { useState, useEffect, useCallback } from "react";
import type { KomgaBook } from "@/types/komga"; import type { KomgaBook } from "@/types/komga";
import { useTranslate } from "@/hooks/useTranslate"; import { useTranslate } from "@/hooks/useTranslate";
import { useDisplayPreferences } from "@/hooks/useDisplayPreferences"; import { useDisplayPreferences } from "@/hooks/useDisplayPreferences";
import { usePreferences } from "@/contexts/PreferencesContext";
import { PageSizeSelect } from "@/components/common/PageSizeSelect"; import { PageSizeSelect } from "@/components/common/PageSizeSelect";
import { CompactModeButton } from "@/components/common/CompactModeButton"; import { CompactModeButton } from "@/components/common/CompactModeButton";
import { ViewModeButton } from "@/components/common/ViewModeButton"; import { ViewModeButton } from "@/components/common/ViewModeButton";
@@ -35,6 +36,7 @@ export function PaginatedBookGrid({
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const [showOnlyUnread, setShowOnlyUnread] = useState(initialShowOnlyUnread); const [showOnlyUnread, setShowOnlyUnread] = useState(initialShowOnlyUnread);
const { isCompact, itemsPerPage, viewMode } = useDisplayPreferences(); const { isCompact, itemsPerPage, viewMode } = useDisplayPreferences();
const { updatePreferences } = usePreferences();
const { t } = useTranslate(); const { t } = useTranslate();
const updateUrlParams = useCallback( const updateUrlParams = useCallback(
@@ -81,6 +83,13 @@ export function PaginatedBookGrid({
page: "1", page: "1",
unread: newUnreadState ? "true" : "false", 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) => { const handlePageSizeChange = async (size: number) => {