Début de la logique, ajout de refs + interface + de la méthode fetchMovies.
Showing
1 changed file
with
47 additions
and
0 deletions
@@ -2,10 +2,55 @@ | @@ -2,10 +2,55 @@ | ||
2 | //#region --import--. | 2 | //#region --import--. |
3 | import SearchBar from "~/components/SearchBar.vue"; | 3 | import SearchBar from "~/components/SearchBar.vue"; |
4 | import { ref } from "vue"; | 4 | import { ref } from "vue"; |
5 | +import { useTMDB } from "~/composables/tMDB"; | ||
6 | +//#endregion | ||
7 | + | ||
8 | +//#region --Declaration--. | ||
9 | +const { fetchPopularMovies } = useTMDB(); | ||
10 | +//#endregion | ||
11 | + | ||
12 | +//#region --Type--. | ||
13 | +interface Movie { | ||
14 | + id: number; | ||
15 | + title: string; | ||
16 | + poster_path: string | null; | ||
17 | + vote_average: number; | ||
18 | + release_date: string; | ||
19 | +} | ||
5 | //#endregion | 20 | //#endregion |
6 | 21 | ||
7 | //#region --Data/refs--. | 22 | //#region --Data/refs--. |
8 | const isInitialLoading = ref(true); | 23 | const isInitialLoading = ref(true); |
24 | +const isLoadingMore = ref(false); | ||
25 | +const movies = ref<Movie[]>([]); | ||
26 | +const currentPage = ref(1); | ||
27 | +const totalPages = ref(0); | ||
28 | +//#endregion | ||
29 | + | ||
30 | +//#region --Function--. | ||
31 | +// Fetch popular movies | ||
32 | +const fetchMovies = async (page: number) => { | ||
33 | + try { | ||
34 | + isLoadingMore.value = true; | ||
35 | + const data = await fetchPopularMovies(page); | ||
36 | + console.log("data in fetchMovies", data); | ||
37 | + | ||
38 | + if (page === 1) { | ||
39 | + movies.value = data.results; | ||
40 | + } else { | ||
41 | + movies.value = [...movies.value, ...data.results]; | ||
42 | + } | ||
43 | + | ||
44 | + totalPages.value = data.total_pages; | ||
45 | + currentPage.value = page; | ||
46 | + } catch (error) { | ||
47 | + console.error("Error fetching popular movies:", error); | ||
48 | + } finally { | ||
49 | + isInitialLoading.value = false; | ||
50 | + isLoadingMore.value = false; | ||
51 | + } | ||
52 | +}; | ||
53 | +fetchMovies(1) | ||
9 | //#endregion | 54 | //#endregion |
10 | </script> | 55 | </script> |
11 | 56 | ||
@@ -16,6 +61,8 @@ const isInitialLoading = ref(true); | @@ -16,6 +61,8 @@ const isInitialLoading = ref(true); | ||
16 | <search-bar placeholder="Rechercher un film..."/> | 61 | <search-bar placeholder="Rechercher un film..."/> |
17 | <!-- Loading Skeleton --> | 62 | <!-- Loading Skeleton --> |
18 | <skeleton-movies-loader :is-initial-loading="isInitialLoading" :skeleton-number="20" /> | 63 | <skeleton-movies-loader :is-initial-loading="isInitialLoading" :skeleton-number="20" /> |
64 | + <!-- Liste des films --> | ||
65 | + <pre>{{ movies }}</pre> | ||
19 | </section> | 66 | </section> |
20 | </template> | 67 | </template> |
21 | 68 |
-
Please register or login to post a comment