"use client"
import { useState } from "react"
import { useRouter } from "next/navigation"
import { Loader2, Video } from "lucide-react"
import { toast } from "sonner"
import { MeetHeader } from "@/components/meet/meet-header"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import {
useCreateMeetRoom,
useMeetConfig,
useMeetRoomToken,
} from "@/lib/api/hooks/use-meet-queries"
import { meetRoomPath } from "@/lib/meet/meet-url"
export function MeetLobby() {
const router = useRouter()
const { data: config, isLoading } = useMeetConfig()
const createRoom = useCreateMeetRoom()
const roomToken = useMeetRoomToken()
const [roomName, setRoomName] = useState("")
const [joinRoom, setJoinRoom] = useState("")
const pending = createRoom.isPending || roomToken.isPending
const startInstantMeeting = async () => {
try {
const token = await createRoom.mutateAsync(undefined)
router.push(meetRoomPath(token.room, token.token))
} catch {
toast.error("Impossible de créer la réunion")
}
}
const startNamedMeeting = async () => {
const name = roomName.trim()
if (!name) {
toast.message("Indiquez un nom de salle")
return
}
try {
const token = await createRoom.mutateAsync({ name })
router.push(meetRoomPath(token.room, token.token))
} catch {
toast.error("Impossible de créer la réunion")
}
}
const joinExistingRoom = async () => {
const room = joinRoom.trim()
if (!room) {
toast.message("Indiquez le code ou le nom de la salle")
return
}
try {
const token = await roomToken.mutateAsync(room)
router.push(meetRoomPath(token.room, token.token))
} catch {
toast.error("Impossible de rejoindre la salle")
}
}
if (isLoading) {
return (
)
}
if (!config?.enabled) {
return (
UltiMeet n'est pas activé sur cette instance. Activez Jitsi dans
l'administration ou contactez votre administrateur.
)
}
return (
Visioconférence sécurisée
Réunions chiffrées hébergées sur votre infrastructure, intégrées à
l'Agenda et à la suite Ulti.
{config.transcription_enabled
? `Transcription ${config.transcription_mode === "queued" ? "différée" : "en direct"} disponible.`
: "Les liens Agenda ouvrent directement la salle correspondante."}
)
}