last tickets

This commit is contained in:
Thomas Demirdjian
2025-11-21 21:57:41 +01:00
parent a58b13d09f
commit 471a3177e8
13 changed files with 677 additions and 714 deletions
@@ -0,0 +1,61 @@
import { useEffect, useMemo, useState } from "react";
import { useVideoPlayer } from "expo-video";
const usePlaybackPlayer = ({ item, isActive }) => {
const baseVideoUrl = item?.playbackUrl || null;
const videoUrl = baseVideoUrl;
const videoPlayer = useVideoPlayer(videoUrl || null, (player) => {
player.loop = false;
player.muted = false;
player.timeUpdateEventInterval = 0.2;
});
const shouldAutoPlay = isActive;
useEffect(() => {
if (!videoPlayer) return;
if (shouldAutoPlay) {
try {
videoPlayer.currentTime = 0;
videoPlayer.play();
} catch (e) {}
} else if (videoPlayer?.playing) {
try {
videoPlayer.pause();
} catch (e) {}
}
}, [shouldAutoPlay, videoPlayer]);
useEffect(() => {
return () => {
try {
if (videoPlayer?.playing) videoPlayer.pause();
} catch (e) {}
};
}, [videoPlayer]);
const [currentTimeS, setCurrentTimeS] = useState(0);
useEffect(() => {
if (!isActive) return;
const id = global.setInterval(() => {
try {
setCurrentTimeS(Number(videoPlayer?.currentTime || 0));
} catch (e) {}
}, 250);
return () => global.clearInterval(id);
}, [isActive, videoPlayer]);
const playerState = useMemo(
() => ({
videoUrl,
videoPlayer,
currentTimeS,
}),
[videoPlayer, videoUrl, currentTimeS]
);
return playerState;
};
export default usePlaybackPlayer;