From 070dc927337465ccbfa589b6c2997d4f3528fa53 Mon Sep 17 00:00:00 2001 From: geoffrey45 Date: Sun, 1 Jan 2023 21:45:38 +0300 Subject: [PATCH] join all favorites page request into one --- src/components/nav/Titles/FavoriteAlbumsNav.vue | 2 +- src/composables/fetch/favorite.ts | 17 ++++++++++++++++- src/config.ts | 6 +++++- src/views/Favorites.vue | 17 +++++++---------- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/components/nav/Titles/FavoriteAlbumsNav.vue b/src/components/nav/Titles/FavoriteAlbumsNav.vue index 516e9731..044dcb98 100644 --- a/src/components/nav/Titles/FavoriteAlbumsNav.vue +++ b/src/components/nav/Titles/FavoriteAlbumsNav.vue @@ -1,3 +1,3 @@ diff --git a/src/composables/fetch/favorite.ts b/src/composables/fetch/favorite.ts index 7aec7b45..81c691aa 100644 --- a/src/composables/fetch/favorite.ts +++ b/src/composables/fetch/favorite.ts @@ -7,7 +7,7 @@ import { Album, Artist, Track } from "@/interfaces"; export async function addFavorite(favtype: favType, itemhash: string) { const { data, error } = await useAxios({ - url: paths.api.favorite, + url: paths.api.addFavorite, props: { type: favtype, hash: itemhash, @@ -47,6 +47,21 @@ export async function removeFavorite(favtype: favType, itemhash: string) { return true; } +export async function getAllFavs( + track_limit = 6, + album_limit = 6, + artist_limit = 6 +) { + const { data } = await useAxios({ + url: + paths.api.favorites + + `?track_limit=${track_limit}&album_limit=${album_limit}&artist_limit=${artist_limit}`, + get: true, + }); + + return data; +} + export async function getFavAlbums(limit = 6) { const { data } = await useAxios({ url: paths.api.favAlbums + `?limit=${limit}`, diff --git a/src/config.ts b/src/config.ts index 67a8174e..08380b4a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -20,11 +20,15 @@ const imageRoutes = { const paths = { api: { album: baseApiUrl + "/album", + favorite: baseApiUrl + "/favorite", + favorites: baseApiUrl + "/favorites", favAlbums: baseApiUrl + "/albums/favorite", favTracks: baseApiUrl + "/tracks/favorite", favArtists: baseApiUrl + "/artists/favorite", artist: baseApiUrl + "/artist", - favorite: baseApiUrl + "/favorite", + get addFavorite() { + return this.favorite + "/add"; + }, get removeFavorite() { return this.favorite + "/remove"; }, diff --git a/src/views/Favorites.vue b/src/views/Favorites.vue index 8b7c99fc..52a22834 100644 --- a/src/views/Favorites.vue +++ b/src/views/Favorites.vue @@ -30,11 +30,7 @@ import ArtistAlbums from "@/components/AlbumView/ArtistAlbums.vue"; import TopTracks from "@/components/ArtistView/TopTracks.vue"; import FeaturedArtists from "@/components/PlaylistView/ArtistsList.vue"; import { discographyAlbumTypes } from "@/composables/enums"; -import { - getFavAlbums, - getFavArtists, - getFavTracks, -} from "@/composables/fetch/favorite"; +import { getAllFavs, getFavTracks } from "@/composables/fetch/favorite"; import { Album, Artist, Track } from "@/interfaces"; import useQueueStore from "@/stores/queue"; import { maxAbumCards } from "@/stores/content-width"; @@ -46,11 +42,12 @@ const favTracks: Ref = ref([]); const favArtists: Ref = ref([]); onMounted(() => { - getFavTracks().then((tracks) => (favTracks.value = tracks)); - getFavAlbums(maxAbumCards.value).then((albums) => (favAlbums.value = albums)); - getFavArtists(maxAbumCards.value).then( - (artists) => (favArtists.value = artists) - ); + const max = maxAbumCards.value; + getAllFavs(5, max, max).then((favs) => { + favAlbums.value = favs.albums; + favTracks.value = favs.tracks; + favArtists.value = favs.artists; + }); }); async function handlePlay(index: number) {