From 1bcd198aaf373c209aaa555fcfeee7f71b6dbe5c Mon Sep 17 00:00:00 2001 From: cha0s Date: Sun, 21 Jan 2024 04:57:51 -0600 Subject: [PATCH] fix(electron): extensions --- packages/electron/build/flecks.bootstrap.js | 4 --- packages/electron/package.json | 2 +- packages/electron/src/server/index.js | 34 ++++++--------------- packages/react/src/server.js | 1 + packages/redux/src/server.js | 9 +++--- 5 files changed, 16 insertions(+), 34 deletions(-) diff --git a/packages/electron/build/flecks.bootstrap.js b/packages/electron/build/flecks.bootstrap.js index 60090cb..522c74f 100644 --- a/packages/electron/build/flecks.bootstrap.js +++ b/packages/electron/build/flecks.bootstrap.js @@ -24,11 +24,7 @@ exports.hooks = { /** * Install devtools extensions (by default). * - * If `true`, will install some devtools extensions based on which flecks are enabled. - * * You can pass an array of Chrome store IDs to install a list of custom extensions. - * - * Extensions will not be installed if `'production' === process.env.NODE_ENV` */ installExtensions: true, /** diff --git a/packages/electron/package.json b/packages/electron/package.json index 9868c61..240bab9 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -21,7 +21,7 @@ ], "dependencies": { "@flecks/core": "^3.0.0", - "electron": "^18.0.1", + "electron": "^28.1.4", "electron-devtools-installer": "^3.2.0" }, "devDependencies": { diff --git a/packages/electron/src/server/index.js b/packages/electron/src/server/index.js index ddcf1cb..b441116 100644 --- a/packages/electron/src/server/index.js +++ b/packages/electron/src/server/index.js @@ -2,10 +2,6 @@ import {Flecks} from '@flecks/core'; const electron = __non_webpack_require__('electron'); -const { - NODE_ENV, -} = process.env; - let win; async function createWindow(flecks) { @@ -39,27 +35,15 @@ export const hooks = { }, '@flecks/electron/server.window': async (win, flecks) => { const {public: $$public} = flecks.get('@flecks/web'); - const { - installExtensions, - url = `http://${$$public}`, - } = flecks.get('@flecks/electron'); - if (installExtensions && 'production' !== NODE_ENV) { - const { - default: installExtension, - REDUX_DEVTOOLS, - REACT_DEVELOPER_TOOLS, - } = __non_webpack_require__('electron-devtools-installer'); - let extensions = installExtensions; - if (!Array.isArray(extensions)) { - extensions = []; - if (flecks.fleck('@flecks/react')) { - extensions.push(REACT_DEVELOPER_TOOLS); - } - if (flecks.fleck('@flecks/redux')) { - extensions.push(REDUX_DEVTOOLS); - } - } - await installExtension(extensions); + const {installExtensions, url = `http://${$$public}`} = flecks.get('@flecks/electron'); + if (installExtensions) { + const installer = __non_webpack_require__('electron-devtools-installer'); + const {default: installExtension} = installer; + await installExtension([ + ...Array.isArray(installExtensions) ? installExtensions : [], + ...flecks.invokeFlat('@flecks/electron/server.extensions', installer) + .flat(), + ]); } await win.loadURL(url); }, diff --git a/packages/react/src/server.js b/packages/react/src/server.js index a91b2f0..4ae08bc 100644 --- a/packages/react/src/server.js +++ b/packages/react/src/server.js @@ -3,6 +3,7 @@ import {Flecks} from '@flecks/core'; import ssr from './ssr'; export const hooks = { + '@flecks/electron/server.extensions': (installer) => [installer.REACT_DEVELOPER_TOOLS], '@flecks/web/server.stream.html': Flecks.priority( (stream, req, flecks) => ( flecks.get('@flecks/react.ssr') ? ssr(stream, req, flecks) : stream diff --git a/packages/redux/src/server.js b/packages/redux/src/server.js index 765c8c1..86b097b 100644 --- a/packages/redux/src/server.js +++ b/packages/redux/src/server.js @@ -9,6 +9,11 @@ const debug = D('@flecks/redux/server'); const debugSilly = debug.extend('silly'); export const hooks = { + '@flecks/electron/server.extensions': (installer) => [installer.REDUX_DEVTOOLS], + '@flecks/react.providers': Flecks.priority( + (req) => [Provider, {store: req.redux}], + {before: '@flecks/react/router/server'}, + ), '@flecks/web/server.request.route': (flecks) => async (req, res, next) => { const slices = await flecks.invokeMergeUnique('@flecks/redux.slices'); const reducer = createReducer(flecks, slices); @@ -30,8 +35,4 @@ export const hooks = { preloadedState: req.redux.getState(), }, }), - '@flecks/react.providers': Flecks.priority( - (req) => [Provider, {store: req.redux}], - {before: '@flecks/react/router/server'}, - ), };