Live video on the AT Protocol

Move defaultStreamer logic to router level for cleaner single-user instance handling.

authored by

Natalie Bridgers and committed by
Natalie B.
f8e3fa24 624fda24

+10 -20
+9 -1
js/app/src/router.tsx
··· 17 17 import { createNativeStackNavigator } from "@react-navigation/native-stack"; 18 18 import { 19 19 Text, 20 + useDefaultStreamer, 20 21 useSiteTitle, 21 22 useTheme, 22 23 useToast, ··· 710 711 const theme = useTheme(); 711 712 const { isWeb } = usePlatform(); 712 713 const siteTitle = useSiteTitle(); 714 + const defaultStreamer = useDefaultStreamer(); 715 + 716 + // if defaultStreamer is set, show stream directly instead of home screen 717 + const initialRouteName = 718 + defaultStreamer && defaultStreamer.trim() ? "Stream" : "StreamList"; 719 + 713 720 return ( 714 721 <Stack.Navigator 715 - initialRouteName="StreamList" 722 + initialRouteName={initialRouteName} 716 723 screenOptions={{ 717 724 headerLeft: ({ canGoBack }) => ( 718 725 <NavigationButton canGoBack={canGoBack} /> ··· 729 736 <Stack.Screen 730 737 name="Stream" 731 738 component={MobileStream} 739 + initialParams={{ user: defaultStreamer || undefined }} 732 740 options={{ 733 741 headerTitle: "Stream", 734 742 title: "Streamplace Stream",
+1 -19
js/app/src/screens/home.tsx
··· 1 - import { useNavigation } from "@react-navigation/native"; 2 - import { 3 - Text, 4 - useDefaultStreamer, 5 - useStreamplaceStore, 6 - zero, 7 - } from "@streamplace/components"; 1 + import { Text, useStreamplaceStore, zero } from "@streamplace/components"; 8 2 import AQLink from "components/aqlink"; 9 3 import Container from "components/container"; 10 4 import ErrorBox from "components/error/error"; ··· 168 162 const liveUsersError = useStreamplaceStore((state) => state.liveUsersError); 169 163 const [manualRefresh, setManualRefresh] = useState(false); 170 164 const { width } = useWindowDimensions(); 171 - const navigation = useNavigation(); 172 - const defaultStreamer = useDefaultStreamer(); 173 - 174 - // if defaultStreamer is set, redirect to that stream 175 - useEffect(() => { 176 - if (defaultStreamer && defaultStreamer.trim()) { 177 - navigation.navigate("Home", { 178 - screen: "Stream", 179 - params: { user: defaultStreamer }, 180 - }); 181 - } 182 - }, [defaultStreamer, navigation]); 183 165 184 166 // Use mock data for development/testing if needed 185 167 //const segments = generateMockSegments(1).streams; // Uncomment this line to use mock data