import { checkUserSession } from "@/redux/user/user.actions"; import { selectBodyshop, selectCurrentUser } from "@/redux/user/user.selectors"; import { ApolloProvider } from "@apollo/client"; import { loadDevMessages, loadErrorMessages } from "@apollo/client/dev"; import MaterialIcons from "@expo/vector-icons/MaterialIcons"; import { DarkTheme, DefaultTheme, ThemeProvider, } from "@react-navigation/native"; import * as Notifications from "expo-notifications"; import { Stack } from "expo-router"; import { Icon, Label, NativeTabs, VectorIcon, } from "expo-router/unstable-native-tabs"; import React, { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { ActivityIndicator, Platform, View } from "react-native"; import { Provider as PaperProvider } from "react-native-paper"; import { connect, Provider } from "react-redux"; import { PersistGate } from "redux-persist/integration/react"; import { createStructuredSelector } from "reselect"; import { client } from "../graphql/client"; import { useTheme as usePaperTheme } from "../hooks/useTheme"; import { persistor, store } from "../redux/store"; import "../translations/i18n"; import { registerForPushNotificationsAsync } from "../util/notificationHandler"; loadDevMessages(); loadErrorMessages(); function AuthenticatedLayout() { const { t } = useTranslation(); const paperTheme = usePaperTheme(); return ( {Platform.select({ ios: , android: ( } /> ), })} {/* {Platform.select({ ios: , android: ( } /> ), })} */} {Platform.select({ ios: , android: ( } /> ), })} {Platform.select({ //ios: , android: ( } /> ), })} ); } function UnauthenticatedLayout() { return ( ); } function LoadingLayout() { return ( ); } const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, currentUser: selectCurrentUser, }); const mapDispatchToProps = (dispatch: any) => ({ checkUserSession: () => dispatch(checkUserSession()), }); function AppContent({ currentUser, checkUserSession, bodyshop }: any) { useEffect(() => { checkUserSession(); }, [checkUserSession]); useEffect(() => { registerForPushNotificationsAsync() .then((token) => console.log("Expo Push Token:", token)) .catch((error: any) => console.log("Error getting Expo Push Token:", error) ); const notificationListener = Notifications.addNotificationReceivedListener( async (notification) => { console.log("Notification received:", notification); Notifications.setBadgeCountAsync( (await Notifications.getBadgeCountAsync()) + 1 ); } ); const responseListener = Notifications.addNotificationResponseReceivedListener((response) => { console.log("Notification response received:", response); }); return () => { notificationListener.remove(); responseListener.remove(); }; }, []); if (currentUser.authorized === null) { return ( ); } if (currentUser.authorized) { return ( ); } return ( ); } function ThemedLayout({ children }: { children: React.ReactNode }) { const themeToApply = usePaperTheme(); return {children}; } const ConnectedAppContent = connect( mapStateToProps, mapDispatchToProps )(AppContent); export default function AppLayout() { return ( ); }