A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at main 74 lines 2.4 kB view raw
1import { NavigationContainer } from "@react-navigation/native"; 2import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; 3import Constants from "expo-constants"; 4import { useFonts } from "expo-font"; 5import { StatusBar } from "expo-status-bar"; 6import { useSetAtom } from "jotai"; 7import { SafeAreaProvider } from "react-native-safe-area-context"; 8import { didAtom } from "./atoms/did"; 9import { handleAtom } from "./atoms/handle"; 10import { RootStack } from "./Navigation"; 11import { NowPlayingProvider } from "./providers/NowPlayingProvider"; 12 13const queryClient = new QueryClient(); 14 15const App = () => { 16 const setDid = useSetAtom(didAtom); 17 const setHandle = useSetAtom(handleAtom); 18 useFonts({ 19 RockfordSansRegular: require("../assets/fonts/RockfordSans-Regular.otf"), 20 RockfordSansMedium: require("../assets/fonts/RockfordSans-Medium.otf"), 21 RockfordSansBold: require("../assets/fonts/RockfordSans-Bold.otf"), 22 }); 23 24 const getActiveRouteName = (state: any) => { 25 if (!state || !state.routes) return null; 26 27 const route = state.routes[state.index]; 28 29 // Dive into nested navigators 30 if (route.state) { 31 return getActiveRouteName(route.state); 32 } 33 34 return route.name; 35 }; 36 37 return ( 38 <QueryClientProvider client={queryClient}> 39 <SafeAreaProvider> 40 <NowPlayingProvider> 41 <StatusBar style="auto" /> 42 <NavigationContainer 43 onStateChange={(state) => { 44 const currentTab = getActiveRouteName(state); 45 if (currentTab === "Profile" || currentTab === "Library") { 46 setDid("did:plc:7vdlgi2bflelz7mmuxoqjfcr"); 47 setHandle(undefined); 48 } 49 }} 50 > 51 <RootStack /> 52 </NavigationContainer> 53 </NowPlayingProvider> 54 </SafeAreaProvider> 55 </QueryClientProvider> 56 ); 57}; 58 59let AppEntryPoint = App; 60 61if (Constants.expoConfig?.extra?.storybookEnabled === "true") { 62 const Storybook = require("../.storybook").default; 63 const StorybookApp = () => { 64 useFonts({ 65 RockfordSansRegular: require("../assets/fonts/RockfordSans-Regular.otf"), 66 RockfordSansMedium: require("../assets/fonts/RockfordSans-Medium.otf"), 67 RockfordSansBold: require("../assets/fonts/RockfordSans-Bold.otf"), 68 }); 69 return <Storybook />; 70 }; 71 AppEntryPoint = StorybookApp; 72} 73 74export default AppEntryPoint;