diff options
author | Hailey <me@haileyok.com> | 2024-07-03 18:15:08 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-04 02:15:08 +0100 |
commit | aa7117edb60711a67464f7559118334185f01680 (patch) | |
tree | b0ccd3d7ef0d792613542a1af48c3fbae1f36f21 /src/components/Link.tsx | |
parent | a3d4fb652b888ba81aecbf0e81a954968ea65d39 (diff) | |
download | voidsky-aa7117edb60711a67464f7559118334185f01680.tar.zst |
Add starter pack embeds to posts (#4699)
* starter pack embeds * revert test code * Types * add `BaseLink` * precache on click * rm log * add a comment * loading state * top margin --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/components/Link.tsx')
-rw-r--r-- | src/components/Link.tsx | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/src/components/Link.tsx b/src/components/Link.tsx index d8ac829b6..a8b478be7 100644 --- a/src/components/Link.tsx +++ b/src/components/Link.tsx @@ -1,5 +1,10 @@ import React from 'react' -import {GestureResponderEvent} from 'react-native' +import { + GestureResponderEvent, + Pressable, + StyleProp, + ViewStyle, +} from 'react-native' import {sanitizeUrl} from '@braintree/sanitize-url' import {StackActions, useLinkProps} from '@react-navigation/native' @@ -323,3 +328,45 @@ export function InlineLinkText({ </Text> ) } + +/** + * A Pressable that uses useLink to handle navigation. It is unstyled, so can be used in cases where the Button styles + * in Link are not desired. + * @param displayText + * @param style + * @param children + * @param rest + * @constructor + */ +export function BaseLink({ + displayText, + onPress: onPressOuter, + style, + children, + ...rest +}: { + style?: StyleProp<ViewStyle> + children: React.ReactNode + to: string + action: 'push' | 'replace' | 'navigate' + onPress?: () => false | void + shareOnLongPress?: boolean + label: string + displayText?: string +}) { + const {onPress, ...btnProps} = useLink({ + displayText: displayText ?? rest.to, + ...rest, + }) + return ( + <Pressable + style={style} + onPress={e => { + onPressOuter?.() + onPress(e) + }} + {...btnProps}> + {children} + </Pressable> + ) +} |