From 0a126540fddedfa325cb27eddc516450616e6dbf Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Thu, 16 Oct 2025 12:54:45 +0200 Subject: [PATCH] feat: validate favorite series existence in Komga and remove non-existent entries from favorites --- src/app/api/komga/favorites/route.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/app/api/komga/favorites/route.ts b/src/app/api/komga/favorites/route.ts index 6bb8a86..b5573a9 100644 --- a/src/app/api/komga/favorites/route.ts +++ b/src/app/api/komga/favorites/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from "next/server"; import { FavoriteService } from "@/lib/services/favorite.service"; +import { SeriesService } from "@/lib/services/series.service"; import { ERROR_CODES } from "@/constants/errorCodes"; import { AppError } from "@/utils/errors"; import { getErrorMessage } from "@/utils/errors"; @@ -8,7 +9,25 @@ import type { NextRequest } from "next/server"; export async function GET() { try { const favoriteIds: string[] = await FavoriteService.getAllFavoriteIds(); - return NextResponse.json(favoriteIds); + + // Valider que chaque série existe encore dans Komga + const validFavoriteIds: string[] = []; + + for (const seriesId of favoriteIds) { + try { + await SeriesService.getSeries(seriesId); + validFavoriteIds.push(seriesId); + } catch { + // Si la série n'existe plus dans Komga, on la retire des favoris + try { + await FavoriteService.removeFromFavorites(seriesId); + } catch { + // Erreur silencieuse, la série reste dans les favoris + } + } + } + + return NextResponse.json(validFavoriteIds); } catch (error) { console.error("Erreur lors de la récupération des favoris:", error); if (error instanceof AppError) {