Live video on the AT Protocol
79
fork

Configure Feed

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

allow passing ui down so we can get proper fullscreen

+14 -6
+5 -2
js/app/components/mobile/player.tsx
··· 4 4 PlayerProps, 5 5 PlayerProvider, 6 6 usePlayerDimensions, 7 + usePlayerStore, 7 8 View, 8 9 } from "@streamplace/components"; 9 10 import { useSidebarControl } from "hooks/useSidebarControl"; ··· 65 66 }, 66 67 ) { 67 68 let sb = useSidebarControl(); 69 + let fullscreen = usePlayerStore((x) => x.fullscreen); 68 70 const { 69 71 shouldShowChatSidePanel, 70 72 chatPanelWidth, ··· 137 139 }, 138 140 ]} 139 141 > 140 - <PlayerInnerInner {...props} /> 141 - {showBottomMetaPanel && <DesktopUi />} 142 + <PlayerInnerInner {...props}> 143 + {(showBottomMetaPanel || fullscreen) && <DesktopUi />} 144 + </PlayerInnerInner> 142 145 </Animated.View> 143 146 {showBottomMetaPanel && ( 144 147 <BottomMetadata
+3 -1
js/components/src/components/mobile-player/fullscreen.native.tsx
··· 10 10 // Standard 16:9 video aspect ratio 11 11 const VIDEO_ASPECT_RATIO = 16 / 9; 12 12 13 - export function Fullscreen(props: { src: string }) { 13 + export function Fullscreen(props: { src: string; children?: React.ReactNode }) { 14 14 const ref = useRef<VideoView>(null); 15 15 const insets = useSafeAreaInsets(); 16 16 const navigation = useNavigation(); ··· 157 157 ]} 158 158 > 159 159 <Video /> 160 + {props.children} 160 161 </View> 161 162 </View> 162 163 ); ··· 166 167 return ( 167 168 <> 168 169 <Video /> 170 + {props.children} 169 171 </> 170 172 ); 171 173 }
+2 -1
js/components/src/components/mobile-player/fullscreen.tsx
··· 4 4 import { View } from "../../components/ui"; 5 5 import Video from "./video"; 6 6 7 - export function Fullscreen(props: { src: string }) { 7 + export function Fullscreen(props: { src: string; children?: React.ReactNode }) { 8 8 const playerId = getFirstPlayerID(); 9 9 const protocol = usePlayerStore((x) => x.protocol, playerId); 10 10 const fullscreen = usePlayerStore((x) => x.fullscreen, playerId); ··· 77 77 style={{ width: "100%", height: "100%", overflow: "hidden" }} 78 78 > 79 79 <Video /> 80 + {props.children} 80 81 </View> 81 82 ); 82 83 }
+4 -2
js/components/src/components/mobile-player/player.tsx
··· 15 15 16 16 export * as PlayerUI from "./ui"; 17 17 18 - export function Player(props: Partial<PlayerProps>) { 18 + export function Player( 19 + props: Partial<PlayerProps> & { children?: React.ReactNode }, 20 + ) { 19 21 const playing = usePlayerStore((x) => x.status === PlayerStatus.PLAYING); 20 22 21 23 const setOffline = usePlayerStore((x) => x.setOffline); ··· 83 85 layout.flex.center, 84 86 ]} 85 87 > 86 - <Fullscreen src={props.src}></Fullscreen> 88 + <Fullscreen src={props.src}>{props.children}</Fullscreen> 87 89 </View> 88 90 </> 89 91 );