diff --git a/app/pages/artist/[id].vue b/app/pages/artist/[id].vue deleted file mode 100644 index 9ef5d8a..0000000 --- a/app/pages/artist/[id].vue +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - {{ artistData.name }} - - - playAlbum(tracksData)" - >Play - playShuffledAlbum(tracksData)" - >Shuffle - - - - - - - playAlbumAtIndex(tracksData, i + pI * 3) - " - /> - - - - - - - - - diff --git a/app/pages/artist/[id]/index.vue b/app/pages/artist/[id]/index.vue index cd03b21..ed51e39 100644 --- a/app/pages/artist/[id]/index.vue +++ b/app/pages/artist/[id]/index.vue @@ -2,12 +2,40 @@ const route = useRoute() const id = computed(() => route.params.id) -const { data: artistData } = await useApiFetch(`/artists/${id.value}`) +const { data: artistData } = await useApiFetch(`/artists/${id.value}`) + +const { data: albumsData } = await useApiFetch( + `/artists/${id.value}/albums`, +) + const { data: tracksData } = await useApiFetch( `/artists/${id.value}/tracks`, ) -const { playAlbum, playAlbumAtIndex } = usePlayer() +const chunkedTracks = computed(() => { + const SIZE = 3 + const chunks = [] + + for (let i = 0; i < tracksData.value.length; i += SIZE) { + chunks.push(tracksData.value.slice(i, i + SIZE)) + } + + return chunks +}) + +const slider = useTemplateRef("slider") + +const scrollWidth = () => { + if (!slider.value) return 0 + + const el = Array.isArray(slider.value) ? slider.value[0] : slider.value + + if (!el) return 0 + + return el.offsetWidth +} + +const { playAlbum, playShuffledAlbum, playAlbumAtIndex } = usePlayer() @@ -28,34 +56,45 @@ const { playAlbum, playAlbumAtIndex } = usePlayer() @click="() => playAlbum(tracksData)" >Play + playShuffledAlbum(tracksData)" + >Shuffle - - - Tracks - - + + + playAlbumAtIndex(tracksData, i + pI * 3) + " + /> + + - - - - playAlbumAtIndex(tracksData, i) - " - /> - - - - - - + + +