Expondo o status do LiveKit no serializador de configurações do site

@Falco É possível expor um check público nas configurações do site/serializer para verificar se o LiveKit está configurado, ao lado de voice_enabled?

Atualmente, voice_enabled é exposto ao cliente, mas não há um sinal público indicando se um site pode fornecer LiveKit. O único atributo do site relacionado ao LiveKit, voice_livekit_per_room_available, é limitado à caixa de seleção do formulário de sala, portanto, retorna false sob a política all_rooms e não pode ser usado para responder à pergunta “este site usa LiveKit de alguma forma?”.

RoomSerializer#expected_transport cobre bem o caso por sala, mas isso requer buscar as salas primeiro, e ele retorna vazio quando voice_public_access está desativado, mesmo em um site onde o LiveKit está totalmente configurado.

Algo assim seria aceitável? Ele é derivado do estado existente, não expõe credenciais nem detalhes de política e não precisa de um novo endpoint.

Ele ficaria em plugins/voice/plugin.rb, após o bloco voice_livekit_per_room_available e logo antes da linha Voice::DefaultRoomSeeder.ensure!:

# Sinal público, sem credenciais, de que o site pode fornecer LiveKit de alguma forma.
add_to_serializer(:site, :voice_livekit_available) do
Voice::Livekit.configured? && SiteSetting.voice_livekit_room_policy != "disabled"
end

1 curtida