diff options
author | Hailey <me@haileyok.com> | 2024-03-14 18:46:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-14 18:46:06 -0700 |
commit | 4f8381678da505737a96b7420c0f1ea8329f3672 (patch) | |
tree | 2d216fe1d68824cccad0d627a60cca48128a17c4 /src/view/com/util/Link.tsx | |
parent | 6279c5cf3186183367d376d8ba9213688f37d252 (diff) | |
download | voidsky-4f8381678da505737a96b7420c0f1ea8329f3672.tar.zst |
Remove `FixedTouchableHighlight` , fix Android press issues (#3214)
* rm `FixedTouchableHighlight` * adjust delay for highlight * remove unnecessary background colors to support background ripple
Diffstat (limited to 'src/view/com/util/Link.tsx')
-rw-r--r-- | src/view/com/util/Link.tsx | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx index f45622488..7468111b5 100644 --- a/src/view/com/util/Link.tsx +++ b/src/view/com/util/Link.tsx @@ -8,7 +8,6 @@ import { View, ViewStyle, Pressable, - TouchableWithoutFeedback, TouchableOpacity, } from 'react-native' import {useLinkProps, StackActions} from '@react-navigation/native' @@ -23,7 +22,6 @@ import { import {isAndroid, isWeb} from 'platform/detection' import {sanitizeUrl} from '@braintree/sanitize-url' import {PressableWithHover} from './PressableWithHover' -import FixedTouchableHighlight from '../pager/FixedTouchableHighlight' import {useModalControls} from '#/state/modals' import {useOpenLink} from '#/state/preferences/in-app-browser' import {WebAuxClickWrapper} from 'view/com/util/WebAuxClickWrapper' @@ -31,6 +29,7 @@ import { DebouncedNavigationProp, useNavigationDeduped, } from 'lib/hooks/useNavigationDeduped' +import {useTheme} from '#/alf' type Event = | React.MouseEvent<HTMLAnchorElement, MouseEvent> @@ -63,6 +62,7 @@ export const Link = memo(function Link({ navigationAction, ...props }: Props) { + const t = useTheme() const {closeModal} = useModalControls() const navigation = useNavigationDeduped() const anchorHref = asAnchor ? sanitizeUrl(href) : undefined @@ -85,37 +85,23 @@ export const Link = memo(function Link({ ) if (noFeedback) { - if (isAndroid) { - // workaround for Android not working well with left/right swipe gestures and TouchableWithoutFeedback - // https://github.com/callstack/react-native-pager-view/issues/424 - return ( - <FixedTouchableHighlight - testID={testID} - onPress={onPress} - // @ts-ignore web only -prf - href={asAnchor ? sanitizeUrl(href) : undefined} - accessible={accessible} - accessibilityRole="link" - {...props}> - <View style={style}> - {children ? children : <Text>{title || 'link'}</Text>} - </View> - </FixedTouchableHighlight> - ) - } return ( <WebAuxClickWrapper> - <TouchableWithoutFeedback + <Pressable testID={testID} onPress={onPress} accessible={accessible} accessibilityRole="link" - {...props}> + {...props} + android_ripple={{ + color: t.atoms.bg_contrast_25.backgroundColor, + }} + unstable_pressDelay={isAndroid ? 90 : undefined}> {/* @ts-ignore web only -prf */} <View style={style} href={anchorHref}> {children ? children : <Text>{title || 'link'}</Text>} </View> - </TouchableWithoutFeedback> + </Pressable> </WebAuxClickWrapper> ) } |