forked from coracle/flotilla
Check if livekit is configured on the relay during room creation/edit
This commit is contained in:
+26
-5
@@ -1,3 +1,7 @@
|
||||
/**
|
||||
* Voice rooms via LiveKit. Note: Voice does not work on localhost in Firefox
|
||||
* (ICE candidate gathering fails). Use Chrome or test from deployed HTTPS.
|
||||
*/
|
||||
import {DisconnectReason, Room, RoomEvent, Track} from "livekit-client"
|
||||
import {getToken} from "nostr-tools/nip98"
|
||||
import {derived, get, writable} from "svelte/store"
|
||||
@@ -9,6 +13,27 @@ import {pushToast} from "@app/util/toast"
|
||||
|
||||
export const ROOM_PRESENCE = 10312
|
||||
|
||||
const livekitEndpoint = (url: string, groupId: string) => {
|
||||
const httpUrl = url
|
||||
.replace(/^wss:\/\//, "https://")
|
||||
.replace(/^ws:\/\//, "http://")
|
||||
.replace(/\/$/, "")
|
||||
return `${httpUrl}/.well-known/nip29/livekit/${groupId}`
|
||||
}
|
||||
|
||||
export const checkRelayHasLivekit = async (url: string): Promise<boolean> => {
|
||||
const endpoint = livekitEndpoint(url, "nop")
|
||||
|
||||
try {
|
||||
// Currently we are hitting the API with no auth because zooid returns a 401 livekit
|
||||
// is configured and 404 if it is not. But we need a standardized solution in the NIP.
|
||||
const response = await fetch(endpoint)
|
||||
return response.status === 401
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
const PRESENCE_INTERVAL_MS = 60_000
|
||||
const PRESENCE_EXPIRY_S = 300
|
||||
|
||||
@@ -26,11 +51,7 @@ const fetchLivekitToken = async (
|
||||
groupId: string,
|
||||
signal?: AbortSignal,
|
||||
): Promise<{server_url: string; participant_token: string}> => {
|
||||
const httpUrl = url
|
||||
.replace(/^wss:\/\//, "https://")
|
||||
.replace(/^ws:\/\//, "http://")
|
||||
.replace(/\/$/, "")
|
||||
const endpoint = `${httpUrl}/.well-known/nip29/livekit/${groupId}`
|
||||
const endpoint = livekitEndpoint(url, groupId)
|
||||
|
||||
const $signer = signer.get()
|
||||
if (!$signer) throw new Error("No signer available")
|
||||
|
||||
Reference in New Issue
Block a user