@@ -4,7 +4,7 @@ import { useLocalStorage } from '@rocket.chat/fuselage-hooks';
44import { createPredicateFromFilter } from '@rocket.chat/mongo-adapter' ;
55import { afterLogoutCleanUpCallback } from '@rocket.chat/ui-client' ;
66import type { FindOptions , SubscriptionWithRoom } from '@rocket.chat/ui-contexts' ;
7- import { UserContext , useEndpoint , useRouteParameter , useSearchParameter } from '@rocket.chat/ui-contexts' ;
7+ import { UserContext , useRouteParameter , useSearchParameter } from '@rocket.chat/ui-contexts' ;
88import { useQueryClient } from '@tanstack/react-query' ;
99import { Accounts } from 'meteor/accounts-base' ;
1010import { Meteor } from 'meteor/meteor' ;
@@ -79,8 +79,6 @@ const UserProvider = ({ children }: UserProviderProps): ReactElement => {
7979 const samlCredentialToken = useSearchParameter ( 'saml_idp_credentialToken' ) ;
8080 const inviteTokenHash = useRouteParameter ( 'hash' ) ;
8181
82- const setUserPreferences = useEndpoint ( 'POST' , '/v1/users.setPreferences' ) ;
83-
8482 useEmailVerificationWarning ( user ?? undefined ) ;
8583 useClearRemovedRoomsHistory ( userId ) ;
8684
@@ -156,17 +154,22 @@ const UserProvider = ({ children }: UserProviderProps): ReactElement => {
156154 [ userId , user , querySubscription , querySubscriptions ] ,
157155 ) ;
158156
157+ // Mirror local preference changes into the live userLanguage state without hitting the server.
159158 useEffect ( ( ) => {
160- if ( ! ! userId && preferedLanguage !== userLanguage ) {
161- setUserPreferences ( { data : { language : preferedLanguage } } ) ;
162- setUserLanguage ( preferedLanguage ) ;
159+ if ( preferedLanguage === userLanguage ) {
160+ return ;
163161 }
164162
163+ setUserLanguage ( preferedLanguage ) ;
164+ } , [ preferedLanguage , setUserLanguage , userLanguage ] ) ;
165+
166+ // When the server reports a new language, overwrite both storage keys so every tab stays aligned.
167+ useEffect ( ( ) => {
165168 if ( user ?. language !== undefined && user . language !== userLanguage ) {
166169 setUserLanguage ( user . language ) ;
167170 setPreferedLanguage ( user . language ) ;
168171 }
169- } , [ preferedLanguage , setPreferedLanguage , setUserLanguage , user ?. language , userLanguage , userId , setUserPreferences ] ) ;
172+ } , [ setPreferedLanguage , setUserLanguage , user ?. language , userLanguage ] ) ;
170173
171174 useEffect ( ( ) => {
172175 if ( ! samlCredentialToken && ! inviteTokenHash ) {
0 commit comments