Esposizione dello stato di LiveKit nel serializer delle impostazioni del sito

voice_enabled non è raggiungibile affatto dall’API JSON: /site.json non contiene la chiave site_settings. Quindi l’unico segnale pubblico che indica che la voce è attiva su un sito è la presenza di voice_assets_path.

Ciò che chiedo sono due booleani pubblici, senza credenziali, in modo che un client possa decidere se mostrare la voce prima di recuperare le stanze. Entrambi sono derivati dallo stato esistente e non richiedono un nuovo endpoint, in plugins/voice/plugin.rb:

Alla riga 141, sopra voice_public_access:

#Segnali pubblici, senza credenziali, per i client API che la voce è abilitata.

add_to_serializer(:site, :voice_available) { SiteSetting.voice_enabled }

Alla riga 152, sopra voice_livekit_per_room_available:

# Se le join possono utilizzare LiveKit. Una semplice risposta sì/no: nessuna URL, chiave o
# valore di policy. L'attributo per stanza di seguito limita solo la casella SFU del modulo stanza,
# e legge false sotto la policy all_rooms.

  add_to_serializer(:site, :voice_livekit_available) do

    Voice::Livekit.configured? && SiteSetting.voice_livekit_room_policy != "disabled"

  end

Questo non espone nulla di nuovo: expected_transport è un attributo non protetto su RoomSerializer (riga 30, definito a 150) e rooms#index salta il login (rooms_controller.rb:18), quindi “livekit” / “mesh” è già leggibile anonimamente per stanza. Questo risponde semplicemente senza un recupero della stanza che potrebbe tornare vuoto.