diff --git a/packages/core/src/Stores/client-store.js b/packages/core/src/Stores/client-store.js index 17d18185f1fa..a85a4eee2337 100644 --- a/packages/core/src/Stores/client-store.js +++ b/packages/core/src/Stores/client-store.js @@ -28,7 +28,6 @@ import { action, computed, makeObservable, observable, reaction, runInAction, to import { getAccountTitle, getClientAccountType } from './Helpers/client'; import { getLanguage, localize } from '@deriv/translations'; import { isEuCountry, isMultipliersOnly, isOptionsBlocked, getRegion } from '_common/utility'; -import { changeLanguage } from 'Utils/Language'; import BaseStore from './base-store'; import BinarySocket from '_common/base/socket_base'; @@ -1641,7 +1640,7 @@ export default class ClientStore extends BaseStore { const language = authorize_response.authorize.preferred_language; if (language !== 'EN' && language !== LocalStore.get(LANGUAGE_KEY)) { window.history.replaceState({}, document.title, urlForLanguage(language)); - changeLanguage(language); + await this.root_store.common.changeSelectedLanguage(language); } if (this.citizen) this.onSetCitizen(this.citizen); if (!this.is_virtual) { diff --git a/packages/core/src/Stores/common-store.js b/packages/core/src/Stores/common-store.js index 412161e3c4cc..26a866fa99b0 100644 --- a/packages/core/src/Stores/common-store.js +++ b/packages/core/src/Stores/common-store.js @@ -7,6 +7,7 @@ import BinarySocket from '_common/base/socket_base'; import BaseStore from './base-store'; import WS from 'Services/ws-methods'; import * as SocketCache from '_common/base/socket_cache'; +import { reject } from 'lodash'; export default class CommonStore extends BaseStore { constructor(root_store) { @@ -112,26 +113,33 @@ export default class CommonStore extends BaseStore { } } - changeSelectedLanguage = key => { + changeSelectedLanguage = async key => { SocketCache.clear(); if (key === 'EN') { window.localStorage.setItem('i18n_language', key); } - WS.setSettings({ - set_settings: 1, - preferred_language: key, - }).then(() => { - const new_url = new URL(window.location.href); - if (key === 'EN') { - new_url.searchParams.delete('lang'); - } else { - new_url.searchParams.set('lang', key); - } - window.history.pushState({ path: new_url.toString() }, '', new_url.toString()); - changeLanguage(key, () => { - this.changeCurrentLanguage(key); - BinarySocket.closeAndOpenNewConnection(key); + return new Promise(resolve => { + WS.setSettings({ + set_settings: 1, + preferred_language: key, + }).then(async () => { + const new_url = new URL(window.location.href); + if (key === 'EN') { + new_url.searchParams.delete('lang'); + } else { + new_url.searchParams.set('lang', key); + } + window.history.pushState({ path: new_url.toString() }, '', new_url.toString()); + try { + await changeLanguage(key, () => { + this.changeCurrentLanguage(key); + BinarySocket.closeAndOpenNewConnection(key); + }); + resolve(); + } catch (e) { + reject(); + } }); }); };