mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-19 02:33:43 +08:00
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { useCallback } from 'react';
|
|
|
|
interface UseMobileTogglePlayProps {
|
|
videoRef: React.RefObject<HTMLVideoElement>;
|
|
isPlaying: boolean;
|
|
isTogglingRef: React.MutableRefObject<boolean>;
|
|
setShowMoreMenu: (show: boolean) => void;
|
|
setShowVolumeMenu: (show: boolean) => void;
|
|
setShowSpeedMenu: (show: boolean) => void;
|
|
}
|
|
|
|
export function useMobileTogglePlay({
|
|
videoRef,
|
|
isPlaying,
|
|
isTogglingRef,
|
|
setShowMoreMenu,
|
|
setShowVolumeMenu,
|
|
setShowSpeedMenu
|
|
}: UseMobileTogglePlayProps) {
|
|
return useCallback(async () => {
|
|
if (!videoRef.current || isTogglingRef.current) return;
|
|
isTogglingRef.current = true;
|
|
|
|
try {
|
|
if (isPlaying) {
|
|
videoRef.current.pause();
|
|
} else {
|
|
setShowMoreMenu(false);
|
|
setShowVolumeMenu(false);
|
|
setShowSpeedMenu(false);
|
|
await videoRef.current.play();
|
|
}
|
|
} catch (error) {
|
|
console.warn('Play/pause error:', error);
|
|
} finally {
|
|
isTogglingRef.current = false;
|
|
}
|
|
}, [isPlaying, videoRef, isTogglingRef, setShowMoreMenu, setShowVolumeMenu, setShowSpeedMenu]);
|
|
}
|