Files

55 lines
1.6 KiB
TypeScript

import "./global.css";
import "./src/i18n";
import { useEffect } from "react";
import * as SplashScreen from "expo-splash-screen";
import { StatusBar } from "expo-status-bar";
import { NavigationContainer } from "@react-navigation/native";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { RootNavigator } from "./src/navigation/RootNavigator";
import { DatabaseProvider } from "./src/providers/DatabaseProvider";
import { SettingsProvider } from "./src/providers/WatchProvider";
import { useWatchWorkoutSync } from "./src/features/watch-connectivity/hooks/useWatchWorkoutSync";
import { useSystemLanguageListener } from "./src/i18n";
import * as Sentry from "@sentry/react-native";
SplashScreen.preventAutoHideAsync();
Sentry.init({
dsn: "https://6197bcf085d63727d829aa89ede8e973@o4507430203293696.ingest.de.sentry.io/4511875297706064",
tracesSampleRate: 1.0,
environment: __DEV__ ? "development" : "production",
});
function WatchSync() {
useWatchWorkoutSync();
return null;
}
function SystemLanguageListener() {
useSystemLanguageListener();
return null;
}
function App() {
useEffect(() => {
SplashScreen.hideAsync();
}, []);
return (
<GestureHandlerRootView style={{ flex: 1 }}>
<DatabaseProvider>
<SettingsProvider>
<NavigationContainer>
<SystemLanguageListener />
<WatchSync />
<RootNavigator />
<StatusBar style="light" />
</NavigationContainer>
</SettingsProvider>
</DatabaseProvider>
</GestureHandlerRootView>
);
}
export default Sentry.wrap(App);