@Falco ¿Es posible exponer una comprobación pública en la configuración del sitio/serializador para saber si LiveKit está configurado, junto con voice_enabled?
Hoy en día, voice_enabled se expone al cliente, pero no hay ninguna señal pública sobre si un sitio puede servir LiveKit. El único atributo del sitio relacionado con LiveKit, voice_livekit_per_room_available, está limitado a la casilla de verificación del formulario de la sala, por lo que devuelve false bajo la política all_rooms y no se puede usar para responder a la pregunta “¿este sitio usa LiveKit en absoluto?”.
RoomSerializer#expected_transport cubre bien el caso por sala, pero eso requiere obtener las salas primero, y devuelve un resultado vacío cuando voice_public_access está desactivado, incluso en un sitio donde LiveKit está completamente configurado.
¿Sería aceptable algo como esto? Se deriva del estado existente, no expone credenciales ni detalles de política y no requiere ningún nuevo punto de entrada (endpoint).
Se colocaría en plugins/voice/plugin.rb, después del bloque voice_livekit_per_room_available y justo antes de la línea Voice::DefaultRoomSeeder.ensure!:
# Señal pública y sin credenciales de que el sitio puede servir LiveKit en absoluto.
add_to_serializer(:site, :voice_livekit_available) do
Voice::Livekit.configured? && SiteSetting.voice_livekit_room_policy != "disabled"
end