diff --git a/src/view/com/util/post-embeds/VideoWebControls.web.tsx b/src/view/com/util/post-embeds/VideoWebControls.web.tsx index bbd6899f86..f5d40878ac 100644 --- a/src/view/com/util/post-embeds/VideoWebControls.web.tsx +++ b/src/view/com/util/post-embeds/VideoWebControls.web.tsx @@ -104,16 +104,45 @@ export function Controls({ } }, [onScreen, pause, active, play, autoplayDisabled]) - const onPressPlayPause = useCallback(() => { + // clicking on any button should focus the player, if it's not already focused + const drawFocus = useCallback(() => { + if (!active) { + setActive() + } + setFocused(true) + }, [active, setActive, setFocused]) + + const onPressEmptySpace = useCallback(() => { if (!focused) { - if (!active) { - setActive() - } - setFocused(true) + drawFocus() } else { togglePlayPause() } - }, [togglePlayPause, setActive, setFocused, active, focused]) + }, [togglePlayPause, drawFocus, focused]) + + const onPressPlayPause = useCallback(() => { + drawFocus() + togglePlayPause() + }, [drawFocus, togglePlayPause]) + + const onPressSubtitles = useCallback(() => { + drawFocus() + setSubtitlesEnabled(!subtitlesEnabled) + }, [drawFocus, setSubtitlesEnabled, subtitlesEnabled]) + + const onPressMute = useCallback(() => { + drawFocus() + toggleMute() + }, [drawFocus, toggleMute]) + + const onPressFullscreen = useCallback(() => { + drawFocus() + if (document.fullscreenElement) { + document.exitFullscreen() + } else { + enterFullscreen() + } + }, [drawFocus, enterFullscreen]) const showControls = (focused && !playing) || (interactingViaKeypress ? hasFocus : hovered) @@ -149,7 +178,7 @@ export function Controls({ : msg`Play video`, )} style={a.flex_1} - onPress={onPressPlayPause} + onPress={onPressEmptySpace} />