diff --git a/web-player/src/lib/api/schema.d.ts b/web-player/src/lib/api/schema.d.ts index a30993b..99654b5 100644 --- a/web-player/src/lib/api/schema.d.ts +++ b/web-player/src/lib/api/schema.d.ts @@ -581,6 +581,7 @@ export interface components { createdAt: string; /** Format: date-time */ updatedAt: string; + coverTrackIds: string[]; }; CreateAlbumRequest: { title: string; @@ -708,6 +709,7 @@ export interface components { createdAt: string; /** Format: date-time */ updatedAt: string; + coverTrackIds: string[]; }; PlayListPictureUploadResponse: { /** Format: uuid */ diff --git a/web-player/src/lib/server/api.ts b/web-player/src/lib/server/api.ts index 38f50b0..0b1fa62 100644 --- a/web-player/src/lib/server/api.ts +++ b/web-player/src/lib/server/api.ts @@ -52,33 +52,3 @@ export function unwrapOrFail( ): ActionFailure<{ message: string }> | undefined { return result.error ? fail(502, { message }) : undefined; } - -export async function albumCoverTrackIds( - api: ReturnType, - albumIds: string[] -): Promise> { - const covers = await Promise.all( - albumIds.map(async (albumId) => { - const { data: tracks } = await api.GET('/albums/{albumId}/tracks', { - params: { path: { albumId }, query: { pageNumber: 1, pageSize: 4 } } - }); - return [albumId, tracks?.items.map((t) => t.id) ?? []] as const; - }) - ); - return Object.fromEntries(covers); -} - -export async function playlistCoverTrackIds( - api: ReturnType, - playlistIds: string[] -): Promise> { - const covers = await Promise.all( - playlistIds.map(async (playlistId) => { - const { data: tracks } = await api.GET('/playlists/{playlistId}/tracks', { - params: { path: { playlistId }, query: { pageNumber: 1, pageSize: 4 } } - }); - return [playlistId, tracks?.items.map((t) => t.id) ?? []] as const; - }) - ); - return Object.fromEntries(covers); -} diff --git a/web-player/src/routes/(app)/albums/+page.server.ts b/web-player/src/routes/(app)/albums/+page.server.ts index e4f7327..9464a87 100644 --- a/web-player/src/routes/(app)/albums/+page.server.ts +++ b/web-player/src/routes/(app)/albums/+page.server.ts @@ -1,7 +1,6 @@ import type { PageServerLoad, Actions } from './$types'; import { fail, redirect } from '@sveltejs/kit'; import { - albumCoverTrackIds, createApiClient, requireAccessTokenAction, requireUser, @@ -19,12 +18,8 @@ export const load: PageServerLoad = async ({ locals, url, fetch }) => { }); const albums = unwrapOrError(result, 'No se pudieron cargar tus álbumes.'); - const trackIds = await albumCoverTrackIds( - api, - albums.items.map((album) => album.id) - ); - return { albums, trackIds }; + return { albums }; }; export const actions: Actions = { diff --git a/web-player/src/routes/(app)/albums/+page.svelte b/web-player/src/routes/(app)/albums/+page.svelte index 1b2f9a9..db3920e 100644 --- a/web-player/src/routes/(app)/albums/+page.svelte +++ b/web-player/src/routes/(app)/albums/+page.svelte @@ -13,7 +13,6 @@ let { data, form } = $props(); const items = $derived(data.albums.items); - const trackIds = $derived(data.trackIds); let creating = $state(false); @@ -43,7 +42,7 @@ title={album.title} releaseYear={album.releaseYear === null ? undefined : Number(album.releaseYear)} trackCount={Number(album.trackCount)} - trackIds={trackIds[album.id] ?? []} + trackIds={album.coverTrackIds} index={i} /> {/each} diff --git a/web-player/src/routes/(app)/playlists/+page.server.ts b/web-player/src/routes/(app)/playlists/+page.server.ts index 15b80be..8f05fcd 100644 --- a/web-player/src/routes/(app)/playlists/+page.server.ts +++ b/web-player/src/routes/(app)/playlists/+page.server.ts @@ -2,7 +2,6 @@ import type { PageServerLoad, Actions } from './$types'; import { fail, redirect } from '@sveltejs/kit'; import { createApiClient, - playlistCoverTrackIds, requireAccessTokenAction, requireUser, unwrapOrError @@ -19,12 +18,8 @@ export const load: PageServerLoad = async ({ locals, url, fetch }) => { }); const data = unwrapOrError(result, 'No se pudieron cargar tus playlists.'); - const trackIds = await playlistCoverTrackIds( - api, - data.items.map((p) => p.id) - ); - return { playlists: data, trackIds }; + return { playlists: data }; }; export const actions: Actions = { diff --git a/web-player/src/routes/(app)/playlists/+page.svelte b/web-player/src/routes/(app)/playlists/+page.svelte index a9d89df..7373499 100644 --- a/web-player/src/routes/(app)/playlists/+page.svelte +++ b/web-player/src/routes/(app)/playlists/+page.svelte @@ -32,7 +32,6 @@ let { data, form } = $props(); const items = $derived(data.playlists.items); - const trackIds = $derived(data.trackIds); let creating = $state(false); @@ -65,7 +64,7 @@ id={playlist.id} name={playlist.name} description={playlist.description} - trackIds={trackIds[playlist.id] ?? []} + trackIds={playlist.coverTrackIds} updatedAt={playlist.updatedAt} index={i} /> diff --git a/web-player/src/routes/+page.server.ts b/web-player/src/routes/+page.server.ts index db57720..d1645b1 100644 --- a/web-player/src/routes/+page.server.ts +++ b/web-player/src/routes/+page.server.ts @@ -1,5 +1,5 @@ import type { PageServerLoad, Actions } from './$types'; -import { createApiClient, playlistCoverTrackIds, requireUser } from '$lib/server/api'; +import { createApiClient, requireUser } from '$lib/server/api'; import { fetchYoutubeFiller } from '$lib/server/youtube'; import { shuffle } from '$lib/collections'; import { addTrackAction, addYouTubeToPlaylistAction } from '$lib/server/playlistActions'; @@ -28,10 +28,6 @@ export const load: PageServerLoad = async ({ locals, url, fetch }) => { recentlyPlayedPromise ]); const playlistItems = playlists.data?.items ?? []; - const trackIds = await playlistCoverTrackIds( - api, - playlistItems.map((p) => p.id) - ); return { greeting: pickGreeting(new Date().getHours()), @@ -46,7 +42,6 @@ export const load: PageServerLoad = async ({ locals, url, fetch }) => { ), playlists: playlistItems, mixes: mixes.data ?? [], - trackIds, recentlyPlayed: recentlyPlayed.data ?? [] }; }; diff --git a/web-player/src/routes/+page.svelte b/web-player/src/routes/+page.svelte index 7f74147..d8b9c88 100644 --- a/web-player/src/routes/+page.svelte +++ b/web-player/src/routes/+page.svelte @@ -108,7 +108,6 @@ } const playlists = $derived(data.playlists); const mixes = $derived(data.mixes); - const trackIds = $derived(data.trackIds); function playLatest(index: number) { player.playOrToggle(latest.map(queueItemForTarget), index); @@ -246,7 +245,7 @@ id={playlist.id} name={playlist.name} description={playlist.description} - trackIds={trackIds[playlist.id] ?? []} + trackIds={playlist.coverTrackIds} updatedAt={playlist.updatedAt} index={i} />