diff --git a/plans/to-do.md b/plans/to-do.md index 9f3242ce..c8178be4 100644 --- a/plans/to-do.md +++ b/plans/to-do.md @@ -1,8 +1,8 @@ -1. FIX THE NICKNAME THING BEING BROKEN!!!! -1. 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. change replay title for ones requested from discord, something other than "requester driving rover" -4. fix rover request spam queue cheat +1. allow private rover replays for people who are allowed to drive them +2. add faster way for admins to login, like an invisible button in top left or something +3. add discord bot typing thing for when someone requests a replay +4. change replay title for ones requested from discord, something other than "requester driving rover" +5. fix rover request spam queue cheat # relative pipe dreams: diff --git a/server/src/services/replayEngineV2/replaySources.js b/server/src/services/replayEngineV2/replaySources.js index 9c9f0e1e..4463b95a 100644 --- a/server/src/services/replayEngineV2/replaySources.js +++ b/server/src/services/replayEngineV2/replaySources.js @@ -7,7 +7,7 @@ const { getRoomCameras } = require('../roomCameraService'); function getReplaySources(socket = null) { const roster = socket ? roverManager.getRosterForSocket(socket) : roverManager.getRoster(); const roverSources = roster - .filter((rover) => roverManager.canReplayRoverId(rover.id)) + .filter((rover) => roverManager.canReplayRoverId(rover.id, socket)) .map((rover) => ({ type: 'rover', id: String(rover.id), diff --git a/server/src/services/replayEngineV2/sources.js b/server/src/services/replayEngineV2/sources.js index f139b668..2663e0ec 100644 --- a/server/src/services/replayEngineV2/sources.js +++ b/server/src/services/replayEngineV2/sources.js @@ -28,7 +28,6 @@ function getRoomCameraStream(camera) { function listDesiredSources() { const sources = []; for (const rover of roverManager.getRoster()) { - if (!roverManager.canReplayRoverId(rover.id)) continue; const roverId = String(rover.id); sources.push({ id: roverId, sourceType: 'rover', kind: 'video', label: rover.name || roverId, inputUrl: toSrtReadPath(roverId) }); if (rover?.media?.audioPublishUrl) { diff --git a/server/src/services/roverManager/index.js b/server/src/services/roverManager/index.js index 0ad1e02a..1d70b0a4 100644 --- a/server/src/services/roverManager/index.js +++ b/server/src/services/roverManager/index.js @@ -188,8 +188,12 @@ function removeSocket(socket) { roverLifecycle.removeSocket(socket, disableSpectator); } -function canReplayRoverId(roverId) { - return roverLifecycle.canReplayRoverId(roverId, isPrivateRecord, isPrivateOpen); +function canReplayRoverId(roverId, socket = null) { + 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 }) => {