mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-23 05:39:05 +00:00
Merge main into jisti-integration branch
- Resolved conflicts in server/reflector/views/rooms.py to keep platform-agnostic approach - Resolved conflicts in www/app/[roomName]/page.tsx to keep VideoPlatformEmbed approach - Accepted main's version of generated API files (schemas.gen.ts, services.gen.ts, types.gen.ts) - Removed config-template.ts as per main branch changes
This commit is contained in:
@@ -1,25 +1,28 @@
|
||||
"use client";
|
||||
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { useCallback, useEffect, useState, use } from "react";
|
||||
import { Box, Spinner } from "@chakra-ui/react";
|
||||
import useRoomMeeting from "./useRoomMeeting";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { notFound } from "next/navigation";
|
||||
import useSessionStatus from "../lib/useSessionStatus";
|
||||
import { useAuth } from "../lib/AuthProvider";
|
||||
import VideoPlatformEmbed from "../lib/videoPlatforms/VideoPlatformEmbed";
|
||||
|
||||
export type RoomDetails = {
|
||||
params: {
|
||||
params: Promise<{
|
||||
roomName: string;
|
||||
};
|
||||
}>;
|
||||
};
|
||||
|
||||
export default function Room(details: RoomDetails) {
|
||||
const [platformReady, setPlatformReady] = useState(false);
|
||||
const roomName = details.params.roomName;
|
||||
const params = use(details.params);
|
||||
const roomName = params.roomName;
|
||||
const meeting = useRoomMeeting(roomName);
|
||||
const router = useRouter();
|
||||
const { isLoading, isAuthenticated } = useSessionStatus();
|
||||
const status = useAuth().status;
|
||||
const isAuthenticated = status === "authenticated";
|
||||
const isLoading = status === "loading" || meeting.loading;
|
||||
|
||||
const handleLeave = useCallback(() => {
|
||||
router.push("/browse");
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { useError } from "../(errors)/errorContext";
|
||||
import { Meeting } from "../api";
|
||||
import type { components } from "../reflector-api";
|
||||
import { shouldShowError } from "../lib/errorUtils";
|
||||
import useApi from "../lib/useApi";
|
||||
|
||||
type Meeting = components["schemas"]["Meeting"];
|
||||
import { useRoomsCreateMeeting } from "../lib/apiHooks";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
type ErrorMeeting = {
|
||||
@@ -30,27 +32,25 @@ const useRoomMeeting = (
|
||||
roomName: string | null | undefined,
|
||||
): ErrorMeeting | LoadingMeeting | SuccessMeeting => {
|
||||
const [response, setResponse] = useState<Meeting | null>(null);
|
||||
const [loading, setLoading] = useState<boolean>(true);
|
||||
const [error, setErrorState] = useState<Error | null>(null);
|
||||
const [reload, setReload] = useState(0);
|
||||
const { setError } = useError();
|
||||
const api = useApi();
|
||||
const createMeetingMutation = useRoomsCreateMeeting();
|
||||
const reloadHandler = () => setReload((prev) => prev + 1);
|
||||
|
||||
useEffect(() => {
|
||||
if (!roomName || !api) return;
|
||||
if (!roomName) return;
|
||||
|
||||
if (!response) {
|
||||
setLoading(true);
|
||||
}
|
||||
|
||||
api
|
||||
.v1RoomsCreateMeeting({ roomName })
|
||||
.then((result) => {
|
||||
const createMeeting = async () => {
|
||||
try {
|
||||
const result = await createMeetingMutation.mutateAsync({
|
||||
params: {
|
||||
path: {
|
||||
room_name: roomName,
|
||||
},
|
||||
},
|
||||
});
|
||||
setResponse(result);
|
||||
setLoading(false);
|
||||
})
|
||||
.catch((error) => {
|
||||
} catch (error: any) {
|
||||
const shouldShowHuman = shouldShowError(error);
|
||||
if (shouldShowHuman && error.status !== 404) {
|
||||
setError(
|
||||
@@ -60,9 +60,14 @@ const useRoomMeeting = (
|
||||
} else {
|
||||
setError(error);
|
||||
}
|
||||
setErrorState(error);
|
||||
});
|
||||
}, [roomName, !api, reload]);
|
||||
}
|
||||
};
|
||||
|
||||
createMeeting();
|
||||
}, [roomName, reload]);
|
||||
|
||||
const loading = createMeetingMutation.isPending && !response;
|
||||
const error = createMeetingMutation.error as Error | null;
|
||||
|
||||
return { response, loading, error, reload: reloadHandler } as
|
||||
| ErrorMeeting
|
||||
|
||||
Reference in New Issue
Block a user