From d6f132b4c9fbcb93e534512c25e226465ac7efef Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Wed, 11 Jun 2025 19:43:52 -0600 Subject: [PATCH] add compact episodes view --- src/assets/locales/en.json | 5 +- src/backend/accounts/settings.ts | 1 + src/components/player/atoms/Episodes.tsx | 51 ++++++++++++++++++--- src/hooks/useSettingsState.ts | 16 ++++++- src/pages/Settings.tsx | 16 ++++++- src/pages/parts/settings/AppearancePart.tsx | 29 ++++++++++++ src/stores/preferences/index.tsx | 8 ++++ 7 files changed, 117 insertions(+), 9 deletions(-) diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json index e21c5b61..f794cb9a 100644 --- a/src/assets/locales/en.json +++ b/src/assets/locales/en.json @@ -792,7 +792,10 @@ "logosLabel": "Image logos", "carouselView": "Carousel view", "carouselViewDescription": "Display your currently watching and bookmark sections as carousels instead of a grid. Disabled by default.", - "carouselViewLabel": "Carousel view" + "carouselViewLabel": "Carousel view", + "forceCompactEpisodeView": "Force compact episode view", + "forceCompactEpisodeViewDescription": "Force the episode carousel in the player to use the \"classic\" compact vertical view. Disabled by default.", + "forceCompactEpisodeViewLabel": "Compact episodes" } }, "connections": { diff --git a/src/backend/accounts/settings.ts b/src/backend/accounts/settings.ts index 88f7b747..dc747e62 100644 --- a/src/backend/accounts/settings.ts +++ b/src/backend/accounts/settings.ts @@ -18,6 +18,7 @@ export interface SettingsInput { enableDetailsModal?: boolean; enableImageLogos?: boolean; enableCarouselView?: boolean; + forceCompactEpisodeView?: boolean; sourceOrder?: string[]; enableSourceOrder?: boolean; proxyTmdb?: boolean; diff --git a/src/components/player/atoms/Episodes.tsx b/src/components/player/atoms/Episodes.tsx index ebebe778..945ff354 100644 --- a/src/components/player/atoms/Episodes.tsx +++ b/src/components/player/atoms/Episodes.tsx @@ -17,6 +17,7 @@ import { Menu } from "@/components/player/internals/ContextMenu"; import { useOverlayRouter } from "@/hooks/useOverlayRouter"; import { PlayerMeta } from "@/stores/player/slices/source"; import { usePlayerStore } from "@/stores/player/store"; +import { usePreferencesStore } from "@/stores/preferences"; import { useProgressStore } from "@/stores/progress"; import { hasAired } from "../utils/aired"; @@ -122,6 +123,9 @@ export function EpisodesView({ const descriptionRefs = useRef<{ [key: string]: HTMLParagraphElement | null; }>({}); + const forceCompactEpisodeView = usePreferencesStore( + (s) => s.forceCompactEpisodeView, + ); const isTextTruncated = (element: HTMLElement | null) => { if (!element) return false; @@ -248,7 +252,12 @@ export function EpisodesView({ content = (