From a0cf95024c287c0a7c5e3a5b7d875e9be77a0672 Mon Sep 17 00:00:00 2001 From: geoffrey45 Date: Tue, 27 Dec 2022 20:16:02 +0300 Subject: [PATCH] implement favoriting artists --- src/components/AlbumView/Header.vue | 2 +- src/components/ArtistView/Header.vue | 28 +++++++++++++++++++-- src/components/nav/Titles/Folder.vue | 10 ++++---- src/components/shared/HeartSvg.vue | 16 ++++++++++-- src/composables/fetch/artists.ts | 2 +- src/contexts/track_context.ts | 37 +++++++++++++++------------- src/interfaces.ts | 1 + src/stores/context.ts | 2 -- 8 files changed, 68 insertions(+), 30 deletions(-) diff --git a/src/components/AlbumView/Header.vue b/src/components/AlbumView/Header.vue index 768e1fe..e66eb7e 100644 --- a/src/components/AlbumView/Header.vue +++ b/src/components/AlbumView/Header.vue @@ -92,7 +92,7 @@ import HeartSvg from "../shared/HeartSvg.vue"; import PlayBtnRect from "../shared/PlayBtnRect.vue"; -const props = defineProps<{ +defineProps<{ album: Album; }>(); diff --git a/src/components/ArtistView/Header.vue b/src/components/ArtistView/Header.vue index 03c0a58..cc90001 100644 --- a/src/components/ArtistView/Header.vue +++ b/src/components/ArtistView/Header.vue @@ -31,7 +31,7 @@
- +
@@ -56,10 +56,34 @@ import PlayBtnRect from "../shared/PlayBtnRect.vue"; import formatSeconds from "@/utils/useFormatSeconds"; import { isLight } from "@/composables/colors/album"; import { paths } from "@/config"; -import { playSources } from "@/composables/enums"; +import { favType, playSources } from "@/composables/enums"; import HeartSvg from "@/components/shared/HeartSvg.vue"; +import { ref } from "vue"; +import { addFavorite, removeFavorite } from "@/composables/fetch/favorite"; const artist = useArtistPageStore(); +const is_fav = ref(artist.info.is_favorite); + +async function handleFav() { + if (is_fav.value) { + const removed = await removeFavorite( + favType.artist, + artist.info.artisthash + ); + + if (removed) { + is_fav.value = false; + } + + return; + } + + const added = await addFavorite(favType.artist, artist.info.artisthash); + + if (added) { + is_fav.value = true; + } +}