UNPKG

@zezosoft/zezo-ott-react-native-video-player

Version:

Production-ready React Native OTT video player library for Android & iOS. Features: playlists, seasons, auto-next playback, subtitles (SRT/VTT), custom theming, analytics tracking, fullscreen mode, gesture controls, ads player (pre-roll/mid-roll/post-roll

47 lines (42 loc) 1.39 kB
import { useEffect, useRef } from 'react'; import { useVideoPlayerStore } from '../../store/videoPlayerStore'; import { useAdsPlayerStore } from '../../../AdsPlayer/store/adsPlayerStore'; /** * Reusable hook to pause main video when ads start playing * Saves current time as resume time for pre-roll ads */ export const usePauseVideoOnAd = () => { const { setIsPaused, currentTime, isPaused } = useVideoPlayerStore(); const { currentAd, isAdPlaying, resumeTime, setResumeTime } = useAdsPlayerStore(); const lastResumeTimeRef = useRef<number | null>(null); useEffect(() => { if (isAdPlaying && currentAd) { // Only pause if not already paused to prevent unnecessary updates if (!isPaused) { setIsPaused(true); } // Save current time as resume time if not already set (for pre-roll ads) // Use ref to prevent setting the same value multiple times if ( resumeTime === null && currentTime > 0 && lastResumeTimeRef.current !== currentTime ) { lastResumeTimeRef.current = currentTime; setResumeTime(currentTime); } } else if (!isAdPlaying && !currentAd) { // Reset ref when no ad is playing lastResumeTimeRef.current = null; } }, [ isAdPlaying, currentAd, isPaused, setIsPaused, currentTime, resumeTime, setResumeTime, ]); };