mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-09 04:35:25 +03:00
Improve mobile controls experience
This commit is contained in:
parent
503997c066
commit
eded5260d6
@ -22,7 +22,7 @@ import useKeyboardListener from "@/hooks/use-keyboard-listener";
|
|||||||
|
|
||||||
const HLS_MIME_TYPE = "application/vnd.apple.mpegurl" as const;
|
const HLS_MIME_TYPE = "application/vnd.apple.mpegurl" as const;
|
||||||
|
|
||||||
type HlsVideovideoProps = {
|
type HlsVideoPlayerProps = {
|
||||||
className: string;
|
className: string;
|
||||||
children?: ReactNode;
|
children?: ReactNode;
|
||||||
videoRef: MutableRefObject<HTMLVideoElement | null>;
|
videoRef: MutableRefObject<HTMLVideoElement | null>;
|
||||||
@ -31,7 +31,7 @@ type HlsVideovideoProps = {
|
|||||||
onPlayerLoaded?: () => void;
|
onPlayerLoaded?: () => void;
|
||||||
onTimeUpdate?: (time: number) => void;
|
onTimeUpdate?: (time: number) => void;
|
||||||
};
|
};
|
||||||
export default function HlsVideovideo({
|
export default function HlsVideoPlayer({
|
||||||
className,
|
className,
|
||||||
children,
|
children,
|
||||||
videoRef,
|
videoRef,
|
||||||
@ -39,7 +39,7 @@ export default function HlsVideovideo({
|
|||||||
onClipEnded,
|
onClipEnded,
|
||||||
onPlayerLoaded,
|
onPlayerLoaded,
|
||||||
onTimeUpdate,
|
onTimeUpdate,
|
||||||
}: HlsVideovideoProps) {
|
}: HlsVideoPlayerProps) {
|
||||||
// playback
|
// playback
|
||||||
|
|
||||||
const hlsRef = useRef<Hls>();
|
const hlsRef = useRef<Hls>();
|
||||||
@ -74,6 +74,7 @@ export default function HlsVideovideo({
|
|||||||
// controls
|
// controls
|
||||||
|
|
||||||
const [isPlaying, setIsPlaying] = useState(true);
|
const [isPlaying, setIsPlaying] = useState(true);
|
||||||
|
const [mobileCtrlTimeout, setMobileCtrlTimeout] = useState<NodeJS.Timeout>();
|
||||||
const [controls, setControls] = useState(isMobile);
|
const [controls, setControls] = useState(isMobile);
|
||||||
const [controlsOpen, setControlsOpen] = useState(false);
|
const [controlsOpen, setControlsOpen] = useState(false);
|
||||||
|
|
||||||
@ -148,13 +149,26 @@ export default function HlsVideovideo({
|
|||||||
>
|
>
|
||||||
<video
|
<video
|
||||||
ref={videoRef}
|
ref={videoRef}
|
||||||
className="size-full"
|
className="size-full rounded-2xl"
|
||||||
preload="auto"
|
preload="auto"
|
||||||
autoPlay
|
autoPlay
|
||||||
controls={false}
|
controls={false}
|
||||||
playsInline
|
playsInline
|
||||||
onPlay={() => setIsPlaying(true)}
|
onPlay={() => {
|
||||||
onPause={() => setIsPlaying(false)}
|
setIsPlaying(true);
|
||||||
|
|
||||||
|
if (isMobile) {
|
||||||
|
setControls(true);
|
||||||
|
setMobileCtrlTimeout(setTimeout(() => setControls(false), 4000));
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
onPause={() => {
|
||||||
|
setIsPlaying(false);
|
||||||
|
|
||||||
|
if (isMobile && mobileCtrlTimeout) {
|
||||||
|
clearTimeout(mobileCtrlTimeout);
|
||||||
|
}
|
||||||
|
}}
|
||||||
onTimeUpdate={() =>
|
onTimeUpdate={() =>
|
||||||
onTimeUpdate && videoRef.current
|
onTimeUpdate && videoRef.current
|
||||||
? onTimeUpdate(videoRef.current.currentTime)
|
? onTimeUpdate(videoRef.current.currentTime)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user