diff --git a/apps/expo/src/app/(tabs)/_layout.tsx b/apps/expo/src/app/(tabs)/_layout.tsx index 305b0ba..d6829b5 100644 --- a/apps/expo/src/app/(tabs)/_layout.tsx +++ b/apps/expo/src/app/(tabs)/_layout.tsx @@ -1,6 +1,8 @@ +import { useEffect } from "react"; import { Platform } from "react-native"; import * as Haptics from "expo-haptics"; -import { Tabs } from "expo-router"; +import * as Linking from "expo-linking"; +import { Tabs, useRouter } from "expo-router"; import * as ScreenOrientation from "expo-screen-orientation"; import { useTheme, View } from "tamagui"; @@ -11,20 +13,21 @@ import TabBarIcon from "~/components/TabBarIcon"; export default function TabLayout() { const theme = useTheme(); - // const url = Linking.useURL(); - // const router = useRouter(); - // - // if (url) { - // const { hostname, queryParams } = Linking.parse(url); - // - // switch (hostname) { - // case "media": - // return router.push({ - // pathname: "/videoPlayer", - // params: { data: JSON.stringify(queryParams) } - // }); - // } - // } + const router = useRouter(); + + useEffect(() => { + const handleOpenURL = (event: Linking.EventType) => { + const { hostname, queryParams } = Linking.parse(event.url); + if (hostname === "media") { + router.push({ + pathname: "/videoPlayer", + params: { data: JSON.stringify(queryParams) }, + }); + } + }; + + Linking.addEventListener("url", handleOpenURL); + }, [router]); return ( diff --git a/apps/expo/src/components/player/BackButton.tsx b/apps/expo/src/components/player/BackButton.tsx index 3115697..26e3bfd 100644 --- a/apps/expo/src/components/player/BackButton.tsx +++ b/apps/expo/src/components/player/BackButton.tsx @@ -14,13 +14,21 @@ export const BackButton = () => { onPress={() => { dismissFullscreenPlayer() .then(() => { - router.back(); + if (router.canGoBack()) { + router.back(); + } else { + router.replace("/"); + } return setTimeout(() => { Keyboard.dismiss(); }, 100); }) .catch(() => { - router.back(); + if (router.canGoBack()) { + router.back(); + } else { + router.replace("/"); + } return setTimeout(() => { Keyboard.dismiss(); }, 100);