Live video on the AT Protocol
1import {
2 LivestreamProvider,
3 Player,
4 PlayerProps,
5 PlayerProvider,
6 ThemeProvider,
7} from "@streamplace/components";
8import { DesktopUi } from "components/mobile/desktop-ui";
9import {
10 setSidebarHidden,
11 setSidebarUnhidden,
12} from "features/base/sidebarSlice";
13import { useEffect } from "react";
14import { useAppDispatch } from "store/hooks";
15import { isWeb } from "tamagui";
16import { queryToProps } from "./util";
17
18export default function EmbedScreen({ route }) {
19 const { user, protocol, url } = route.params;
20 let extraProps: Partial<PlayerProps> = {};
21 const dispatch = useAppDispatch();
22 useEffect(() => {
23 dispatch(setSidebarHidden());
24 () => {
25 // on unmount, unhide the sidebar
26 dispatch(setSidebarUnhidden());
27 };
28 }, []);
29 if (isWeb) {
30 extraProps = queryToProps(new URLSearchParams(window.location.search));
31 }
32 let src = user;
33 if (user === "stream") {
34 src = url;
35 }
36 return (
37 <ThemeProvider>
38 <LivestreamProvider src={src}>
39 <PlayerProvider {...extraProps}>
40 <Player src={src} {...extraProps}>
41 <DesktopUi />
42 </Player>
43 </PlayerProvider>
44 </LivestreamProvider>
45 </ThemeProvider>
46 );
47}