feat(web/m7-364): mount QueueDrawer + esc handler + restore on bootstrap
This commit is contained in:
@@ -6,12 +6,14 @@
|
|||||||
import { queryClient } from '$lib/query/client';
|
import { queryClient } from '$lib/query/client';
|
||||||
import { user } from '$lib/auth/store.svelte';
|
import { user } from '$lib/auth/store.svelte';
|
||||||
import Shell from '$lib/components/Shell.svelte';
|
import Shell from '$lib/components/Shell.svelte';
|
||||||
|
import QueueDrawer from '$lib/components/QueueDrawer.svelte';
|
||||||
import {
|
import {
|
||||||
registerAudioEl,
|
registerAudioEl,
|
||||||
reportTimeUpdate,
|
reportTimeUpdate,
|
||||||
reportDuration,
|
reportDuration,
|
||||||
reportStateFromAudio,
|
reportStateFromAudio,
|
||||||
player
|
player,
|
||||||
|
closeQueueDrawer
|
||||||
} from '$lib/player/store.svelte';
|
} from '$lib/player/store.svelte';
|
||||||
import { useMediaSession } from '$lib/player/mediaSession.svelte';
|
import { useMediaSession } from '$lib/player/mediaSession.svelte';
|
||||||
import { useEventsDispatcher } from '$lib/player/events.svelte';
|
import { useEventsDispatcher } from '$lib/player/events.svelte';
|
||||||
@@ -65,6 +67,16 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$effect(() => {
|
||||||
|
const handler = (e: KeyboardEvent) => {
|
||||||
|
if (e.key === 'Escape' && player.queueDrawerOpen) {
|
||||||
|
closeQueueDrawer();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
document.addEventListener('keydown', handler);
|
||||||
|
return () => document.removeEventListener('keydown', handler);
|
||||||
|
});
|
||||||
|
|
||||||
useMediaSession();
|
useMediaSession();
|
||||||
useEventsDispatcher();
|
useEventsDispatcher();
|
||||||
applyMetaThemeColor();
|
applyMetaThemeColor();
|
||||||
@@ -82,6 +94,8 @@
|
|||||||
onerror={() => reportStateFromAudio('error', audioEl?.error?.message)}
|
onerror={() => reportStateFromAudio('error', audioEl?.error?.message)}
|
||||||
></audio>
|
></audio>
|
||||||
|
|
||||||
|
<QueueDrawer />
|
||||||
|
|
||||||
<QueryClientProvider client={queryClient}>
|
<QueryClientProvider client={queryClient}>
|
||||||
{#if user.value !== null && page.url.pathname !== '/login'}
|
{#if user.value !== null && page.url.pathname !== '/login'}
|
||||||
<Shell>{@render children()}</Shell>
|
<Shell>{@render children()}</Shell>
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
import type { LayoutLoad } from './$types';
|
import type { LayoutLoad } from './$types';
|
||||||
import { bootstrap } from '$lib/auth/store.svelte';
|
import { bootstrap, user } from '$lib/auth/store.svelte';
|
||||||
|
import { restoreQueue } from '$lib/player/store.svelte';
|
||||||
|
|
||||||
export const ssr = false; // adapter-static fallback; we're SPA-only
|
export const ssr = false; // adapter-static fallback; we're SPA-only
|
||||||
export const prerender = false;
|
export const prerender = false;
|
||||||
|
|
||||||
export const load: LayoutLoad = async () => {
|
export const load: LayoutLoad = async () => {
|
||||||
await bootstrap();
|
await bootstrap();
|
||||||
|
const userId = user.value?.id;
|
||||||
|
if (userId) restoreQueue(userId);
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user