/* Предрейсовые осмотры - мобильное приложение Корневой layout приложения */ //--------------------- //Подключение библиотек //--------------------- const React = require('react'); //React и хуки const { useColorScheme } = require('react-native'); //Определение темы устройства const { SafeAreaProvider } = require('react-native-safe-area-context'); //Провайдер безопасной области const AppShell = require('./AppShell'); //Оболочка приложения const { useAppNavigationContext } = require('./AppNavigationProvider'); //Контекст навигации const { useAppAuthContext } = require('./AppAuthProvider'); //Контекст авторизации const { useAppLocalDbContext } = require('./AppLocalDbProvider'); //Контекст локальной БД //----------- //Тело модуля //----------- //Корневой layout приложения function AppRoot() { const colorScheme = useColorScheme(); const isDarkMode = colorScheme === 'dark'; const { setInitialScreen, SCREENS } = useAppNavigationContext(); const { isAuthenticated, isInitialized } = useAppAuthContext(); const { isDbReady } = useAppLocalDbContext(); //Флаг для предотвращения повторной установки начального экрана const initialScreenSetRef = React.useRef(false); //Установка начального экрана при готовности React.useEffect(() => { //Ждём инициализации БД и авторизации if (!isDbReady || !isInitialized || initialScreenSetRef.current) { return; } initialScreenSetRef.current = true; //Если авторизован - показываем главный экран if (isAuthenticated) { setInitialScreen(SCREENS.MAIN); } }, [isDbReady, isInitialized, isAuthenticated, setInitialScreen, SCREENS.MAIN]); return ( ); } //---------------- //Интерфейс модуля //---------------- module.exports = AppRoot;