Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at natb/hide-msg 89 lines 3.1 kB view raw
1import { 2 DarkTheme, 3 LinkingOptions, 4 NavigationContainer, 5} from "@react-navigation/native"; 6import { StreamplaceProvider as ZustandStreamplaceProvider } from "@streamplace/components"; 7import { ToastProvider, ToastViewport } from "@tamagui/toast"; 8import { useFonts } from "expo-font"; 9import BlueskyProvider from "features/bluesky/blueskyProvider"; 10import { selectOAuthSession } from "features/bluesky/blueskySlice"; 11import StreamplaceProvider from "features/streamplace/streamplaceProvider"; 12import useStreamplaceNode from "hooks/useStreamplaceNode"; 13import React from "react"; 14import { Provider as ReduxProvider } from "react-redux"; 15import { useAppSelector } from "store/hooks"; 16import { store } from "store/store"; 17import { PortalProvider, TamaguiProvider } from "tamagui"; 18import config from "tamagui.config"; 19import { CurrentToast } from "./CurrentToast"; 20export default function Provider({ 21 children, 22 linking, 23}: { 24 children: React.ReactNode; 25 linking: LinkingOptions<ReactNavigation.RootParamList>; 26}) { 27 return ( 28 <TamaguiProvider config={config} defaultTheme={"dark"}> 29 <NavigationContainer theme={DarkTheme} linking={linking}> 30 <ReduxProvider store={store}> 31 <StreamplaceProvider> 32 <BlueskyProvider> 33 <NewStreamplaceProvider> 34 <PortalProvider> 35 <ToastProvider 36 swipeDirection="vertical" 37 duration={6000} 38 native={ 39 [ 40 /* uncomment the next line to do native toasts on mobile. NOTE: it'll require you making a dev build and won't work with Expo Go */ 41 // 'mobile' 42 ] 43 } 44 > 45 <FontProvider>{children}</FontProvider> 46 <CurrentToast /> 47 <ToastViewport name="default" top="$8" left={0} right={0} /> 48 </ToastProvider> 49 </PortalProvider> 50 </NewStreamplaceProvider> 51 </BlueskyProvider> 52 </StreamplaceProvider> 53 </ReduxProvider> 54 </NavigationContainer> 55 </TamaguiProvider> 56 ); 57} 58 59export const NewStreamplaceProvider = ({ 60 children, 61}: { 62 children: React.ReactNode; 63}) => { 64 const { url } = useStreamplaceNode(); 65 const oauthSession = useAppSelector(selectOAuthSession); 66 return ( 67 <ZustandStreamplaceProvider 68 url={url} 69 oauthSession={oauthSession || undefined} 70 > 71 {children} 72 </ZustandStreamplaceProvider> 73 ); 74}; 75 76export const FontProvider = ({ children }: { children: React.ReactNode }) => { 77 const [fontLoaded, fontError] = useFonts({ 78 "FiraCode-Light": require("../../assets/fonts/FiraCode-Light.ttf"), 79 "FiraCode-Medium": require("../../assets/fonts/FiraCode-Medium.ttf"), 80 "FiraCode-Bold": require("../../assets/fonts/FiraCode-Bold.ttf"), 81 "FiraSans-Medium": require("../../assets/fonts/FiraSans-Medium.ttf"), 82 }); 83 84 if (!fontLoaded && !fontError) { 85 return null; 86 } 87 88 return <>{children}</>; 89};