Skip to content

Commit d8edb25

Browse files
committed
fix: try to make sure there is always a cover
1 parent e7dcce6 commit d8edb25

6 files changed

Lines changed: 24 additions & 10 deletions

File tree

components/TileItem.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ async function shufflePodcast() {
4646
:to="parseLink(item.showAllLink)"
4747
class="aspect-square w-[120px] overflow-clip rounded-2xl bg-background-1 lg:w-1/2 lg:rounded-none"
4848
>
49-
<CoverImage :src="item.coverUrl" :alt="item.title" no-border />
49+
<CoverImage
50+
:src="item.coverUrl ?? coverForTrack(item.track)"
51+
:alt="item.title"
52+
no-border
53+
/>
5054
</NuxtLink>
5155
<div
5256
class="flex grow cursor-pointer flex-col gap-0.5 rounded-r-2xl p-0 text-black-1 lg:w-1/2 lg:p-4"

components/media-player/MediaPlayerClosed.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const onPointerDownProgressBar = () => {
2727
<div class="flex h-full w-full items-start p-3">
2828
<div class="flex min-w-0 flex-1 gap-4">
2929
<CoverImage
30-
:src="currentTrack?.meta?.attachedPicture"
30+
:src="coverForTrack(currentTrack)"
3131
class="h-[48px] rounded-md"
3232
:style="`view-transition-name: player-cover-${currentTrack?.id}`"
3333
/>

components/media-player/MediaPlayerOpen.vue

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ useDraggable(queueListElement, queue, {
4646
queue.value.moveTrack(oldIndex, newIndex);
4747
},
4848
});
49+
50+
const trackCover = computed(() => coverForTrack(currentTrack.value));
4951
</script>
5052

5153
<template>
@@ -56,16 +58,16 @@ useDraggable(queueListElement, queue, {
5658
>
5759
<div class="relative z-10 hidden overflow-hidden tall:block">
5860
<CoverImage
59-
:src="currentTrack?.meta?.attachedPicture"
61+
:src="trackCover"
6062
class="w-20 rounded-md x-tall:w-40"
6163
:style="`view-transition-name: player-cover-${currentTrack?.id}`"
6264
/>
6365
</div>
6466

6567
<!-- translate3d is needed to fix flickering in Safari: https://graffino.com/til/how-to-fix-filter-blur-performance-issue-in-safari -->
6668
<ProtectedImage
67-
v-if="currentTrack?.meta?.attachedPicture"
68-
:src="currentTrack?.meta?.attachedPicture"
69+
v-if="trackCover"
70+
:src="trackCover"
6971
class="absolute z-0 w-[160px] blur-[80px]"
7072
style="transform: translate3d(0, 0, 0)"
7173
no-border

components/track/TrackDetails.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const extractFields = (track: TrackModel) => {
7979

8080
<template>
8181
<div class="relative flex items-center justify-normal gap-4" v-bind="$attrs">
82-
<CoverImage :src="track.meta?.attachedPicture" class="w-24 rounded-md" />
82+
<CoverImage :src="coverForTrack(track)" class="w-24 rounded-md" />
8383
<div>
8484
<h3 class="py-1 text-2xl font-extrabold text-label-1">
8585
{{ track.title }}

components/track/TrackItem.vue

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,7 @@ const selectedTrack: Ref<TrackModel | null> = ref(null);
115115
<div class="relative col-span-full grid grid-cols-subgrid">
116116
<div v-if="showThumbnail" class="hidden flex-col justify-center lg:flex">
117117
<div class="relative aspect-square w-10">
118-
<CoverImage
119-
:src="track.meta?.attachedPicture"
120-
class="w-10 rounded-md"
121-
/>
118+
<CoverImage :src="coverForTrack(track)" class="w-10 rounded-md" />
122119
<div
123120
v-if="!isPlaying"
124121
class="absolute inset-0 w-10 opacity-0 group-hover:opacity-100"

utils/tracks.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,14 @@ export function defaultFileForTrack(
2020
export function trackIsSong(track: TrackModel): boolean {
2121
return track.subtype === "song" || track.subtype === "singsong";
2222
}
23+
24+
export function coverForTrack(
25+
track: TrackModel | undefined,
26+
): string | null | undefined {
27+
return (
28+
track?.cover ??
29+
track?.meta.attachedPicture ??
30+
track?.meta.parent?.cover ??
31+
track?.meta.rootParent?.cover
32+
);
33+
}

0 commit comments

Comments
 (0)