From 66461ff32a668a39d9085ab53786b53caa60409e Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Sat, 22 Feb 2025 15:44:43 +0100 Subject: [PATCH] feat: clean cache on home --- src/app/page.tsx | 16 +++++++++++++++- src/app/series/[seriesId]/page.tsx | 1 - src/components/home/HomeContent.tsx | 8 +++++++- src/lib/services/home.service.ts | 7 +++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 8464672..d751675 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,12 +1,26 @@ import { HomeContent } from "@/components/home/HomeContent"; import { HomeService } from "@/lib/services/home.service"; import { redirect } from "next/navigation"; +import { revalidatePath } from "next/cache"; + +async function refreshHome() { + "use server"; + + try { + await HomeService.clearHomeCache(); + revalidatePath("/"); + return { success: true }; + } catch (error) { + console.error("Erreur lors du rafraîchissement:", error); + return { success: false, error: "Erreur lors du rafraîchissement de la page d'accueil" }; + } +} export default async function HomePage() { try { const data = await HomeService.getHomeData(); - return ; + return ; } catch (error) { // Si l'erreur indique une configuration manquante, rediriger vers les préférences if (error instanceof Error && error.message.includes("Configuration Komga manquante")) { diff --git a/src/app/series/[seriesId]/page.tsx b/src/app/series/[seriesId]/page.tsx index 429a9d2..db8909b 100644 --- a/src/app/series/[seriesId]/page.tsx +++ b/src/app/series/[seriesId]/page.tsx @@ -3,7 +3,6 @@ import { SeriesHeader } from "@/components/series/SeriesHeader"; import { SeriesService } from "@/lib/services/series.service"; import { PreferencesService } from "@/lib/services/preferences.service"; import { revalidatePath } from "next/cache"; -import { RefreshButton } from "@/components/library/RefreshButton"; interface PageProps { params: { seriesId: string }; diff --git a/src/components/home/HomeContent.tsx b/src/components/home/HomeContent.tsx index ea41b02..c16fa89 100644 --- a/src/components/home/HomeContent.tsx +++ b/src/components/home/HomeContent.tsx @@ -1,6 +1,7 @@ import { HeroSection } from "./HeroSection"; import { MediaRow } from "./MediaRow"; import { KomgaBook, KomgaSeries } from "@/types/komga"; +import { RefreshButton } from "@/components/library/RefreshButton"; interface HomeData { ongoing: KomgaSeries[]; @@ -10,9 +11,10 @@ interface HomeData { interface HomeContentProps { data: HomeData; + refreshHome: () => Promise<{ success: boolean; error?: string }>; } -export function HomeContent({ data }: HomeContentProps) { +export function HomeContent({ data, refreshHome }: HomeContentProps) { // Vérification des données pour le debug // console.log("HomeContent - Données reçues:", { // ongoingCount: data.ongoing?.length || 0, @@ -47,6 +49,10 @@ export function HomeContent({ data }: HomeContentProps) { return (
+
+

Accueil

+ +
{/* Hero Section - Afficher uniquement si nous avons des séries en cours */} {data.ongoing && data.ongoing.length > 0 && ( diff --git a/src/lib/services/home.service.ts b/src/lib/services/home.service.ts index 722994b..cfcd89a 100644 --- a/src/lib/services/home.service.ts +++ b/src/lib/services/home.service.ts @@ -1,6 +1,7 @@ import { BaseApiService } from "./base-api.service"; import { KomgaBook, KomgaSeries } from "@/types/komga"; import { LibraryResponse } from "@/types/library"; +import { serverCacheService } from "./server-cache.service"; interface HomeData { ongoing: KomgaSeries[]; @@ -63,4 +64,10 @@ export class HomeService extends BaseApiService { return this.handleError(error, "Impossible de récupérer les données de la page d'accueil"); } } + + static async clearHomeCache() { + serverCacheService.delete("home-ongoing"); + serverCacheService.delete("home-recently-read"); + serverCacheService.delete("home-on-deck"); + } }