From fbdfa1908056678d3cdca88afeebacf44bd8294c Mon Sep 17 00:00:00 2001 From: shuhaib s <95394061+shuhaib-aot@users.noreply.github.com> Date: Tue, 16 Jul 2024 20:12:46 +0530 Subject: [PATCH] FWF-3414 [Bugfix] fixed user data not updating when language change (#236) --- forms-flow-nav/src/Navbar.jsx | 23 ++++++++++--------- forms-flow-nav/src/services/language/index.js | 10 ++------ .../src/keycloak/KeycloakService.ts | 1 + 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/forms-flow-nav/src/Navbar.jsx b/forms-flow-nav/src/Navbar.jsx index 0cd8e66f9..d9e439734 100644 --- a/forms-flow-nav/src/Navbar.jsx +++ b/forms-flow-nav/src/Navbar.jsx @@ -97,8 +97,7 @@ const NavBar = React.memo(({ props }) => { const isAuthenticated = instance?.isAuthenticated(); const { pathname } = location; const [userDetail, setUserDetail] = React.useState({}); - const savedLanguage = localStorage.getItem("lang"); - const [lang, setLang] = React.useState(savedLanguage); + const [lang, setLang] = React.useState(); const userRoles = JSON.parse( StorageService.get(StorageService.User.USER_ROLE) ); @@ -171,7 +170,7 @@ const NavBar = React.memo(({ props }) => { useEffect(() => { fetchSelectLanguages((data) => { const tenantdata = JSON.parse(StorageService.get("TENANT_DATA")); - const userLanguageList = (MULTITENANCY_ENABLED && tenantdata?.details.langList) || USER_LANGUAGE_LIST; + const userLanguageList = (MULTITENANCY_ENABLED && tenantdata?.details?.langList) || USER_LANGUAGE_LIST; let userLanguagesArray = []; if (typeof userLanguageList === 'object') { userLanguagesArray = Object.values(userLanguageList); @@ -202,16 +201,18 @@ const NavBar = React.memo(({ props }) => { * This effect runs whenever the instance or tenant data changes. */ React.useEffect(() => { - const locale = - instance?.getUserData()?.locale || - tenant?.tenantData?.details?.locale || - lang || - LANGUAGE; - setLang(locale); - }, [instance, tenant.tenantData]); + if(userDetail){ + const locale = + userDetail?.locale || + tenant?.tenantData?.details?.locale || + LANGUAGE; + setLang(locale); + } + }, [userDetail, tenant.tenantData]); const handleOnclick = (selectedLang) => { - setLang(selectedLang); + setLang(selectedLang) + setUserDetail(prev => ({...prev,locale:selectedLang})) updateUserlang(selectedLang, instance); }; diff --git a/forms-flow-nav/src/services/language/index.js b/forms-flow-nav/src/services/language/index.js index 795236a33..70dd731ff 100644 --- a/forms-flow-nav/src/services/language/index.js +++ b/forms-flow-nav/src/services/language/index.js @@ -21,14 +21,8 @@ export const updateUserlang = (data, instance) => { { locale: data }, StorageService.get(StorageService.User.AUTH_TOKEN) ) - .then((res) => { - if (res.data) { - localStorage.setItem("lang", data); - //need to check why we want invoke this function - // instance.initKeycloak(); - } else { - //toast.error({(t)=>t("Failed")}); - } + .then(() => { + localStorage.setItem("lang", data); }) .catch((error) => { console.log(error); diff --git a/forms-flow-service/src/keycloak/KeycloakService.ts b/forms-flow-service/src/keycloak/KeycloakService.ts index 64d726115..94543eb23 100644 --- a/forms-flow-service/src/keycloak/KeycloakService.ts +++ b/forms-flow-service/src/keycloak/KeycloakService.ts @@ -42,6 +42,7 @@ import Keycloak, { private logout(): void { this.kc?.logout(); + StorageService.clear() } /**