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

56 lines (55 loc) 1.54 kB
"use strict"; import { useCallback } from 'react'; /** * Reusable hook for handling ad events (end, skip, error) * Consolidates duplicate logic from handleAdEnd, handleAdSkip, and handleAdError */ export const useAdEventHandler = ({ resumeVideoFromAd, resumeTime, playerEvents, reportProgress, onPressEpisode, autoNext, onAdEnd, onAdError }) => { const handlePostRollAd = useCallback(() => { playerEvents.onEnd({ reportProgress, onPressEpisode: onPressEpisode ?? (async () => true), autoNext }); }, [playerEvents, reportProgress, onPressEpisode, autoNext]); const handleNonPostRollAd = useCallback(() => { resumeVideoFromAd(resumeTime); }, [resumeVideoFromAd, resumeTime]); const handleAdEnd = useCallback(endedAd => { onAdEnd?.(endedAd); if (endedAd.position === 'post') { handlePostRollAd(); } else { handleNonPostRollAd(); } }, [onAdEnd, handlePostRollAd, handleNonPostRollAd]); const handleAdSkip = useCallback(skippedAd => { onAdEnd?.(skippedAd); if (skippedAd.position !== 'post') { handleNonPostRollAd(); } }, [onAdEnd, handleNonPostRollAd]); const handleAdError = useCallback((error, errorAd) => { onAdError?.(error, errorAd); if (errorAd.position !== 'post') { handleNonPostRollAd(); } else { handlePostRollAd(); } }, [onAdError, handleNonPostRollAd, handlePostRollAd]); return { handleAdEnd, handleAdSkip, handleAdError }; }; //# sourceMappingURL=useAdEventHandler.js.map