import RoverMediaPlayer from '../RoverMediaPlayer/index.jsx'; import HudOverlay from '../HudOverlays/HudOverlay/index.jsx'; import RoverDescriptionOverlay from '../HudOverlays/RoverDescriptionOverlay/index.jsx'; import OvercurrentOverlay from '../HudOverlays/OvercurrentOverlay/index.jsx'; import LowBatteryOverlay from '../HudOverlays/LowBatteryOverlay/index.jsx'; import VerticalBatteryOverlay from '../HudOverlays/VerticalBatteryOverlay/index.jsx'; import RoverHelpOverlay from '../RoverHelpOverlay/index.jsx'; import { useSessionSelector } from '../../context/SessionContext.jsx'; export default function SpectateVideo({ roverId = null, label, fitParent = false, layoutFormat = 'desktop', needsHelp = false, }) { const isExternalSpectatorSnapshotOnly = useSessionSelector((state) => state.session?.role === 'spectator' && state.session?.isLocalNetwork === false && state.session?.bandwidthSavings?.externalSpectatorVideo === 'snapshots', ); /* Server auth already denies external spectator WHEP when this policy is set, but explicitly selecting snapshot mode avoids expected authorization denials and keeps analytics focused on actual stream failures. */ const videoMode = isExternalSpectatorSnapshotOnly ? 'snapshot' : null; return (
); }