From 84438b28801696719360108735d2fee0a2b91594 Mon Sep 17 00:00:00 2001 From: Asger Geel Weirsoee Date: Sun, 1 Mar 2026 11:17:46 +0000 Subject: [PATCH] Fix host SPA deeplink route propagation --- lobby/templates/lobby/spa_shell.html | 2 +- lobby/tests.py | 15 +++++++++++++++ lobby/ui_views.py | 10 +++++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lobby/templates/lobby/spa_shell.html b/lobby/templates/lobby/spa_shell.html index 64050af..dc36c08 100644 --- a/lobby/templates/lobby/spa_shell.html +++ b/lobby/templates/lobby/spa_shell.html @@ -6,7 +6,7 @@ - + Indlæser Angular app-shell… diff --git a/lobby/tests.py b/lobby/tests.py index a3ebaa2..d7324c6 100644 --- a/lobby/tests.py +++ b/lobby/tests.py @@ -982,8 +982,22 @@ class UiScreenTests(TestCase): self.assertEqual(response.status_code, 200) self.assertContains(response, "") self.assertContains(response, "data-wpp-shell-route=\"/host\"") + self.assertContains(response, "data-wpp-shell-kind=\"host\"") self.assertContains(response, "/static/frontend/angular/browser/main.js") + @override_settings(WPP_SPA_ENABLED=True) + def test_host_screen_deeplink_preserves_spa_path_when_feature_flag_enabled(self): + self.client.login(username="host_ui", password="secret123") + + response = self.client.get( + reverse("lobby:host_screen_deeplink", kwargs={"spa_path": "guess/round-1"}) + ) + + self.assertEqual(response.status_code, 200) + self.assertContains(response, "") + self.assertContains(response, "data-wpp-shell-route=\"/host/guess/round-1\"") + self.assertContains(response, "data-wpp-shell-kind=\"host\"") + @override_settings(WPP_SPA_ENABLED=True) def test_player_screen_can_render_angular_shell_when_feature_flag_enabled(self): response = self.client.get(reverse("lobby:player_screen")) @@ -991,6 +1005,7 @@ class UiScreenTests(TestCase): self.assertEqual(response.status_code, 200) self.assertContains(response, "") self.assertContains(response, "data-wpp-shell-route=\"/player\"") + self.assertContains(response, "data-wpp-shell-kind=\"player\"") self.assertContains(response, "/static/frontend/angular/browser/main.js") diff --git a/lobby/ui_views.py b/lobby/ui_views.py index 1d5dfad..65a6137 100644 --- a/lobby/ui_views.py +++ b/lobby/ui_views.py @@ -5,12 +5,13 @@ from django.shortcuts import render from fupogfakta.models import Category -def _render_spa_shell(request, shell_route: str): +def _render_spa_shell(request, shell_route: str, shell_kind: str): return render( request, "lobby/spa_shell.html", { "shell_route": shell_route, + "shell_kind": shell_kind, "spa_asset_base": settings.WPP_SPA_ASSET_BASE, }, ) @@ -19,7 +20,10 @@ def _render_spa_shell(request, shell_route: str): @login_required def host_screen(request, spa_path=None): if settings.WPP_SPA_ENABLED: - return _render_spa_shell(request, "/host") + host_route = "/host" + if spa_path: + host_route = f"/host/{spa_path.strip('/')}" + return _render_spa_shell(request, host_route, "host") categories = Category.objects.filter(is_active=True).order_by("name") return render(request, "lobby/host_screen.html", {"categories": categories}) @@ -27,6 +31,6 @@ def host_screen(request, spa_path=None): def player_screen(request): if settings.WPP_SPA_ENABLED: - return _render_spa_shell(request, "/player") + return _render_spa_shell(request, "/player", "player") return render(request, "lobby/player_screen.html")