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 (
}>
-
+
+
+
+ Show only chat
+
+ 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 ? (