From 38b2508de654597fab0d509b8dd4325cdfe76d9a Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 27 Dec 2025 17:50:42 -0800 Subject: [PATCH] unrender sidebar play queue when fullscreen player is open --- .../components/sidebar-play-queue.tsx | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/renderer/features/now-playing/components/sidebar-play-queue.tsx b/src/renderer/features/now-playing/components/sidebar-play-queue.tsx index c276b4d4e..784953c47 100644 --- a/src/renderer/features/now-playing/components/sidebar-play-queue.tsx +++ b/src/renderer/features/now-playing/components/sidebar-play-queue.tsx @@ -1,5 +1,5 @@ import { useQuery } from '@tanstack/react-query'; -import { lazy, Suspense, useCallback, useMemo, useRef, useState } from 'react'; +import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; // import { Group, Panel, Separator, useDefaultLayout } from 'react-resizable-panels'; import { Pane, SplitPane, usePersistence } from 'react-split-pane'; @@ -12,6 +12,7 @@ import { Lyrics } from '/@/renderer/features/lyrics/lyrics'; import { PlayQueue } from '/@/renderer/features/now-playing/components/play-queue'; import { PlayQueueListControls } from '/@/renderer/features/now-playing/components/play-queue-list-controls'; import { + useFullScreenPlayerStore, useGeneralSettings, usePlaybackSettings, usePlayerSong, @@ -40,6 +41,8 @@ const ButterchurnVisualizer = lazy(() => export const SidebarPlayQueue = () => { const tableRef = useRef(null); const [search, setSearch] = useState(undefined); + const { expanded: isFullScreenPlayerExpanded } = useFullScreenPlayerStore(); + const [shouldRender, setShouldRender] = useState(!isFullScreenPlayerExpanded); const { combinedLyricsAndVisualizer, showLyricsInSidebar, @@ -50,6 +53,23 @@ export const SidebarPlayQueue = () => { const showVisualizer = showVisualizerInSidebar && type === PlayerType.WEB && webAudio; const showPanel = showLyricsInSidebar || showVisualizer; + useEffect(() => { + if (isFullScreenPlayerExpanded) { + // Immediately hide when fullscreen player opens + setShouldRender(false); + return undefined; + } else { + // Wait 500ms before re-rendering when fullscreen player closes to avoid performance issues + const timeoutId = setTimeout(() => { + setShouldRender(true); + }, 500); + + return () => { + clearTimeout(timeoutId); + }; + } + }, [isFullScreenPlayerExpanded]); + const [defaultLayout, onLayoutChange] = usePersistence({ debounce: 300, key: 'sidebar-play-queue-container', @@ -149,6 +169,11 @@ export const SidebarPlayQueue = () => { [defaultLayout, orderedPanels], ); + // Unmount when fullscreen player is open + if (!shouldRender) { + return null; + } + return (