diff options
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/Link.tsx | 14 | ||||
-rw-r--r-- | src/components/RichText.tsx | 4 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/components/Link.tsx b/src/components/Link.tsx index 26cea5968..8bebecbc8 100644 --- a/src/components/Link.tsx +++ b/src/components/Link.tsx @@ -69,6 +69,11 @@ type BaseLinkProps = Pick< * Native-only attribute. If true, will open the share sheet on long press. */ shareOnLongPress?: boolean + + /** + * Whether the link should be opened through the redirect proxy. + */ + shouldProxy?: boolean } export function useLink({ @@ -80,9 +85,11 @@ export function useLink({ onLongPress: outerOnLongPress, shareOnLongPress, overridePresentation, + shouldProxy, }: BaseLinkProps & { displayText: string overridePresentation?: boolean + shouldProxy?: boolean }) { const navigation = useNavigationDeduped() const {href} = useLinkProps<AllNavigatorParams>({ @@ -118,7 +125,7 @@ export function useLink({ }) } else { if (isExternal) { - openLink(href, overridePresentation) + openLink(href, overridePresentation, shouldProxy) } else { const shouldOpenInNewTab = shouldClickOpenNewTab(e) @@ -161,6 +168,7 @@ export function useLink({ action, navigation, overridePresentation, + shouldProxy, ], ) @@ -219,6 +227,7 @@ export function Link({ onPress: outerOnPress, onLongPress: outerOnLongPress, download, + shouldProxy, ...rest }: LinkProps) { const {href, isExternal, onPress, onLongPress} = useLink({ @@ -227,6 +236,7 @@ export function Link({ action, onPress: outerOnPress, onLongPress: outerOnLongPress, + shouldProxy: shouldProxy, }) return ( @@ -279,6 +289,7 @@ export function InlineLinkText({ shareOnLongPress, disableUnderline, overridePresentation, + shouldProxy, ...rest }: InlineLinkProps) { const t = useTheme() @@ -292,6 +303,7 @@ export function InlineLinkText({ onLongPress: outerOnLongPress, shareOnLongPress, overridePresentation, + shouldProxy: shouldProxy, }) const { state: hovered, diff --git a/src/components/RichText.tsx b/src/components/RichText.tsx index 7005d0742..d501f4287 100644 --- a/src/components/RichText.tsx +++ b/src/components/RichText.tsx @@ -23,6 +23,7 @@ export type RichTextProps = TextStyleProp & onLinkPress?: LinkProps['onPress'] interactiveStyle?: TextStyle emojiMultiplier?: number + shouldProxyLinks?: boolean } export function RichText({ @@ -39,6 +40,7 @@ export function RichText({ emojiMultiplier = 1.85, onLayout, onTextLayout, + shouldProxyLinks, }: RichTextProps) { const richText = React.useMemo( () => @@ -110,6 +112,7 @@ export function RichText({ style={interactiveStyles} // @ts-ignore TODO dataSet={WORD_WRAP} + shouldProxy={shouldProxyLinks} onPress={onLinkPress}> {segment.text} </InlineLinkText> @@ -128,6 +131,7 @@ export function RichText({ // @ts-ignore TODO dataSet={WORD_WRAP} shareOnLongPress + shouldProxy={shouldProxyLinks} onPress={onLinkPress} emoji> {toShortUrl(segment.text)} |