connecting to video....

This commit is contained in:
legop3
2026-05-13 20:45:25 -04:00
parent 9436cc79f1
commit 8a05787a1d
6 changed files with 29 additions and 16 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -11,8 +11,8 @@
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Roomba Rover" /> <meta name="apple-mobile-web-app-title" content="Roomba Rover" />
<title>Roomba Rover</title> <title>Roomba Rover</title>
<script type="module" crossorigin src="/assets/index-Cwxivvoc.js"></script> <script type="module" crossorigin src="/assets/index-CytRh6tl.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DCGeKtS8.css"> <link rel="stylesheet" crossorigin href="/assets/index-tJ18YrEo.css">
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
@@ -5,14 +5,16 @@ import React from 'react';
import { useMemo } from 'react'; import { useMemo } from 'react';
import { useSessionSelector } from '../../../context/SessionContext.jsx'; import { useSessionSelector } from '../../../context/SessionContext.jsx';
import { useTelemetryFrame } from '../../../context/TelemetryContext.jsx'; import { useTelemetryFrame } from '../../../context/TelemetryContext.jsx';
import { useOvercurrentLimiter } from '../../../controls/index.js';
import { OVERCURRENT_LABELS } from './constants.js'; import { OVERCURRENT_LABELS } from './constants.js';
function OvercurrentOverlay({ roverId = null, sensors, overcurrentLimiter = null, compact = false }) { function OvercurrentOverlay({ roverId = null, sensors, overcurrentLimiter = null, compact = false }) {
const assignedRoverId = useSessionSelector((state) => state.session?.assignment?.roverId ?? null); const assignedRoverId = useSessionSelector((state) => state.session?.assignment?.roverId ?? null);
const effectiveRoverId = roverId ?? assignedRoverId; const effectiveRoverId = roverId ?? assignedRoverId;
const frame = useTelemetryFrame(effectiveRoverId); const frame = useTelemetryFrame(effectiveRoverId);
const internalLimiter = useOvercurrentLimiter(effectiveRoverId);
const resolvedSensors = sensors ?? frame?.sensors ?? null; const resolvedSensors = sensors ?? frame?.sensors ?? null;
const resolvedOvercurrentLimiter = overcurrentLimiter ?? null; const resolvedOvercurrentLimiter = overcurrentLimiter ?? internalLimiter ?? null;
const wheelOvercurrents = resolvedSensors?.wheelOvercurrents || null; const wheelOvercurrents = resolvedSensors?.wheelOvercurrents || null;
const overcurrentMotors = useMemo( const overcurrentMotors = useMemo(
() => () =>
@@ -534,6 +534,10 @@ export default function RoverMediaPlayer({
: audioDetail : audioDetail
? `${audioStatus} (${audioDetail})` ? `${audioStatus} (${audioDetail})`
: audioStatus; : audioStatus;
const showConnectingOverlay =
!usingSnapshot &&
!resolvedSessionInfo?.error &&
['idle', 'new', 'connecting'].includes(status);
return ( return (
<> <>
@@ -560,6 +564,13 @@ export default function RoverMediaPlayer({
className="h-full w-full object-contain" className="h-full w-full object-contain"
/> />
)} )}
{showConnectingOverlay ? (
<div className="pointer-events-none absolute inset-0 z-10 flex items-center justify-center bg-black/45">
<div className="rounded border border-slate-500/70 bg-black/70 px-3 py-1 text-sm font-semibold text-slate-100">
Connecting to video....
</div>
</div>
) : null}
<audio ref={audioRef} autoPlay hidden /> <audio ref={audioRef} autoPlay hidden />
<div className="pointer-events-none absolute left-1 top-1 z-20 font-medium text-slate-100 text-[0.65rem]"> <div className="pointer-events-none absolute left-1 top-1 z-20 font-medium text-slate-100 text-[0.65rem]">
<div className="flex flex-col gap-0.5 leading-none"> <div className="flex flex-col gap-0.5 leading-none">