private rover replays for those who are allowed the luxury of using them when closed

This commit is contained in:
legop3
2026-06-01 14:04:34 -04:00
parent 292325d85f
commit 12cd90a3b0
4 changed files with 12 additions and 9 deletions
+5 -5
View File
@@ -1,8 +1,8 @@
1. FIX THE NICKNAME THING BEING BROKEN!!!! 1. allow private rover replays for people who are allowed to drive them
1. add faster way for admins to login, like an invisible button in top left or something 2. add faster way for admins to login, like an invisible button in top left or something
2. add discord bot typing thing for when someone requests a replay 3. add discord bot typing thing for when someone requests a replay
3. change replay title for ones requested from discord, something other than "requester driving rover" 4. change replay title for ones requested from discord, something other than "requester driving rover"
4. fix rover request spam queue cheat 5. fix rover request spam queue cheat
# relative pipe dreams: # relative pipe dreams:
@@ -7,7 +7,7 @@ const { getRoomCameras } = require('../roomCameraService');
function getReplaySources(socket = null) { function getReplaySources(socket = null) {
const roster = socket ? roverManager.getRosterForSocket(socket) : roverManager.getRoster(); const roster = socket ? roverManager.getRosterForSocket(socket) : roverManager.getRoster();
const roverSources = roster const roverSources = roster
.filter((rover) => roverManager.canReplayRoverId(rover.id)) .filter((rover) => roverManager.canReplayRoverId(rover.id, socket))
.map((rover) => ({ .map((rover) => ({
type: 'rover', type: 'rover',
id: String(rover.id), id: String(rover.id),
@@ -28,7 +28,6 @@ function getRoomCameraStream(camera) {
function listDesiredSources() { function listDesiredSources() {
const sources = []; const sources = [];
for (const rover of roverManager.getRoster()) { for (const rover of roverManager.getRoster()) {
if (!roverManager.canReplayRoverId(rover.id)) continue;
const roverId = String(rover.id); const roverId = String(rover.id);
sources.push({ id: roverId, sourceType: 'rover', kind: 'video', label: rover.name || roverId, inputUrl: toSrtReadPath(roverId) }); sources.push({ id: roverId, sourceType: 'rover', kind: 'video', label: rover.name || roverId, inputUrl: toSrtReadPath(roverId) });
if (rover?.media?.audioPublishUrl) { if (rover?.media?.audioPublishUrl) {
+6 -2
View File
@@ -188,8 +188,12 @@ function removeSocket(socket) {
roverLifecycle.removeSocket(socket, disableSpectator); roverLifecycle.removeSocket(socket, disableSpectator);
} }
function canReplayRoverId(roverId) { function canReplayRoverId(roverId, socket = null) {
return roverLifecycle.canReplayRoverId(roverId, isPrivateRecord, isPrivateOpen); const record = rovers.get(String(roverId));
if (!record) return false;
if (!isPrivateRecord(record)) return true;
if (isPrivateOpen(record)) return true;
return socket ? isRoverVisibleToSocket(record, socket) : false;
} }
roleEvents.on('change', ({ socket, role }) => { roleEvents.on('change', ({ socket, role }) => {