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
@@ -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),
@@ -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) {
+6 -2
View File
@@ -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 }) => {