mirror of
https://github.com/vector-im/element-call.git
synced 2026-09-22 22:29:30 +00:00
`LobbyView` took `onEnter`, `enterLabel` and `waitingForInvite`, which cannot express a declined, banned or invite-only room, so each of those ended at a full-screen error and took the camera preview with it. It now takes a `LobbyJoinState`, one of seven kinds, and renders both the button and a message under the preview from it. `KnockLobbyView` passes through what the loader offers, which is a single `lobby` state in place of `canKnock` and `waitForInvite`, so a decline, a ban, or a room that takes neither joins nor knocks keeps the user in the lobby. Waiting says what it is waiting for and offers a way to withdraw the request. The loader drives that state from the lobby's own callbacks rather than from the load promise, so a refused request leaves the user where they were, and every membership listener it adds is dropped when the effect is cleaned up. What it knows of a room nobody has joined is a `PreJoinRoomInfo`, built from a summary or from a `Room`, so a ban Element Call finds at load time is a lobby state as well. Denied and banned reuse the translated `group_call_loader.*` copy, so four strings are new. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>