import "react-native-gesture-handler"; import { StatusBar } from "expo-status-bar"; import { Text, View } from "react-native"; import { createDrawerNavigator } from "@react-navigation/drawer"; import { DefaultTheme, NavigationContainer } from "@react-navigation/native"; import SideBar from "./src/Components/SideBar"; import { AppContext, AppProvider, AppStyles, Constants, GetDataFromList, GetMultipleData, IsPlatformIos, } from "./src/utils"; import { Suspense, lazy, useContext, useEffect } from "react"; import { SafeAreaView } from "react-native-safe-area-context"; import "./i18n"; import DeviceScreen from "./src/Screens/Device"; import { createStackNavigator } from "@react-navigation/stack"; import { TouchableOpacity } from "react-native"; import MyIcon from "./src/Components/Icon"; import { useTranslation } from "react-i18next"; import ChooseSceneModalContent from "./src/Screens/Device/modals/ChooseScene"; import CreateSceneModalContent from "./src/Screens/Device/modals/ChooseScene/CreateScene"; import AddSceneActionModalContent from "./src/Screens/Device/modals/AddSceneAction"; import LayerSelectionModalContent from "./src/Screens/Device/modals/AddSceneAction/LayerSelection"; import { SettingsAppColorSchemeModalContent, SettingsAppLanguageModalContent, } from "./src/Screens/Settings"; import UpdateSceneNameModalContent from "./src/Screens/Device/modals/UpdateSceneName"; import SettingsChangeDeviceDisplayNameModalContent from "./src/Screens/Device/modals/SettingsChangeDeviceDisplayName"; import LightsEditActionModalContent, { LightsEditActionColorModeSelectionModalContent, } from "./src/Screens/Device/modals/EditActions/Lights"; import { EditActionAnimationSelectionModalContent } from "./src/Screens/Device/modals/EditActions"; import MotorEditActionModalContent, { MotorEditActionMotorModeSelectionModalContent, } from "./src/Screens/Device/modals/EditActions/Motor"; import WaitXSecondsEditActionModalContent from "./src/Screens/Device/modals/EditActions/Wait"; const Drawer = createDrawerNavigator(); const Stack = createStackNavigator(); const SettingsScreen = lazy(() => import("./src/Screens/Settings")); const HelpScreen = lazy(() => import("./src/Screens/Help")); export function MyApp() { const appContext = useContext(AppContext); const { t } = useTranslation(); useEffect(() => { const loadData = async () => { const data = await GetMultipleData([ "appLanguage", "appColorScheme", "userExpertMode", "userDeveloperMode", "userColorSwatchesFavorites", ]); const appLanguage = GetDataFromList(data, "appLanguage"); const appColorScheme = GetDataFromList(data, "appColorScheme"); const userExpertMode = GetDataFromList(data, "userExpertMode"); const userDeveloperMode = GetDataFromList(data, "userDeveloperMode"); const userColorSwatchesFavorites = GetDataFromList( data, "userColorSwatchesFavorites" ); appContext.setAppLanguage( appLanguage === null ? Constants.defaultLanguage : appLanguage ); appContext.setAppColorScheme( appColorScheme === null ? "auto" : appColorScheme ); appContext.setIsUserExpertModeEnabled( userExpertMode == null ? false : userExpertMode ); appContext.setUserIsDeveloperModeEnabled( userDeveloperMode == null ? false : userDeveloperMode ); appContext.setUserColorSwatchesFavorites( userColorSwatchesFavorites === null ? [] : userColorSwatchesFavorites ); }; loadData(); }, []); const options = ({ navigation, pageTitle }) => { return getScreenStackOptions( navigation, pageTitle, appContext.appTheme.text, appContext.appTheme.backgroundColor, true ); }; const navigatonTheme = { ...DefaultTheme, colors: { ...DefaultTheme.colors, background: appContext.appTheme.backgroundColor, }, }; return ( options({ navigation: navigation, pageTitle: t( "screens.device.scenes.modalChooseScene.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.modalCreateScene.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.modalAddSceneAction.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.modalLayerSelection.pageTitle" ), }) } /> options({ navigation: navigation, }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.editActions.modalLightsEditActionColorModeSelection.pageTitle" ), }) } /> options({ navigation: navigation, }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.editActions.modalMotorEditAction.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.editActions.modalMotorEditActionMotorModeSelection.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.editActions.modalWaitEditAction.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.modalUpdateSceneName.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t("screens.settings.appColorSchemeModalTitle"), }) } /> options({ navigation: navigation, pageTitle: t("screens.settings.languageModalTitle"), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.settings.modalSettingsChangeDeviceDisplayName.pageTitle" ), }) } /> ); } function MyDrawer() { const appContext = useContext(AppContext); return ( } > {appContext.devices.map((device) => ( ))} ); } const DeviceScreenStack = (props) => { return ( ); }; const HelpScreenStack = (props) => { const { t } = useTranslation(); return ( ); }; const SettingsScreenStack = (props) => { const { t } = useTranslation(); return ( ); }; function getScreenStackOptions( navigation, pageTitle, headerTintColor, headerBackgroundColor, isModalScreen ) { return { title: pageTitle, headerLeft: () => ( isModalScreen ? navigation.goBack() : navigation.toggleDrawer() } > ), headerTintColor: headerTintColor, headerStyle: { backgroundColor: headerBackgroundColor, height: IsPlatformIos() ? 76 : 56, }, }; } function MyScreenStack({ navigation, name, pageTitle, component, params }) { const appContext = useContext(AppContext); return ( ); } export default function App() { return ( Loading... } > ); }