replay feedback

This commit is contained in:
legop3
2026-01-13 20:28:33 -05:00
parent 5caf26bb2d
commit cab4dc716d
3 changed files with 11 additions and 6 deletions
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -11,7 +11,7 @@
<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="Multi Roomba Rover" /> <meta name="apple-mobile-web-app-title" content="Multi Roomba Rover" />
<title>Multi Roomba Rover</title> <title>Multi Roomba Rover</title>
<script type="module" crossorigin src="/assets/index-CCZGd9x8.js"></script> <script type="module" crossorigin src="/assets/index-Bidge1Zf.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DPKQJjsh.css"> <link rel="stylesheet" crossorigin href="/assets/index-DPKQJjsh.css">
</head> </head>
<body> <body>
@@ -23,6 +23,7 @@ export default function ReplaySourcesPanel({ panelId = 'replay-sources' }) {
const [selected, setSelected] = useState([]); const [selected, setSelected] = useState([]);
const [busy, setBusy] = useState(false); const [busy, setBusy] = useState(false);
const [error, setError] = useState(null); const [error, setError] = useState(null);
const [success, setSuccess] = useState(null);
const replayState = session?.replay || null; const replayState = session?.replay || null;
const [remainingMs, setRemainingMs] = useState(0); const [remainingMs, setRemainingMs] = useState(0);
@@ -77,18 +78,21 @@ export default function ReplaySourcesPanel({ panelId = 'replay-sources' }) {
saveSettings((current) => ({ ...(current || {}), [panelId]: next })); saveSettings((current) => ({ ...(current || {}), [panelId]: next }));
return next; return next;
}); });
setSuccess(null);
}; };
const handleReplay = async () => { const handleReplay = async () => {
if (replayDisabled) return; if (replayDisabled) return;
setBusy(true); setBusy(true);
setError(null); setError(null);
setSuccess(null);
try { try {
const payload = selected.map((key) => { const payload = selected.map((key) => {
const [type, id] = key.split(':'); const [type, id] = key.split(':');
return { type, id }; return { type, id };
}); });
await triggerReplay(payload); await triggerReplay(payload);
setSuccess('Replay sent. Check the Discord replay channel.');
} catch (err) { } catch (err) {
setError(err.message); setError(err.message);
} finally { } finally {
@@ -116,6 +120,7 @@ export default function ReplaySourcesPanel({ panelId = 'replay-sources' }) {
{remainingMs > 0 ? `Replay (${Math.ceil(remainingMs / 1000)}s)` : busy ? 'Replay…' : 'Replay'} {remainingMs > 0 ? `Replay (${Math.ceil(remainingMs / 1000)}s)` : busy ? 'Replay…' : 'Replay'}
</button> </button>
{error ? <div className="text-xs text-amber-400">{error}</div> : null} {error ? <div className="text-xs text-amber-400">{error}</div> : null}
{success ? <div className="text-xs text-emerald-300">{success}</div> : null}
</div> </div>
</section> </section>
); );