From 4b2b21fe577f44f4229d243082fc8b117bfa340e Mon Sep 17 00:00:00 2001 From: Asger Geel Weirsoee Date: Mon, 2 Mar 2026 01:05:00 +0000 Subject: [PATCH] Fix route locale resolver to only apply explicit lang param --- .../angular/src/app/session-route-context.spec.ts | 10 ++++++++++ frontend/angular/src/app/session-route-context.ts | 13 +++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/frontend/angular/src/app/session-route-context.spec.ts b/frontend/angular/src/app/session-route-context.spec.ts index 7e53b30..ee834df 100644 --- a/frontend/angular/src/app/session-route-context.spec.ts +++ b/frontend/angular/src/app/session-route-context.spec.ts @@ -92,4 +92,14 @@ describe('session route context', () => { expect(hostRouteContextResolver(route({}, { lang: 'da-DK' }) as never, {} as never).locale).toBe('da'); expect(playerRouteContextResolver(route({}, { lang: 'EN' }) as never, {} as never).locale).toBe('en'); }); + + it('does not reset persisted preferred locale when lang query param is absent', () => { + const localStorage = storageMock({ 'wpp.locale': 'da' }); + setWindow(localStorage, storageMock()); + + expect(hostRouteContextResolver(route({}, { lang: 'da' }) as never, {} as never).locale).toBe('da'); + expect(hostRouteContextResolver(route({}, {}) as never, {} as never).locale).toBe('da'); + expect(localStorage.setItem).toHaveBeenCalledTimes(1); + expect(localStorage.setItem).toHaveBeenCalledWith('wpp.locale', 'da'); + }); }); diff --git a/frontend/angular/src/app/session-route-context.ts b/frontend/angular/src/app/session-route-context.ts index c105ab4..64240c4 100644 --- a/frontend/angular/src/app/session-route-context.ts +++ b/frontend/angular/src/app/session-route-context.ts @@ -2,7 +2,7 @@ import { inject } from '@angular/core'; import { type ActivatedRouteSnapshot, type CanActivateFn, type ResolveFn, Router, type UrlTree } from '@angular/router'; import { createSessionContextStore } from '../../../src/spa/session-context-store'; -import { normalizeLocale, setPreferredLocale } from './lobby-i18n'; +import { normalizeLocale, resolvePreferredLocale, setPreferredLocale } from './lobby-i18n'; export interface RouteSessionContext { sessionCode: string | null; @@ -64,9 +64,14 @@ export function resolveSessionCode(route: ActivatedRouteSnapshot, mode: 'host' | } function resolveRouteLocale(route: ActivatedRouteSnapshot): string { - const locale = normalizeLocale(route.queryParamMap.get('lang')); - setPreferredLocale(locale); - return locale; + const langParam = route.queryParamMap.get('lang'); + if (langParam !== null) { + const locale = normalizeLocale(langParam); + setPreferredLocale(locale); + return locale; + } + + return resolvePreferredLocale(); } async function sessionExists(code: string): Promise {