Fix host SPA deeplink route propagation
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="{{ spa_asset_base }}/styles.css">
|
||||
</head>
|
||||
<body data-wpp-shell-route="{{ shell_route }}">
|
||||
<body data-wpp-shell-route="{{ shell_route }}" data-wpp-shell-kind="{{ shell_kind }}">
|
||||
<app-root>Indlæser Angular app-shell…</app-root>
|
||||
<script src="{{ spa_asset_base }}/main.js" type="module"></script>
|
||||
</body>
|
||||
|
||||
@@ -982,8 +982,22 @@ class UiScreenTests(TestCase):
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "<app-root>")
|
||||
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, "<app-root>")
|
||||
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, "<app-root>")
|
||||
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")
|
||||
|
||||
|
||||
|
||||
+7
-3
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user