From cf3ec7fc396125ed452c553b34ae2737329fc61d Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Fri, 24 Dec 2021 01:36:20 +0100 Subject: feat: Service to main process communication --- packages/renderer/src/devTools.ts | 13 +++++++++++++ packages/renderer/src/index.tsx | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'packages/renderer') diff --git a/packages/renderer/src/devTools.ts b/packages/renderer/src/devTools.ts index ffd99e6..44c87ae 100644 --- a/packages/renderer/src/devTools.ts +++ b/packages/renderer/src/devTools.ts @@ -55,3 +55,16 @@ export function exposeToReduxDevtools(model: IAnyStateTreeNode): void { console.error('Could not connect to Redux devtools', err); }); } + +/** + * Sends a message to the main process to reload all services when + * `build/watch.js` sends a reload event on bundle write. + */ +export function hotReloadServices(): void { + import.meta.hot?.on( + 'sophie:reload-services', + () => { + window.sophieRenderer.reloadAllServices(); + }, + ); +} diff --git a/packages/renderer/src/index.tsx b/packages/renderer/src/index.tsx index 90cba2c..0919b93 100644 --- a/packages/renderer/src/index.tsx +++ b/packages/renderer/src/index.tsx @@ -29,11 +29,15 @@ import { render } from 'react-dom'; import { App } from './components/App'; import { StoreProvider } from './components/StoreProvider'; import { ThemeProvider } from './components/ThemeProvider'; -import { exposeToReduxDevtools } from './devTools'; +import { exposeToReduxDevtools, hotReloadServices } from './devTools'; import { createAndConnectRootStore } from './stores/RootStore'; const isDevelopment = import.meta.env.MODE === 'development'; +if (isDevelopment) { + hotReloadServices(); +} + const store = createAndConnectRootStore(window.sophieRenderer); if (isDevelopment) { -- cgit v1.2.3-54-g00ecf