First pass at adding a waiting room.

This commit is contained in:
Storm Dragon committed 2026-08-30 16:56:26 -04:00
1 parent 9125e76d43
commit ae55982a40
17 files changed
+1254 -100

No files matched your search

+20
View File
@@ -145,6 +145,26 @@ func TestMicrophoneHardStopLivesInSelfMenu(t *testing.T) {
requireFunctionContains(t, js, "userMenu", "Restart audio connection")
}
func TestWaitingRoomUsesAccessibleNativeControlsAndLiveRegions(t *testing.T) {
html := readStaticFile(t, "skald.html")
js := readStaticFile(t, "skald.js")
requireContains(t, html, `aria-labelledby="waiting-heading"`, "waiting room")
requireContains(t, html, `id="waiting-heading" tabindex="-1"`, "waiting heading")
requireContains(t, html, `label for="waiting-auto-join"`, "automatic join label")
requireContains(t, html, `id="waiting-join" type="button"`, "join button")
requireContains(t, html, `id="waiting-leave" type="button"`, "leave button")
requireContains(t, html, `aria-labelledby="waiting-list-heading"`, "operator waiting list")
requireFunctionContains(t, js, "showWaitingRoom", "waiting-heading').focus")
requireFunctionContains(t, js, "updateWaitingStatus", "Math.ceil")
requireFunctionContains(t, js, "updateWaitingStatus", "announceChat(status)")
requireFunctionContains(t, js, "gotWaiting", "announceUrgent")
requireFunctionContains(t, js, "renderWaitingList", "document.createElement('button')")
requireFunctionContains(t, js, "renderWaitingList", "button.type = 'button'")
requireFunctionContains(t, js, "gotJoined", "Your microphone is not enabled")
requireFunctionContains(t, js, "gotJoined", "Your microphone is ${enabled ? 'unmuted' : 'muted'}")
}
func TestRecordingControlLivesInSelfMenu(t *testing.T) {
js := readStaticFile(t, "skald.js")
+2
View File
@@ -230,6 +230,7 @@ func whipEndpointHandler(w http.ResponseWriter, r *http.Request) {
if !canPresent(c.Permissions()) {
hall.DelClient(c)
rtpconn.WaitingCapacityChanged(g)
http.Error(w, "Forbidden", http.StatusForbidden)
return
}
@@ -239,6 +240,7 @@ func whipEndpointHandler(w http.ResponseWriter, r *http.Request) {
answer, err := c.NewConnection(r.Context(), body)
if err != nil {
hall.DelClient(c)
rtpconn.WaitingCapacityChanged(g)
log.Printf("WHIP offer: %v", err)
httpError(w, err)
return