mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 12:49:06 +00:00
fix: meeting useEffect frontend-only dedupe (#647)
* meeting useEffect frontend-only dedupe * format * also get room by name backend fix --------- Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
This commit is contained in:
@@ -147,7 +147,12 @@ class MeetingController:
|
|||||||
Get a meeting by room name.
|
Get a meeting by room name.
|
||||||
For backward compatibility, returns the most recent meeting.
|
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)
|
result = await get_database().fetch_one(query)
|
||||||
if not result:
|
if not result:
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ async def rooms_get_by_name(
|
|||||||
):
|
):
|
||||||
user_id = user["sub"] if user else None
|
user_id = user["sub"] if user else None
|
||||||
room = await rooms_controller.get_by_name(room_name)
|
room = await rooms_controller.get_by_name(room_name)
|
||||||
|
logger.debug("room: %s", room)
|
||||||
if not room:
|
if not room:
|
||||||
raise HTTPException(status_code=404, detail="Room not found")
|
raise HTTPException(status_code=404, detail="Room not found")
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState, useRef } from "react";
|
||||||
import { useError } from "../(errors)/errorContext";
|
import { useError } from "../(errors)/errorContext";
|
||||||
import type { components } from "../reflector-api";
|
import type { components } from "../reflector-api";
|
||||||
import { shouldShowError } from "../lib/errorUtils";
|
import { shouldShowError } from "../lib/errorUtils";
|
||||||
@@ -37,11 +37,16 @@ const useRoomMeeting = (
|
|||||||
const createMeetingMutation = useRoomsCreateMeeting();
|
const createMeetingMutation = useRoomsCreateMeeting();
|
||||||
const reloadHandler = () => setReload((prev) => prev + 1);
|
const reloadHandler = () => setReload((prev) => prev + 1);
|
||||||
|
|
||||||
|
// this is to undupe dev mode room creation
|
||||||
|
const creatingRef = useRef(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!roomName) return;
|
if (!roomName) return;
|
||||||
|
if (creatingRef.current) return;
|
||||||
|
|
||||||
// For any case where we need a meeting (with or without meetingId),
|
// For any case where we need a meeting (with or without meetingId),
|
||||||
const createMeeting = async () => {
|
const createMeeting = async () => {
|
||||||
|
creatingRef.current = true;
|
||||||
try {
|
try {
|
||||||
const result = await createMeetingMutation.mutateAsync({
|
const result = await createMeetingMutation.mutateAsync({
|
||||||
params: {
|
params: {
|
||||||
@@ -64,6 +69,8 @@ const useRoomMeeting = (
|
|||||||
} else {
|
} else {
|
||||||
setError(error);
|
setError(error);
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
creatingRef.current = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user