Handle Deleted Rooms
Overview & Context
The roomserver will get a DELETE /v1/rooms/{room_id} endpoint. When a room is deleted (because the underlying meeting/room was removed from the database), the roomserver closes the running room and sends the existing core Closing signaling message with a new reason room_deleted to every connected client.
The web app must react to this reason by:
- Showing a non-closable overlay informing the user that the meeting was deleted (the user cannot return — the room no longer exists).
- Preventing the reconnection flow (both the signaling reconnection loop and the LiveKit media reconnection) from kicking in, so the user is not stuck in a reconnection dialog for a room that is gone.
Most of the supporting state already exists: room.isDeleted, the setIsRoomDeleted action, the selectIsRoomDeleted selector, the MeetingEndedDialog shown when isRoomDeleted === true and the LiveKit reconnect suppression guarded by state.room.isDeleted
Technical Design & Interfaces
New close reason (incoming type)
export enum RoomCloseReason {
GracefulShutdown = 'graceful_shutdown',
ImmediateShutdown = 'immediate_shutdown',
FatalError = 'fatal_error',
TimeLimitReached = 'time_limit_reached',
IdleTimeoutReached = 'idle_timeout_reached',
RoomDeleted = 'room_deleted', // NEW
}Handle the core closing message
case RoomserverMessageKey.Closing: {
if (data.reason === RoomCloseReason.RoomDeleted) {
dispatch(setIsRoomDeleted(true));
}
break;
}Suppress reconnection
- LiveKit media reconnect should already be guarded
- Signaling reconnect is not guarded - adding a n early-return when
state.room.isDeleted === trueso the websocket does not try to reconnect to a deleted room should solve it
Non-closable overlay
Extend the MeetingEndedDialog by making the X icon and the secondary close button optional, so that the dialog is not dismissible.
Frontend & UI Requirements
Translations
TBD
Definition of Done (DoD)
- On receiving the core
closingmessage withreason: "room_deleted", the user sees a non-closable overlay and cannot rejoin. - Neither the signaling reconnection dialog nor the LiveKit media reconnection dialog appears for a deleted room
- Unit tests added (core
closinghandler, reconnect-suppression listeners, non-closable overlay rendering)
Edited by Henning Mueller