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"; import StopEditActionModalContent from "./src/Screens/Device/modals/EditActions/Stop"; import SearchForNewDevicesModalContent from "./src/Screens/SearchForNewDevices"; import HelpCenterModalContent from "./src/Screens/Help/modals/HelpCenter"; import { FeedbackStepsModalContent } from "./src/Screens/Help/modals/Feedback/steps"; import GiveFeedbackModalContent from "./src/Screens/Help/modals/Feedback"; import FeedbackFinishedModalContent from "./src/Screens/Help/modals/Feedback/finished"; const Drawer = createDrawerNavigator(); const Stack = createStackNavigator(); const SettingsScreen = lazy(() => import("./src/Screens/Settings")); const HelpScreen = lazy(() => import("./src/Screens/Help")); const NoDevicesConnectedScreen = lazy(() => import("./src/Screens/NoDevicesConnected") ); 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 ? Constants.defaultColorSwatchesFavorites : 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, border: "transparent", }, }; 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.editActions.modalStopEditAction.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t( "screens.device.scenes.modalUpdateSceneName.pageTitle" ), }) } /> options({ navigation: navigation, pageTitle: t("screens.help.modalHelpCenter.pageTitle"), }) } /> options({ navigation: navigation, pageTitle: t("screens.help.modalGiveFeedback.pageTitle"), }) } /> options({ navigation: navigation, pageTitle: t("screens.help.modalFeedbackSteps.pageTitle"), }) } /> options({ navigation: navigation, pageTitle: t("screens.help.modalFeedbackFinished.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" ), }) } /> options({ navigation: navigation, pageTitle: t("screens.modalSearchForNewDevices.pageTitle"), }) } /> ); } // This is for the left sidebar navigation function MyDrawer() { const appContext = useContext(AppContext); return ( } > {appContext.devices.map((device) => ( ))} ); } const DeviceScreenStack = (props) => { return ( ); }; const NoDevicesConnectedStack = (props) => { const { t } = useTranslation(); 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, headerTitleAlign: "center", 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... } > ); }