Handle optional API data in pages

This commit is contained in:
lucast committed 2026-10-06 02:46:01 +02:00
1 parent a6485e5c73
commit 379acf400c
7 files changed
+23 -20

No files matched your search

+5 -4
View File
@@ -9,6 +9,7 @@ const { data: albumData } = await useApiFetch<Album>(`/albums/${id.value}`)
const { data: tracksData } = await useApiFetch<Track[]>(
`/albums/${id.value}/tracks`,
)
const tracks = computed(() => tracksData.value ?? [])
const { playAlbum, playShuffledAlbum, playAlbumAtIndex } = usePlayer()
useHead({ title: computed(() => albumData.value ? `${albumData.value.name} - Album` : "Album") })
@@ -30,12 +31,12 @@ useHead({ title: computed(() => albumData.value ? `${albumData.value.name} - Alb
<div class="buttons">
<Button
icon-name="lucide:play"
@click="() => playAlbum(tracksData)"
@click="() => playAlbum(tracks)"
>Play</Button
>
<Button
icon-name="lucide:shuffle"
@click="() => playShuffledAlbum(tracksData)"
@click="() => playShuffledAlbum(tracks)"
>Shuffle</Button
>
</div>
@@ -44,11 +45,11 @@ useHead({ title: computed(() => albumData.value ? `${albumData.value.name} - Alb
<section class="tracks">
<TrackRow
v-for="(track, i) in tracksData"
v-for="(track, i) in tracks"
:key="track._id"
:track="track"
:index="i"
@play-album-at-index="() => playAlbumAtIndex(tracksData, i)"
@play-album-at-index="() => playAlbumAtIndex(tracks, i)"
/>
</section>
</template>