import React, { useEffect, useRef } from 'react'; import { isIOS } from 'soapbox/is-mobile'; interface IExtendedVideoPlayer { src: string alt?: string width?: number height?: number time?: number controls?: boolean muted?: boolean onClick?: () => void } const ExtendedVideoPlayer: React.FC = ({ src, alt, time, controls, muted, onClick }) => { const video = useRef(null); useEffect(() => { const handleLoadedData = () => { if (time) { video.current!.currentTime = time; } }; video.current?.addEventListener('loadeddata', handleLoadedData); return () => { video.current?.removeEventListener('loadeddata', handleLoadedData); }; }, [video.current]); const handleClick: React.MouseEventHandler = e => { e.stopPropagation(); const handler = onClick; if (handler) handler(); }; const conditionalAttributes: React.VideoHTMLAttributes = {}; if (isIOS()) { conditionalAttributes.playsInline = true; } return (
); }; export default ExtendedVideoPlayer;