xtablo-source/xtablo-expo/components/ExternalLink.tsx
2025-10-11 12:32:52 +02:00

25 lines
806 B
TypeScript

import { ExternalPathString, Link, RelativePathString } from "expo-router";
import { openBrowserAsync } from "expo-web-browser";
import { type ComponentProps } from "react";
import { Platform } from "react-native";
type Props = Omit<ComponentProps<typeof Link>, "href"> & { href: string };
export function ExternalLink({ href, ...rest }: Props) {
return (
<Link
target="_blank"
rel="noreferrer"
{...rest}
href={href as RelativePathString | ExternalPathString}
onPress={async (event) => {
if (Platform.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);
}
}}
/>
);
}