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