let everyone make ptz presets.. .. .. .. .. . . . .

This commit is contained in:
legop3
2026-07-13 17:39:13 -04:00
parent be37a39291
commit 8ee680ce9f
8 changed files with 33 additions and 25 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
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
@@ -78,8 +78,8 @@
<script defer src="https://analytics.otter.land/script.js" data-website-id="82dd56a5-db44-4279-bd1e-a4d9fee39af7" data-domains="rover.otter.land"></script>
<script defer src="https://analytics.otter.land/recorder.js" data-website-id="82dd56a5-db44-4279-bd1e-a4d9fee39af7" data-domains="rover.otter.land" data-sample-rate="0.15" data-mask-level="moderate" data-max-duration="300000"></script>
<title>Roomba Rover</title>
<script type="module" crossorigin src="/assets/index-pC9M0gPv.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BN3kEVFL.css">
<script type="module" crossorigin src="/assets/index-eqv2XD2p.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-B_3-jvHM.css">
</head>
<body>
<div id="root"></div>
@@ -1013,9 +1013,10 @@ function requirePtzUser(socket) {
function requirePresetAdmin(socket) {
/*
Preset creation and deletion changes shared camera state for everyone. Keep
that narrower than normal PTZ operation so regular camera users can only
choose from positions an admin has intentionally published.
Preset removal is intentionally narrower than normal PTZ operation because
deleting a shared camera position is destructive for every future operator.
Creation now uses requirePtzUser instead so any authorized PTZ user can save
a useful current position without also being allowed to remove presets.
*/
if (!enabled) throw new Error('PTZ camera disabled');
if (!passesMode(socket)) throw new Error('Not authorized for PTZ camera');
@@ -1117,7 +1118,7 @@ async function gotoPreset(socket, payload = {}) {
}
async function createPreset(socket, payload = {}) {
requirePresetAdmin(socket);
requirePtzUser(socket);
await initialize();
const presetName = normalizePresetCreateName(payload.name || payload.presetName);
const options = {