diff --git a/src/components/MovieDetails.css b/src/components/MovieDetails.css
index c5478ed..b19ac2b 100644
--- a/src/components/MovieDetails.css
+++ b/src/components/MovieDetails.css
@@ -47,6 +47,7 @@
.details-content h2 {
margin: 0 0 0.25rem;
+ color: beige;
}
.details-meta {
diff --git a/src/hooks/useFavorites.ts b/src/hooks/useFavorites.ts
index 06100a7..e671f53 100644
--- a/src/hooks/useFavorites.ts
+++ b/src/hooks/useFavorites.ts
@@ -22,4 +22,4 @@ export function useFavorites() {
return favoriteIds.includes(id);
}
-return { toggleFavorite, isFavorite};}
\ No newline at end of file
+return { toggleFavorite, isFavorite, favoriteIds};}
diff --git a/src/hooks/useMovies.ts b/src/hooks/useMovies.ts
index 24fc303..6259d9c 100644
--- a/src/hooks/useMovies.ts
+++ b/src/hooks/useMovies.ts
@@ -1,6 +1,6 @@
// hooks/useMovies.ts
-import { useQuery } from '@tanstack/react-query'
-import { fetchCurrentMovies, fetchPopularMovies, fetchSearchMovies } from '../api/tmdb'
+import { useQuery, useQueries } from '@tanstack/react-query'
+import { fetchCurrentMovies, fetchPopularMovies, fetchSearchMovies, fetchMovieById } from '../api/tmdb'
export function usePopMovies() {
return useQuery({
@@ -25,4 +25,19 @@ export function useSearchMovies(query: string) {
enabled: query.trim().length > 0,
select: (data) => data.results,
})
+}
+
+export function useFavoriteMovies(ids: number[]) {
+ const results = useQueries({
+ queries: ids.map((id) => ({
+ queryKey: ['movies', 'detail', id],
+ queryFn: () => fetchMovieById(id),
+ })),
+ })
+
+ return {
+ movies: results.filter((r) => r.data).map((r) => r.data!),
+ isLoading: results.some((r) => r.isLoading),
+ error: results.find((r) => r.error)?.error ?? null,
+ }
}
\ No newline at end of file
diff --git a/src/layout/FavoritesLayout.tsx b/src/layout/FavoritesLayout.tsx
new file mode 100644
index 0000000..fb81658
--- /dev/null
+++ b/src/layout/FavoritesLayout.tsx
@@ -0,0 +1,25 @@
+import { Section } from "../components/Section";
+import { MovieList } from "../components/MovieList";
+import { useFavoriteMovies } from "../hooks/useMovies";
+import type { Movie } from "../types/tmdb";
+
+type FavoritesLayoutProps = {
+ favoriteIds: number[];
+ isFavorite: (id: number) => boolean;
+ toggleFavorite: (id: number) => void;
+ onSelectMovie: (movie: Movie) => void;
+};
+
+export function FavoritesLayout({ favoriteIds, isFavorite, toggleFavorite, onSelectMovie }: FavoritesLayoutProps) {
+ const { movies, isLoading, error } = useFavoriteMovies(favoriteIds);
+
+ return (
+
+ {movies.length > 0 ? (
+
+ ) : (
+ Du har ingen favoritter ennå.
+ )}
+
+ );
+}
\ No newline at end of file