Переглянути джерело

Auto-open Now Playing bar when playback starts

- Track previous playing state with useRef to detect transitions
- When is_running or is_paused becomes true, automatically show the bar
- Uses status_update WebSocket messages for real-time detection

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
tuanchris 3 тижнів тому
батько
коміт
7d57015d97
1 змінених файлів з 10 додано та 0 видалено
  1. 10 0
      frontend/src/components/layout/Layout.tsx

+ 10 - 0
frontend/src/components/layout/Layout.tsx

@@ -68,6 +68,7 @@ export function Layout() {
 
 
   // Now Playing bar state
   // Now Playing bar state
   const [isNowPlayingOpen, setIsNowPlayingOpen] = useState(false)
   const [isNowPlayingOpen, setIsNowPlayingOpen] = useState(false)
+  const wasPlayingRef = useRef(false) // Track previous playing state to detect start
   const [logs, setLogs] = useState<Array<{ timestamp: string; level: string; logger: string; message: string }>>([])
   const [logs, setLogs] = useState<Array<{ timestamp: string; level: string; logger: string; message: string }>>([])
   const [logLevelFilter, setLogLevelFilter] = useState<string>('ALL')
   const [logLevelFilter, setLogLevelFilter] = useState<string>('ALL')
   const logsWsRef = useRef<WebSocket | null>(null)
   const logsWsRef = useRef<WebSocket | null>(null)
@@ -91,6 +92,15 @@ export function Layout() {
           if (data.connected !== undefined) {
           if (data.connected !== undefined) {
             setIsConnected(data.connected)
             setIsConnected(data.connected)
           }
           }
+          // Auto-open Now Playing bar when playback starts
+          if (data.type === 'status_update' && data.data) {
+            const isPlaying = data.data.is_running || data.data.is_paused
+            if (isPlaying && !wasPlayingRef.current) {
+              // Playback just started - open the Now Playing bar
+              setIsNowPlayingOpen(true)
+            }
+            wasPlayingRef.current = isPlaying
+          }
         } catch {
         } catch {
           // Ignore parse errors
           // Ignore parse errors
         }
         }