From 9d14aecdd917abb3bb33669ee34e49bc21f03961 Mon Sep 17 00:00:00 2001 From: Mayank Sharma Date: Fri, 19 Jun 2026 15:31:28 +0530 Subject: [PATCH 1/6] fix(videoplayer): resolve fullscreen, volume, NaN time, play end, and local source issues in NetflixStylePlayer --- .../VideoPlayer/NetflixStylePlayer.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/VideoPlayer/NetflixStylePlayer.tsx b/frontend/src/components/VideoPlayer/NetflixStylePlayer.tsx index 84c8f7737..ece0b6aca 100644 --- a/frontend/src/components/VideoPlayer/NetflixStylePlayer.tsx +++ b/frontend/src/components/VideoPlayer/NetflixStylePlayer.tsx @@ -11,6 +11,7 @@ import { VolumeX, } from 'lucide-react'; import { Slider } from '../../components/ui/Slider'; +import { convertFileSrc } from '@tauri-apps/api/core'; interface NetflixStylePlayerProps { videoSrc: string; @@ -38,22 +39,31 @@ export default function NetflixStylePlayer({ timeout = setTimeout(() => setShowControls(false), 3000); }; + const handleFullscreenChange = () => { + setIsFullscreen(document.fullscreenElement === containerRef.current); + }; + const container = containerRef.current; if (container) { container.addEventListener('mousemove', showControlsTemporarily); container.addEventListener('mouseenter', showControlsTemporarily); } + document.addEventListener('fullscreenchange', handleFullscreenChange); return () => { if (container) { container.removeEventListener('mousemove', showControlsTemporarily); container.removeEventListener('mouseenter', showControlsTemporarily); } + document.removeEventListener('fullscreenchange', handleFullscreenChange); clearTimeout(timeout); }; }, []); const formatTime = (timeInSeconds: number) => { + if (isNaN(timeInSeconds) || !isFinite(timeInSeconds)) { + return '0:00'; + } const hours = Math.floor(timeInSeconds / 3600); const minutes = Math.floor((timeInSeconds % 3600) / 60); const seconds = Math.floor(timeInSeconds % 60); @@ -95,7 +105,6 @@ export default function NetflixStylePlayer({ } else { document.exitFullscreen(); } - setIsFullscreen(!isFullscreen); }; const skipTime = (seconds: number) => { @@ -108,6 +117,7 @@ export default function NetflixStylePlayer({ if (videoRef.current) { const volumeValue = newVolume[0]; videoRef.current.volume = volumeValue; + videoRef.current.muted = volumeValue === 0; setVolume(volumeValue); setIsMuted(volumeValue === 0); } @@ -130,9 +140,11 @@ export default function NetflixStylePlayer({ >