🐛(frontend) hoist mute confirmation dialog to VideoConference level

`MuteButton` owned the confirmation dialog state locally. On the
participant tile, the button lives inside `FadeOverlay`, which
conditionally mounts its children based on tile mouse activity
(3 s idle timeout). Once the user moved the pointer onto the
react-aria portal, mouse events on the tile stopped, the idle timer
expired, `FadeOverlay` unmounted `MuteButton`, and the dialog was
destroyed with it — hence the "closes randomly" behavior.

Render the dialog once at the VideoConference level via a shared
`MuteAlertDialogProvider`, so its lifetime is independent from any
button that opens it.
This commit is contained in:
lebaudantoine
2026-08-21 21:26:47 +02:00
parent e204cd7f38
commit 35f2d3da86
6 changed files with 89 additions and 71 deletions
+1
View File
@@ -29,6 +29,7 @@ and this project adheres to
- 🐛(frontend) treat client-initiated connect aborts as events
- 🐛(frontend) use state instead of a ref for MoreControls container
- 🐛(frontend) stop init_virtual_background from firing on blur updates
- 🐛(frontend) hoist mute confirmation dialog to VideoConference level
## [1.27.0] - 2026-08-14