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