diff --git a/src/app/_layout.tsx b/src/app/_layout.tsx index ecce622..68f9cef 100644 --- a/src/app/_layout.tsx +++ b/src/app/_layout.tsx @@ -15,7 +15,8 @@ import * as SplashScreen from 'expo-splash-screen'; import { StatusBar } from 'expo-status-bar'; import { useEffect } from 'react'; import { Appearance, Pressable, View, useColorScheme as useRNColorScheme } from 'react-native'; -import { SafeAreaProvider } from 'react-native-safe-area-context'; +import FlashMessage from 'react-native-flash-message'; +import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context'; SplashScreen.preventAutoHideAsync().catch(() => {}); @@ -38,6 +39,17 @@ function BackHeader({ onBack }: { onBack: () => void }) { ); } +/** + * Global mount for `showMessage()` (update checks, download notifications, + * domain switch). Without a in the tree those toasts are + * silently dropped. Must live inside SafeAreaProvider; `statusBarHeight` + * keeps top-positioned messages below the status bar. + */ +function GlobalFlashMessage() { + const insets = useSafeAreaInsets(); + return ; +} + export default function RootLayout() { const [theme] = useThemeConfig(); const systemScheme = useRNColorScheme(); @@ -111,6 +123,7 @@ export default function RootLayout() { + );