diff --git a/app/components/LanguageSelector/index.tsx b/app/components/LanguageSelector/index.tsx index 9fbe8ce..9bf588e 100644 --- a/app/components/LanguageSelector/index.tsx +++ b/app/components/LanguageSelector/index.tsx @@ -1,17 +1,13 @@ import React, { useContext, useEffect, useState } from 'react'; -import { remote } from 'electron'; +import { ipcRenderer } from 'electron'; import { HTMLSelect } from '@blueprintjs/core'; import i18n from 'i18next'; -import SharingSessionService from '../../features/SharingSessionService'; import { SettingsContext } from '../../containers/SettingsProvider'; import i18n_client, { getLangFullNameToLangISOKeyMap, getLangISOKeyToLangFullNameMap, } from '../../configs/i18next.config.client'; - -const sharingSessionService = remote.getGlobal( - 'sharingSessionService' -) as SharingSessionService; +import { IpcEvents } from '../../main/IpcEvents.enum'; export default function LanguageSelector() { const { setCurrentLanguageHook } = useContext(SettingsContext); @@ -38,10 +34,7 @@ export default function LanguageSelector() { getLangFullNameToLangISOKeyMap().get(event.currentTarget.value) || 'English'; i18n.changeLanguage(newLang); - // TODO: call sharing sessions service here to notify all connected clients about language change - sharingSessionService.sharingSessions.forEach((sharingSession) => { - sharingSession?.appLanguageChanged(); - }); + ipcRenderer.invoke(IpcEvents.AppLanguageChanged); } }; diff --git a/app/components/TopPanel.tsx b/app/components/TopPanel.tsx index 13123d0..e1320ce 100644 --- a/app/components/TopPanel.tsx +++ b/app/components/TopPanel.tsx @@ -235,7 +235,7 @@ export default function TopPanel(props: any) { {renderSettingsButton()} - {isConnectedDevicesDrawerOpen ? ( + {isSettingsOpen ? ( { + this.sendEncryptedMessage({ + type: 'APP_LANGUAGE', + payload: { + value: getAppLanguage(), + }, + }); + }, 1000); } notifyClientWithNewColorTheme() { - this.sendEncryptedMessage({ - type: 'APP_THEME', - payload: { value: getAppTheme() }, - }); + setTimeout(() => { + this.sendEncryptedMessage({ + type: 'APP_THEME', + payload: { value: getAppTheme() }, + }); + }, 1000); } async setDesktopCapturerSourceID(id: string) { diff --git a/app/main/IpcEvents.enum.ts b/app/main/IpcEvents.enum.ts index 24d30e9..4670e84 100644 --- a/app/main/IpcEvents.enum.ts +++ b/app/main/IpcEvents.enum.ts @@ -12,4 +12,5 @@ export enum IpcEvents { GetConnectedDevices = 'get-connected-devices-list', DisconnectDeviceById = 'disconnect-device-by-id', DisconnectAllDevices = 'disconnect-all-devices', + AppLanguageChanged = 'app-language-changed', } diff --git a/app/main/ipcMainHandlers.ts b/app/main/ipcMainHandlers.ts index c9204e0..44b4af0 100644 --- a/app/main/ipcMainHandlers.ts +++ b/app/main/ipcMainHandlers.ts @@ -179,4 +179,12 @@ export default function initIpcMainHandlers( ipcMain.handle(IpcEvents.DisconnectAllDevices, () => { getDeskreenGlobal().connectedDevicesService.disconnectAllDevices(); }); + + ipcMain.handle(IpcEvents.AppLanguageChanged, () => { + getDeskreenGlobal().sharingSessionService.sharingSessions.forEach( + (sharingSession) => { + sharingSession?.appLanguageChanged(); + } + ); + }); }