feat(frontend): music player component with separated controls and stream proxy
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
import favicon from '$lib/assets/favicon.svg';
|
||||
import Navbar from '$lib/components/Navbar.svelte';
|
||||
import Footer from '$lib/components/Footer.svelte';
|
||||
import PlayerBar from '$lib/components/player/PlayerBar.svelte';
|
||||
import { player } from '$lib/player/player.svelte';
|
||||
|
||||
let { children, data } = $props();
|
||||
</script>
|
||||
@@ -13,4 +15,6 @@
|
||||
<Navbar user={data.user} />
|
||||
<main class="flex-1">{@render children()}</main>
|
||||
<Footer />
|
||||
<div class:pb-20={player.current}></div>
|
||||
<PlayerBar />
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import type { RequestHandler } from './$types';
|
||||
import { json, error } from '@sveltejs/kit';
|
||||
import { createApiClient } from '$lib/server/api';
|
||||
|
||||
export const GET: RequestHandler = async ({ params, locals, fetch }) => {
|
||||
if (!locals.accessToken) {
|
||||
error(401, 'Inicia sesión para reproducir.');
|
||||
}
|
||||
|
||||
const api = createApiClient({ fetch, accessToken: locals.accessToken });
|
||||
const { data, error: err, response } = await api.GET('/tracks/{id}/stream', {
|
||||
params: { path: { id: params.id } }
|
||||
});
|
||||
|
||||
if (err || !data) {
|
||||
error(response?.status ?? 502, 'No se pudo obtener el stream de la pista.');
|
||||
}
|
||||
|
||||
return json(data);
|
||||
};
|
||||
Reference in New Issue
Block a user