diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-11-22 15:23:24 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-22 15:23:24 +0000 |
commit | 5d4aaa5b5faa595d1967eabe11fda9615d7ba1f6 (patch) | |
tree | 9393ff40a5e549ea587e64af21134091068eb314 /src | |
parent | 437bdcf9a9b3c78f1d9c5aae35757e78db7ad062 (diff) | |
download | voidsky-5d4aaa5b5faa595d1967eabe11fda9615d7ba1f6.tar.zst |
[a11y] Video - fix labels and make more detailed (#6635)
* fix labels and make more detailed * move overall label to parent
Diffstat (limited to 'src')
6 files changed, 23 insertions, 7 deletions
diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/TimeIndicator.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/TimeIndicator.tsx index e9615fe63..75e544aca 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/TimeIndicator.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/TimeIndicator.tsx @@ -1,5 +1,7 @@ import {StyleProp, ViewStyle} from 'react-native' import {View} from 'react-native' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {atoms as a, useTheme} from '#/alf' import {Text} from '#/components/Typography' @@ -16,6 +18,7 @@ export function TimeIndicator({ style?: StyleProp<ViewStyle> }) { const t = useTheme() + const {_} = useLingui() if (isNaN(time)) { return null @@ -27,6 +30,8 @@ export function TimeIndicator({ return ( <View pointerEvents="none" + accessibilityLabel={_(msg`Time remaining: ${time} seconds`)} + accessibilityHint="" style={[ { backgroundColor: 'rgba(0, 0, 0, 0.5)', diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerWeb.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerWeb.tsx index fb1860708..e6882a2f6 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerWeb.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerWeb.tsx @@ -1,6 +1,8 @@ import React, {useEffect, useId, useRef, useState} from 'react' import {View} from 'react-native' import {AppBskyEmbedVideo} from '@atproto/api' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' import type * as HlsTypes from 'hls.js' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' @@ -27,6 +29,7 @@ export function VideoEmbedInnerWeb({ const [hasSubtitleTrack, setHasSubtitleTrack] = useState(false) const [hlsLoading, setHlsLoading] = React.useState(false) const figId = useId() + const {_} = useLingui() // send error up to error boundary const [error, setError] = useState<Error | null>(null) @@ -49,7 +52,10 @@ export function VideoEmbedInnerWeb({ }, [lastKnownTime]) return ( - <View style={[a.flex_1, a.rounded_md, a.overflow_hidden]}> + <View + style={[a.flex_1, a.rounded_md, a.overflow_hidden]} + accessibilityLabel={_(msg`Embedded video player`)} + accessibilityHint=""> <div ref={containerRef} style={{height: '100%', width: '100%'}}> <figure style={{margin: 0, position: 'absolute', inset: 0}}> <video diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/ControlButton.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/ControlButton.tsx index 8ffe482a8..651046445 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/ControlButton.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/ControlButton.tsx @@ -23,7 +23,8 @@ export function ControlButton({ return ( <PressableWithHover accessibilityRole="button" - accessibilityHint={active ? activeLabel : inactiveLabel} + accessibilityLabel={active ? activeLabel : inactiveLabel} + accessibilityHint="" onPress={onPress} style={[ a.p_xs, @@ -32,9 +33,9 @@ export function ControlButton({ ]} hoverStyle={{backgroundColor: 'rgba(255, 255, 255, 0.2)'}}> {active ? ( - <ActiveIcon fill={t.palette.white} width={20} /> + <ActiveIcon fill={t.palette.white} width={20} aria-hidden /> ) : ( - <InactiveIcon fill={t.palette.white} width={20} /> + <InactiveIcon fill={t.palette.white} width={20} aria-hidden /> )} </PressableWithHover> ) diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/Scrubber.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/Scrubber.tsx index 44978ad51..74aad64e1 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/Scrubber.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/Scrubber.tsx @@ -186,7 +186,9 @@ export function Scrubber({ </View> <div ref={circleRef} - aria-label={_(msg`Seek slider`)} + aria-label={_( + msg`Seek slider. Use the arrow keys to seek forwards and backwards, and space to play/pause`, + )} role="slider" aria-valuemax={duration} aria-valuemin={0} diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VideoControls.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VideoControls.tsx index acd4d1aae..8e134d221 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VideoControls.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VideoControls.tsx @@ -313,13 +313,14 @@ export function Controls({ onPointerEnter={onPointerMoveEmptySpace} onPointerMove={onPointerMoveEmptySpace} onPointerLeave={onPointerLeaveEmptySpace} - accessibilityHint={_( + accessibilityLabel={_( !focused ? msg`Unmute video` : playing ? msg`Pause video` : msg`Play video`, )} + accessibilityHint="" style={[ a.flex_1, web({cursor: showCursor || !playing ? 'pointer' : 'none'}), @@ -401,7 +402,7 @@ export function Controls({ <ControlButton active={isFullscreen} activeLabel={_(msg`Exit fullscreen`)} - inactiveLabel={_(msg`Fullscreen`)} + inactiveLabel={_(msg`Enter fullscreen`)} activeIcon={ArrowsInIcon} inactiveIcon={ArrowsOutIcon} onPress={onPressFullscreen} diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VolumeControl.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VolumeControl.tsx index 63ac32b10..90ffb9e6b 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VolumeControl.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VolumeControl.tsx @@ -77,6 +77,7 @@ export function VolumeControl({ min={0} max={100} value={sliderVolume} + aria-label={_(msg`Volume`)} style={ // Ridiculous safari hack for old version of safari. Fixed in sonoma beta -h isSafari ? {height: 92, minHeight: '100%'} : {height: '100%'} |