diff options
author | Ollie H <renahlee@outlook.com> | 2023-05-30 17:50:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-30 19:50:56 -0500 |
commit | a9a661ab58dc298124b8400f57156c17d47a5a4f (patch) | |
tree | e60b09fc0d874e4b1c03c5612ea8e21689e710b4 /src/view/com/posts/FeedItem.tsx | |
parent | 7458b6f600a3d25812a64d93096b2a94676a7bb6 (diff) | |
download | voidsky-a9a661ab58dc298124b8400f57156c17d47a5a4f.tar.zst |
Add ability to reply, repost (without quote post), and like posts using VoiceOver (#765)
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Diffstat (limited to 'src/view/com/posts/FeedItem.tsx')
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index 553c3a244..413300bbc 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -1,4 +1,4 @@ -import React, {useMemo, useState} from 'react' +import React, {useCallback, useMemo, useState} from 'react' import {observer} from 'mobx-react-lite' import {Linking, StyleSheet, View} from 'react-native' import Clipboard from '@react-native-clipboard/clipboard' @@ -158,12 +158,48 @@ export const FeedItem = observer(function ({ moderation = {behavior: ModerationBehaviorCode.Show} } + const accessibilityActions = useMemo( + () => [ + { + name: 'reply', + label: 'Reply', + }, + { + name: 'repost', + label: item.post.viewer?.repost ? 'Undo repost' : 'Repost', + }, + {name: 'like', label: item.post.viewer?.like ? 'Unlike' : 'Like'}, + ], + [item.post.viewer?.like, item.post.viewer?.repost], + ) + + const onAccessibilityAction = useCallback( + event => { + switch (event.nativeEvent.actionName) { + case 'like': + onPressToggleLike() + break + case 'reply': + onPressReply() + break + case 'repost': + onPressToggleRepost() + break + default: + break + } + }, + [onPressReply, onPressToggleLike, onPressToggleRepost], + ) + return ( <PostHider testID={`feedItem-by-${item.post.author.handle}`} style={outerStyles} href={itemHref} - moderation={moderation}> + moderation={moderation} + accessibilityActions={accessibilityActions} + onAccessibilityAction={onAccessibilityAction}> {isThreadChild && ( <View style={[styles.topReplyLine, {borderColor: pal.colors.replyLine}]} |