Compare commits

...

1 Commits

Author SHA1 Message Date
lebaudantoine 78743f06ae 🐛(backend) fix info panel crash for unregistered rooms
The info panel was crashing when opening a room that was not
registered in the database (with ALLOW_UNREGISTERED_ROOMS=true),
because the API response did not include the room slug.

Instead of adding frontend fallbacks, update the unregistered-room
response to include the slug, keeping the API contract consistent
with registered rooms.

Note: this still relies on the unregistered-room response staying
aligned with the registered-room schema. Any future divergence
between the two responses could introduce similar issues.
A refactoring on the backend side is needed.

It closes #1441.
2026-07-10 19:34:29 +02:00
4 changed files with 12 additions and 1 deletions
+1
View File
@@ -23,6 +23,7 @@ and this project adheres to
### Fixed ### Fixed
- 🩹(backend) identify externally provisioned users to PostHog - 🩹(backend) identify externally provisioned users to PostHog
- 🐛(backend) fix info panel crash for unregistered rooms
## [1.23.0] - 2026-07-08 ## [1.23.0] - 2026-07-08
+4
View File
@@ -92,6 +92,7 @@ from core.services.subtitle import SubtitleException, SubtitleService
from core.tasks.file import process_file_deletion from core.tasks.file import process_file_deletion
from ..authentication.livekit import LiveKitTokenAuthentication from ..authentication.livekit import LiveKitTokenAuthentication
from ..models import RoomAccessLevel
from . import permissions, serializers, throttling from . import permissions, serializers, throttling
from .feature_flag import FeatureFlag from .feature_flag import FeatureFlag
@@ -267,6 +268,9 @@ class RoomViewSet(
username = request.query_params.get("username", None) username = request.query_params.get("username", None)
data = { data = {
"id": None, "id": None,
"slug": slug,
"is_administrable": False,
"access_level": RoomAccessLevel.PUBLIC,
"livekit": { "livekit": {
"url": settings.LIVEKIT_CONFIGURATION["url"], "url": settings.LIVEKIT_CONFIGURATION["url"],
"room": slug, "room": slug,
@@ -130,6 +130,9 @@ def test_api_rooms_retrieve_anonymous_unregistered_allowed(mock_token):
assert response.status_code == 200 assert response.status_code == 200
assert response.json() == { assert response.json() == {
"id": None, "id": None,
"slug": "unregistered-room",
"access_level": "public",
"is_administrable": False,
"livekit": { "livekit": {
"url": "test_url_value", "url": "test_url_value",
"room": "unregistered-room", "room": "unregistered-room",
@@ -162,6 +165,9 @@ def test_api_rooms_retrieve_anonymous_unregistered_allowed_not_normalized(mock_t
assert response.status_code == 200 assert response.status_code == 200
assert response.json() == { assert response.json() == {
"id": None, "id": None,
"slug": "reunion",
"access_level": "public",
"is_administrable": False,
"livekit": { "livekit": {
"url": "test_url_value", "url": "test_url_value",
"room": "reunion", "room": "reunion",
@@ -22,7 +22,7 @@ export type ApiRoom = {
id: string id: string
name: string name: string
slug: string slug: string
pin_code: string pin_code?: string
is_administrable: boolean is_administrable: boolean
access_level: ApiAccessLevel access_level: ApiAccessLevel
livekit?: ApiLiveKit livekit?: ApiLiveKit