diff --git a/server/reflector/db/meetings.py b/server/reflector/db/meetings.py index f0257846..12a0c187 100644 --- a/server/reflector/db/meetings.py +++ b/server/reflector/db/meetings.py @@ -147,7 +147,12 @@ class MeetingController: Get a meeting by room name. For backward compatibility, returns the most recent meeting. """ - query = meetings.select().where(meetings.c.room_name == room_name).order_by(end_date.desc()) + end_date = getattr(meetings.c, "end_date") + query = ( + meetings.select() + .where(meetings.c.room_name == room_name) + .order_by(end_date.desc()) + ) result = await get_database().fetch_one(query) if not result: return None diff --git a/server/reflector/views/rooms.py b/server/reflector/views/rooms.py index d3de0185..85336ea0 100644 --- a/server/reflector/views/rooms.py +++ b/server/reflector/views/rooms.py @@ -165,6 +165,7 @@ async def rooms_get_by_name( ): user_id = user["sub"] if user else None room = await rooms_controller.get_by_name(room_name) + logger.debug("room: %s", room) if not room: raise HTTPException(status_code=404, detail="Room not found") diff --git a/www/app/[roomName]/useRoomMeeting.tsx b/www/app/[roomName]/useRoomMeeting.tsx index 8b81277b..8a9f7b4a 100644 --- a/www/app/[roomName]/useRoomMeeting.tsx +++ b/www/app/[roomName]/useRoomMeeting.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState, useRef } from "react"; import { useError } from "../(errors)/errorContext"; import type { components } from "../reflector-api"; import { shouldShowError } from "../lib/errorUtils"; @@ -37,11 +37,16 @@ const useRoomMeeting = ( const createMeetingMutation = useRoomsCreateMeeting(); const reloadHandler = () => setReload((prev) => prev + 1); + // this is to undupe dev mode room creation + const creatingRef = useRef(false); + useEffect(() => { if (!roomName) return; + if (creatingRef.current) return; // For any case where we need a meeting (with or without meetingId), const createMeeting = async () => { + creatingRef.current = true; try { const result = await createMeetingMutation.mutateAsync({ params: { @@ -64,6 +69,8 @@ const useRoomMeeting = ( } else { setError(error); } + } finally { + creatingRef.current = false; } };