diff --git a/server/reflector/views/rooms.py b/server/reflector/views/rooms.py index c46f900e..678f76ca 100644 --- a/server/reflector/views/rooms.py +++ b/server/reflector/views/rooms.py @@ -190,13 +190,18 @@ async def rooms_list( user_id = user["sub"] if user else None - return await apaginate( + paginated = await apaginate( get_database(), await rooms_controller.get_all( user_id=user_id, order_by="-created_at", return_query=True ), ) + for room in paginated.items: + room.platform = get_platform_for_room(room.id, room.platform) + + return paginated + @router.get("/rooms/{room_id}", response_model=RoomDetails) async def rooms_get( @@ -209,6 +214,7 @@ async def rooms_get( raise HTTPException(status_code=404, detail="Room not found") if not room.is_shared and (user_id is None or room.user_id != user_id): raise HTTPException(status_code=403, detail="Room access denied") + room.platform = get_platform_for_room(room.id, room.platform) return room @@ -222,17 +228,16 @@ async def rooms_get_by_name( if not room: raise HTTPException(status_code=404, detail="Room not found") - # Convert to RoomDetails format (add webhook fields if user is owner) room_dict = room.__dict__.copy() if user_id == room.user_id: - # User is owner, include webhook details if available room_dict["webhook_url"] = getattr(room, "webhook_url", None) room_dict["webhook_secret"] = getattr(room, "webhook_secret", None) else: - # Non-owner, hide webhook details room_dict["webhook_url"] = None room_dict["webhook_secret"] = None + room_dict["platform"] = get_platform_for_room(room.id, room.platform) + return RoomDetails(**room_dict) @@ -277,6 +282,7 @@ async def rooms_update( raise HTTPException(status_code=403, detail="Not authorized") values = info.dict(exclude_unset=True) await rooms_controller.update(room, values) + room.platform = get_platform_for_room(room.id, room.platform) return room @@ -352,6 +358,8 @@ async def rooms_create_meeting( status_code=503, detail="Meeting creation in progress, please try again" ) + meeting.platform = get_platform_for_room(room.id, room.platform) + if meeting.platform == "daily" and room.recording_trigger != "none": client = create_platform_client(meeting.platform) token = await client.create_meeting_token( @@ -516,7 +524,10 @@ async def rooms_list_active_meetings( room=room, current_time=current_time ) - # Hide host URLs from non-owners + effective_platform = get_platform_for_room(room.id, room.platform) + for meeting in meetings: + meeting.platform = effective_platform + if user_id != room.user_id: for meeting in meetings: meeting.host_room_url = "" @@ -546,6 +557,8 @@ async def rooms_get_meeting( status_code=403, detail="Meeting does not belong to this room" ) + meeting.platform = get_platform_for_room(room.id, room.platform) + if user_id != room.user_id and not room.is_shared: meeting.host_room_url = "" @@ -581,7 +594,8 @@ async def rooms_join_meeting( if meeting.end_date <= current_time: raise HTTPException(status_code=400, detail="Meeting has ended") - # Hide host URL from non-owners + meeting.platform = get_platform_for_room(room.id, room.platform) + if user_id != room.user_id: meeting.host_room_url = ""