[MVP][frontend] Issue #241: host/player route i18n integration + secondary no-audio guard #247

Merged
integrator-bot merged 2 commits from feat/issue-241-route-i18n-audio into main 2026-03-02 02:23:19 +01:00
2 changed files with 19 additions and 4 deletions
Showing only changes of commit 4b2b21fe57 - Show all commits

View File

@@ -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');
});
});

View File

@@ -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<boolean> {