You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
794 B
25 lines
794 B
import { Href, Link } from 'expo-router'; |
|
import { openBrowserAsync, WebBrowserPresentationStyle } from 'expo-web-browser'; |
|
import { type ComponentProps } from 'react'; |
|
|
|
type Props = Omit<ComponentProps<typeof Link>, 'href'> & { href: Href & string }; |
|
|
|
export function ExternalLink({ href, ...rest }: Props) { |
|
return ( |
|
<Link |
|
target="_blank" |
|
{...rest} |
|
href={href} |
|
onPress={async (event) => { |
|
if (process.env.EXPO_OS !== 'web') { |
|
// Prevent the default behavior of linking to the default browser on native. |
|
event.preventDefault(); |
|
// Open the link in an in-app browser. |
|
await openBrowserAsync(href, { |
|
presentationStyle: WebBrowserPresentationStyle.AUTOMATIC, |
|
}); |
|
} |
|
}} |
|
/> |
|
); |
|
}
|
|
|