The on-call controls: mute with a state read straight off the connection, an explicit muted label, a running timer, and a hang-up that disconnects the call and the device and cannot fail. A brief 'ended' state makes the disconnect visible.
Also called: mute button · can't end the call · am I muted · call controls
- 1toggleMute calls mute() then re-reads isMuted() — never assumes
- 2hangup disconnects the call and disconnectAll on the device, swallowing errors, then shows 'ended' briefly
- 3Controls exist the instant a call object exists, not on answer
- 4Disconnect, cancel, reject and error all route to the same end handler so the state can't get stuck
Three failures show up again and again in builders' complaints about other dialers: putting the window on mute does not actually mute you, nothing tells you when the other person hung up, and sometimes the call cannot be ended at all. The first is the most damaging — a rep says something to the room believing the customer cannot hear them. Mute state is read back from the live connection rather than tracked in the interface, and hanging up is safe to press twice and never throws.
- Mute state that lies
- Calls that cannot be ended
- Silent disconnects with no feedback
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →