diff --git a/hooks/useBookStatus.ts b/hooks/useBookStatus.ts index 66cfc13f..9b3b1a45 100644 --- a/hooks/useBookStatus.ts +++ b/hooks/useBookStatus.ts @@ -54,6 +54,9 @@ export function invalidateBookQueries(queryClient: QueryClient, bookId: string): queryClient.invalidateQueries({ queryKey: queryKeys.dashboard.all() }); queryClient.invalidateQueries({ queryKey: queryKeys.library.books() }); queryClient.invalidateQueries({ queryKey: queryKeys.readNext.base() }); + + // Invalidate series pages (if book belongs to a series) + queryClient.invalidateQueries({ queryKey: queryKeys.series.all() }); // Invalidate shelves containing this book // Try to get shelves from cache; if available, invalidate only those shelves (surgical) diff --git a/lib/services/progress.service.ts b/lib/services/progress.service.ts index 7f5f2bf8..49f66034 100644 --- a/lib/services/progress.service.ts +++ b/lib/services/progress.service.ts @@ -521,6 +521,7 @@ export class ProgressService { revalidatePath("/stats"); // Stats page revalidatePath("/journal"); // Journal page revalidatePath(`/books/${bookId}`); // Book detail page + revalidatePath("/series"); // Series pages (list and detail) } catch (error) { getLogger().error({ err: error }, "[ProgressService] Failed to invalidate cache"); // Don't fail the request if cache invalidation fails diff --git a/lib/services/session.service.ts b/lib/services/session.service.ts index 170c0efc..946a14b8 100644 --- a/lib/services/session.service.ts +++ b/lib/services/session.service.ts @@ -1362,6 +1362,7 @@ export class SessionService { revalidatePath("/stats"); // Stats page revalidatePath("/journal"); // Journal page revalidatePath(`/books/${bookId}`); // Book detail page + revalidatePath("/series"); // Series pages (list and detail) } catch (error) { getLogger().error({ err: error }, "[SessionService] Failed to invalidate cache"); // Don't fail the request if cache invalidation fails