From d8e51c3d0ac1d933f439009efa0dd2b0aa51d3f0 Mon Sep 17 00:00:00 2001 From: ValueOn AG Date: Thu, 12 Feb 2026 13:49:03 +0100 Subject: [PATCH] fixed cache and locals issues --- .../FormGeneratorTable/FormGeneratorTable.tsx | 19 +++++-------------- src/utils/userCache.ts | 3 +++ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx b/src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx index c5b3f7e..497cd83 100644 --- a/src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx +++ b/src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx @@ -190,21 +190,12 @@ export function FormGeneratorTable>({ emptyMessage, apiEndpoint }: FormGeneratorTableProps) { - const { t } = useLanguage(); - // Get current language from localStorage or default to 'en' + const { t, currentLanguage: contextLanguage } = useLanguage(); + // Map frontend language codes (de/en/fr) to backend codes (ge/en/fr) for multilingual field resolution const currentLanguage = useMemo(() => { - try { - const stored = localStorage.getItem('language') || localStorage.getItem('app-language'); - if (stored) { - // Map frontend language codes to backend codes - const langMap: Record = { 'de': 'ge', 'en': 'en', 'fr': 'fr', 'it': 'it' }; - return langMap[stored] || stored; - } - } catch { - // Ignore localStorage errors - } - return 'en'; // Default to English - }, []); + const langMap: Record = { 'de': 'ge', 'en': 'en', 'fr': 'fr', 'it': 'it' }; + return langMap[contextLanguage] || contextLanguage || 'en'; + }, [contextLanguage]); // Use provided columns from Pydantic attribute definitions // NO AUTO-DETECTION - columns must come from backend attribute definitions // Use a ref to cache columns so they persist across data changes (e.g., when filtering) diff --git a/src/utils/userCache.ts b/src/utils/userCache.ts index 4ec71c5..63da807 100644 --- a/src/utils/userCache.ts +++ b/src/utils/userCache.ts @@ -37,6 +37,9 @@ export const setUserDataCache = (userData: CachedUserData): void => { // roleLabels/privilege are optional metadata, not required for app functionality try { sessionStorage.setItem(USER_CACHE_KEY, JSON.stringify(userData)); + // Notify listeners (e.g. LanguageProvider) that user data has changed. + // This ensures the UI language syncs after login/refresh/profile update. + window.dispatchEvent(new CustomEvent('userInfoUpdated')); } catch (error) { console.error('Failed to cache user data:', error); }