Check if livekit is configured on the relay during room creation/edit
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
import ModalBody from "@lib/components/ModalBody.svelte"
|
||||
import {pushToast} from "@app/util/toast"
|
||||
import {uploadFile} from "@app/core/commands"
|
||||
import {checkRelayHasLivekit} from "@app/voice"
|
||||
|
||||
type RoomMode = "text" | "voice" | "both"
|
||||
|
||||
@@ -46,10 +47,29 @@
|
||||
|
||||
const values = $state(initialValues)
|
||||
let roomMode = $state<RoomMode>(getRoomModeFromEvent(initialValues.event))
|
||||
let relayHasLivekit = $state<boolean | undefined>(undefined)
|
||||
|
||||
$effect(() => {
|
||||
const u = url
|
||||
let cancelled = false
|
||||
checkRelayHasLivekit(u).then(has => {
|
||||
if (!cancelled) relayHasLivekit = has
|
||||
})
|
||||
return () => {
|
||||
cancelled = true
|
||||
}
|
||||
})
|
||||
|
||||
const submit = async () => {
|
||||
const room = $state.snapshot(values)
|
||||
|
||||
if ((roomMode === "voice" || roomMode === "both") && !relayHasLivekit) {
|
||||
return pushToast({
|
||||
theme: "error",
|
||||
message: "This relay does not support voice rooms.",
|
||||
})
|
||||
}
|
||||
|
||||
if (imageFile) {
|
||||
const {error, result} = await uploadFile(imageFile, {
|
||||
maxWidth: 256,
|
||||
@@ -211,8 +231,12 @@
|
||||
{#snippet input()}
|
||||
<select class="select select-bordered w-full" bind:value={roomMode} aria-label="Room type">
|
||||
<option value="text">Text only</option>
|
||||
<option value="both">Text and voice</option>
|
||||
<option value="voice">Voice only</option>
|
||||
<option value="both" disabled={relayHasLivekit === false}>
|
||||
Text and voice{relayHasLivekit === false ? " (not setup)" : ""}
|
||||
</option>
|
||||
<option value="voice" disabled={relayHasLivekit === false}>
|
||||
Voice only{relayHasLivekit === false ? " (not setup)" : ""}
|
||||
</option>
|
||||
</select>
|
||||
{/snippet}
|
||||
</FieldInline>
|
||||
|
||||
Reference in New Issue
Block a user