diff --git a/app/javascript/TrackPage.tsx b/app/javascript/TrackPage.tsx index 75d4892..837b891 100644 --- a/app/javascript/TrackPage.tsx +++ b/app/javascript/TrackPage.tsx @@ -6,7 +6,7 @@ import { Navigate, useParams, useNavigate } from "react-router-dom"; import { Link as RouterLink } from "react-router-dom"; import { motion } from "framer-motion"; -import { HStack, Box, AspectRatio, Container, Skeleton, Flex } from "@chakra-ui/react"; +import { HStack, Box, AspectRatio, Container, Skeleton, Flex, Switch, FormControl, FormLabel } from "@chakra-ui/react"; import { Tabs, Tab, TabList, TabPanels, TabPanel } from "@chakra-ui/react"; import { Api, Track } from "./Api"; @@ -27,6 +27,7 @@ export const TrackPageInner: React.FC = () => { const navigate = useNavigate(); const streamOptionState = Api.useTrackStreamOptions(); const { slug: trackSlug } = useParams(); + const [chatOnly, setChatOnly] = React.useState(false); if (!trackSlug) throw new Error("?"); // XXX: const { data: conferenceData, error: conferenceError } = Api.useConference(); @@ -73,7 +74,18 @@ export const TrackPageInner: React.FC = () => { return ( }> - + + + + setChatOnly(!chatOnly)} + /> + ); diff --git a/app/javascript/TrackView.tsx b/app/javascript/TrackView.tsx index 7a090ec..6fe30d3 100644 --- a/app/javascript/TrackView.tsx +++ b/app/javascript/TrackView.tsx @@ -22,9 +22,10 @@ const AppVersionAlert = loadable(() => import("./AppVersionAlert")); export type Props = { track: Track; streamOptionsState: TrackStreamOptionsState; + chatOnly: boolean; }; -export const TrackView: React.FC = ({ track, streamOptionsState }) => { +export const TrackView: React.FC = ({ track, streamOptionsState, chatOnly }) => { const [streamOptions, setStreamOptions] = streamOptionsState; const trackOptionsSelector = (instance: string) => ( @@ -49,38 +50,42 @@ export const TrackView: React.FC = ({ track, streamOptionsState }) => { return ( - - - - - } - > - - - {/* TODO: hide caption while offline */} - {streamOptions.caption ? ( - }> - { - setStreamOptions({ ...streamOptions, caption: false }); - }} - /> + {!chatOnly ? ( + + + + + } + > + + {chatOnly} - ) : null} + {/* TODO: hide caption while offline */} + {streamOptions.caption ? ( + }> + { + setStreamOptions({ ...streamOptions, caption: false }); + }} + /> + + ) : null} - - {trackOptionsSelector("1")} + + {trackOptionsSelector("1")} + - + ) : null} {lightningTimer ? (