From 2a376bb0effb8913e4c3bb94843cbc163dd94a56 Mon Sep 17 00:00:00 2001 From: Aleksi Lassila Date: Thu, 30 May 2024 00:37:15 +0300 Subject: [PATCH] fix: Performance and ui fixes --- src/lib/components/Card/Card.svelte | 1 + .../EpisodeCard/TmdbEpisodeCard.svelte | 5 +++-- .../components/SeriesPage/EpisodeGrid.svelte | 5 ++--- src/lib/components/StackRouter/StackRouter.ts | 18 +++++++++++++++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/lib/components/Card/Card.svelte b/src/lib/components/Card/Card.svelte index 6131125..1e51553 100644 --- a/src/lib/components/Card/Card.svelte +++ b/src/lib/components/Card/Card.svelte @@ -77,6 +77,7 @@ } )} style={`width: ${dimensions.width}px; height: ${dimensions.height}px;`} + focusOnClick bind:hasFocus > import EpisodeCard from './EpisodeCard.svelte'; - import type { TmdbSeasonEpisode } from '../../apis/tmdb/tmdb-api'; + import type { TmdbSeasonEpisode, TmdbSeries2 } from '../../apis/tmdb/tmdb-api'; import { TMDB_BACKDROP_SMALL } from '../../constants'; export let episode: TmdbSeasonEpisode; + export let series: TmdbSeries2 | undefined = undefined; export let handlePlay: (() => void) | undefined; export let isWatched = false; export let playbackProgress = 0; @@ -12,7 +13,7 @@ ; export let handleRequestSeason: (season: number) => Promise; - console.log('ID IS: ', id); - let awaitedJellyfinEpisodes: JellyfinItem[] = []; jellyfinEpisodes.then((episodes) => { awaitedJellyfinEpisodes = episodes; @@ -124,9 +122,10 @@ {@const jellyfinEpisodeId = jellyfinEpisode?.Id} {#key episode.id} handleMountCard(e.detail, episode)} on:enter={scrollIntoView({ top: 92, bottom: 128 })} - {episode} handlePlay={jellyfinEpisodeId ? () => playerState.streamJellyfinId(jellyfinEpisodeId) : undefined} diff --git a/src/lib/components/StackRouter/StackRouter.ts b/src/lib/components/StackRouter/StackRouter.ts index 7cf43cc..210382b 100644 --- a/src/lib/components/StackRouter/StackRouter.ts +++ b/src/lib/components/StackRouter/StackRouter.ts @@ -29,12 +29,23 @@ export type StackRouterStore = ReturnType; type Indexes = { id: string; bottom: number; top: number }; -export function useStackRouter({ routes, notFound }: { routes: Route[]; notFound: Route }) { +export function useStackRouter({ + routes, + notFound, + maxDepth +}: { + routes: Route[]; + notFound: Route; + maxDepth?: number; +}) { const { initialPages, initialIndexes } = getInitialValues(); const indexes = writable(initialIndexes); const pageStack = writable(initialPages); const visibleStack = derived([indexes, pageStack], ([$indexes, $stack]) => { - return $stack.slice($indexes.bottom, $indexes.top + 1); + return $stack.slice( + maxDepth ? Math.max($indexes.bottom, $indexes.top - maxDepth + 1) : $indexes.bottom, + $indexes.top + 1 + ); }); visibleStack.subscribe((v) => console.log('visibleStack', v)); @@ -229,7 +240,8 @@ export const defaultStackRouter = useStackRouter({ searchRoute, manageRoute ], - notFound: notFoundRoute + notFound: notFoundRoute, + maxDepth: 3 }); // export const defaultStackRouter = useStackRouter({ // '/': {