import React, {useEffect, useRef, useState} from 'react' import {Pressable, View} from 'react-native' import {VideoPlayer, VideoView} from 'expo-video' import {useVideoPlayer} from 'view/com/util/post-embeds/VideoPlayerContext' import {android, atoms as a} from '#/alf' import {Text} from '#/components/Typography' export function VideoEmbedInnerNative() { const player = useVideoPlayer() const ref = useRef(null) return ( ref.current?.enterFullscreen()} /> ) } function Controls({ player, enterFullscreen, }: { player: VideoPlayer enterFullscreen: () => void }) { const [duration, setDuration] = useState(() => Math.floor(player.duration)) const [currentTime, setCurrentTime] = useState(() => Math.floor(player.currentTime), ) const timeRemaining = duration - currentTime const minutes = Math.floor(timeRemaining / 60) const seconds = String(timeRemaining % 60).padStart(2, '0') useEffect(() => { const interval = setInterval(() => { // duration gets reset to 0 on loop if (player.duration) setDuration(Math.floor(player.duration)) setCurrentTime(Math.floor(player.currentTime)) // how often should we update the time? // 1000 gets out of sync with the video time }, 250) return () => { clearInterval(interval) } }, [player]) if (isNaN(timeRemaining)) { return null } return ( {minutes}:{seconds} ) }