From 583db67853b19fdb035fc7987e3e6fb05a536e73 Mon Sep 17 00:00:00 2001 From: tapframe Date: Fri, 8 Aug 2025 01:00:04 +0530 Subject: [PATCH] some change in players --- src/components/player/AndroidVideoPlayer.tsx | 27 ++++++++++++++------ src/components/player/VideoPlayer.tsx | 4 +-- src/hooks/useTraktAutosync.ts | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/components/player/AndroidVideoPlayer.tsx b/src/components/player/AndroidVideoPlayer.tsx index a6e3b812..40d14224 100644 --- a/src/components/player/AndroidVideoPlayer.tsx +++ b/src/components/player/AndroidVideoPlayer.tsx @@ -956,23 +956,34 @@ const AndroidVideoPlayer: React.FC = () => { setUseCustomSubtitles(true); setSelectedTextTrack(-1); logger.log(`[AndroidVideoPlayer] Loaded subtitle: ${subtitle.lang} from ${subtitle.addonName}`); - console.log('[AndroidVideoPlayer] Subtitle loaded successfully'); + console.log('[AndroidVideoPlayer] Subtitle loaded successfully, about to seek'); // Force a state update by triggering a seek - if (videoRef.current && duration > 0) { + if (videoRef.current && duration > 0 && !isSeeking.current) { const currentPos = currentTime; - console.log('[AndroidVideoPlayer] Forcing a micro-seek to refresh subtitle state'); - videoRef.current.seek(currentPos); + console.log(`[AndroidVideoPlayer] Forcing a micro-seek to refresh subtitle state from ${currentPos}s`); + seekToTime(currentPos); + + // Wait for seek to complete before clearing loading state + setTimeout(() => { + console.log('[AndroidVideoPlayer] Clearing isLoadingSubtitles after seek timeout'); + setIsLoadingSubtitles(false); + }, 600); // Wait longer than seekToTime's internal timeout (500ms) + } else { + console.warn(`[AndroidVideoPlayer] Cannot seek to refresh subtitles: videoRef=${!!videoRef.current}, duration=${duration}, seeking=${isSeeking.current}`); + // Clear loading state immediately if we can't seek + setTimeout(() => { + setIsLoadingSubtitles(false); + console.log('[AndroidVideoPlayer] isLoadingSubtitles set to false (no seek)'); + }, 100); } } catch (error) { logger.error('[AndroidVideoPlayer] Error loading Stremio subtitle:', error); console.log('[AndroidVideoPlayer] Subtitle loading failed:', error); - } finally { - console.log('[AndroidVideoPlayer] Setting isLoadingSubtitles to false'); - // Add a small delay to ensure state updates are processed + // Clear loading state on error setTimeout(() => { setIsLoadingSubtitles(false); - console.log('[AndroidVideoPlayer] isLoadingSubtitles set to false'); + console.log('[AndroidVideoPlayer] isLoadingSubtitles set to false (error)'); }, 100); } }; diff --git a/src/components/player/VideoPlayer.tsx b/src/components/player/VideoPlayer.tsx index 70a44fb5..20667e16 100644 --- a/src/components/player/VideoPlayer.tsx +++ b/src/components/player/VideoPlayer.tsx @@ -51,8 +51,8 @@ const VideoPlayer: React.FC = () => { // Use AndroidVideoPlayer for: // - Android devices // - Xprime streams on any platform - // - Non-MKV files on iOS - if (Platform.OS === 'android' || isXprimeStream || (Platform.OS === 'ios' && !isMkvFile)) { + // - MKV files on iOS are now handled by VideoPlayer.tsx (VLCPlayer) + if (Platform.OS === 'android' || isXprimeStream) { return ; } diff --git a/src/hooks/useTraktAutosync.ts b/src/hooks/useTraktAutosync.ts index 013a6d07..2ae8d4aa 100644 --- a/src/hooks/useTraktAutosync.ts +++ b/src/hooks/useTraktAutosync.ts @@ -204,7 +204,7 @@ export function useTraktAutosync(options: TraktAutosyncOptions) { // Removed excessive logging for handlePlaybackEnd calls if (!isAuthenticated || !autosyncSettings.enabled) { - logger.log(`[TraktAutosync] Skipping handlePlaybackEnd: authenticated=${isAuthenticated}, enabled=${autosyncSettings.enabled}`); + // logger.log(`[TraktAutosync] Skipping handlePlaybackEnd: authenticated=${isAuthenticated}, enabled=${autosyncSettings.enabled}`); return; }